1c в Xls

Тема в разделе "1C и всё что с ней связано", создана пользователем Leon3, 12 мар 2008.

  1. Leon3

    Leon3 Гость

    Репутация:
    0
    Помогите пожалуйста! Как сделать програмно Запись в нужную ячейку документа xls?( Запись Любую)
     
  2. LSH

    LSH Гость

    Репутация:
    0
    Вот простой пример циклического заполнения строк:
    ЭКС=СоздатьОбъект("Excel.Application");
    ЭКС.Workbooks.Add(); //Добавим новую книгу
    ЭКС.Visible=1; //Ыксель видимым. Можно не делать, тогда будет висеть процесс в памяти.
    Стр=1; //первая строка
    Для а = 1 По Что_то_там Цикл
    ЭКС.Cells(Стр,1).Value="Какой-нибудь текст или число"; //записали значение в 1 строку 1 столбец
    ЭКС.Cells(Стр,2).Value="Еще какая-нибудь фигня"; //записали значение в 1 строку 2 столбец
    //...и т.д.
    Стр=Стр+1;//переходим на следующую строку
    КонецЦикла;
     
  3. jcnby

    jcnby Гость

    Репутация:
    0
    Ну открыть приложение всегда нада, конечно правильней ето делать через попытку (вообще все приложения нужно открывать через попытку)
    Код:
    Попытка
    Excel=СоздатьОбъект("Excel.Application");
    исключение 
    Сообщить("не удалось соедениться с Ехель");
    Возврат;
    КонецПопытки;
    Такс - получаем значение из нужной ячейки:
    Код:
    Значение=Excel.WorkBooks(1).WorkSheets("Лист3").Cells(номерстроки,номерколонки).Value;
    - в данном случае - первая открытая книга. WorkBooks(1)
    - Лист "Лист3" - название нужного листка
    -НомерСтроки, НомерКолонки - числа местоположения ячейки в Ехэле.

    Незабыть перед этим:
    Либо создать Новый Либо открыть.
    открыли:
    Код:
    Excel.WorkBooks.Open(ИмяФайла);
    создали:
    Код:
    Excel.Application.WorkBooks.add(1);
    и обязательно в конце:
    Код:
    Excel.WorkBooks(1).Close(ИмяФайла);
    Excel.Quit();
    Нащет Видимости - решайте сами- можно открывать - можно не открывать)
    Код:
     Excel.Visible=1; либо просто не писать;
    Внесли значение в ячейку:
    Код:
    Excel.ActiveSheet.Cells(НомерСтрок,НомерКолонки).Value=СокрЛп("Наименование");
    Excel.ActiveSheet.Cells(НомерСтрок,НомерКолонки).Value=СокрЛп("Сумма");
    если интерестно - выложу и по оформлению ячеек ( высота, ширина, шрыфт, цвет и т.д.)




    вылаживаю - может кому понадобиться:

    Делать рабочую книгу активной:
    Код:
    Exel.WorkBooks(2).Activate();
    Exel.WorkBooks.Item(2).Activate();
    Коллекция (BuiltinDocumentProperties) содержащая все свойства рабочей книги в Ехеле:
    Код:
    Свойство=Exel.WorkBooks.Item(1).BuiltinDocumentProperties;
    Посмотрим свойства:
    Код:
    Для Ы=1 по Свойство.Count Цикл
    Попытка
    Сообщить(Свойство.Item(Ы).Name +"="+ Свойство.Item(Ы).Value);
    Исключение
    КонецПопытки;
    КонецЦикла;
    где Count -количество наших свойств, ну Name=Имя, Value=Значение.

    что можем получить?? получаем:

    Title - название
    Subject - тема
    Author - автор
    Keywords - ключевые слова
    Comments - комментарий
    Template - используемый шаблон
    Last author - последний автор
    Revision number - редакция док-а
    Applicftion name - имя приложения, в каторой открыт файл
    Last print date - последняя дата печати
    Creation date - дата создания
    Last save time - последняя дата сохранения
    Manager - руководитель (гггг - жестикулировщиГГГ)
    Company - учреждение




    Сохраняем документ:

    Код:
    Exel.ActiveWorkBook.Save() //- сохраняем 
    Exel.ActiveWorkBook.SaveAs("C:/MyExel.xls")  //-сохранить как
    Вносим в ячейку формулу:
    Код:
    Ячейка.Value=" =SUM(B1:B2)"
    Очистим ячейку
    Код:
    Ячейка.ClearContents
    Форматирование.
    (Font, Interior)
    Код:
    Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Interior.ColorIndex=1;	//1= белый фон
    Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Font.ColorIndex=2;  //2= черный цвет шрифта
    Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Font.Name= "Courier";  // указывает какой шрифт
    Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Font.Size=12;	 //размер шрифта
    Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Font.Bold=1; либо (0); //т.е. истина либо лож - ?(обычный, жирный)
    Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).InsertIndent(2); //устанавливаем отступ (в данном случае на 2 символа)
    Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).ColumnWidth= 10;  // ширина колонки
    Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Borders(5).LineStyle = -4142;  //очищаем все границы
    Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Borders(7).LineStyle=1;  //длбавили левую границу (7 - левая, 8 - верхняя, Exel.WorkBooks(1).WorkSheets(1).Cells(1,1)9 - нижняя, 10 - правая ))
    Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).VerticalAlignment = -4160; //выравнивание по левому краю
    Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).WrapText=1 (истина)  //устанавливаем перенос слов
    Всего 56 цветов:
    1- белый
    2-черный
    3-красный
    5-синий
    6-желтый
    7-лиловый
    10-зеленый
    33-голубой
    39-сиреневый
    46-оранжевый


    адрес ячейки:
    Код:
    .Address
    Прямоугольная область ячеек:
    Код:
    Exel.WorkBooks(1).WorkSheets(2).Range("a1:b2");
    Exel.WorkBooks(1).WorkSheets(2).Range("a1:b2").Copy();
    Exel.WorkBooks(1).WorkSheets(2).Range("a11:b12").Select();
    Exel.WorkBooks(1).WorkSheets(2).Paste();
    Надеюсь копи-паст вам понятен. Select - выделяет диапазон - куда копируются данные
    Важно: с помощью Range выделять и редактировать необходимый блоки!


    Если найду что-небудь еще- выложу.
     
  4. jcnby

    jcnby Гость

    Репутация:
    0
    Про Диаграммы:

    Два варианта: 1-й если Диаграмма будет распологаться непосредственно на листе с данными, 2-й на отдельном листе.

    Если Диаграмма распологается на листе с данными:
    в скобках параметры определения левого верхнего угла и размеры.
    Код:
    Chart = Excel.WorkBooks(1).WorkSheets(2).ChartObjects.Add(,,,);
    Если все же на отдельном листе, то добавим Sheets наш элемент: *(СОДЕРЖИТ ЛИСТЫ ВСЕХ ТИПОВ)*

    Код:
    Excel.WorkBooks(1).Sheets.Add(,,1,-4109);
    где:Add(ПЕРВЫЙ,ВТОРОЙ,1,-4109);
    ПЕРВЫЙ- номер листа, перед которым будет НАШ лист;
    ВТОРОЙ-номер листа, после которого будет НАШ лист;
    1- количество создоваемых листов;
    -4109 - рабочий лист ( -4109 = с диаграммой, -4167 = лист с данными)

    продолжение следует...
     
  5. jcnby

    jcnby Гость

    Репутация:
    0
    :) Диаграмма снимается...есть в 1сДиаграмма
     
  6. Leon3

    Leon3 Гость

    Репутация:
    0
    Спасибо помогло
     
  7. jcnby

    jcnby Гость

    Репутация:
    0
  8. bremlin

    bremlin Гость

    Репутация:
    0
    Здравствуйте.
    Помогите, пожалуйста, решить проблему с экспортом данных из таблицы документа в текстовый файл. В общем надо определенные столбцы, записать в тектовик в определенном порядке. Написал небольшой код, проблема в том, что в текстовике выходит мой текст:
    "КоличествоЦена
    КоличествоЦена"
    Если убрать кавычки, то Количество и Сумма суммируются, а еще нужно добавить ";" между ними, но при "Количество +";"+Цена", 1С все равно суммирует и плевать он хотел на ";" :(

    P.S. Извините конечно что немного не в ту тему написал, но при создании новой темы из IE вылетает почему-то.

    Код:

    Процедура Запись()
    Т = СоздатьОбъект("Текст");
    Т.Открыть("c:\install\text.txt");
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Т.ДобавитьСтроку("Количество" + "Цена");
    Предупреждение("Строка Добавлена");
    Т.Записать("c:\install\text.txt");
    КонецЦикла;
    Т.Записать("c:\install\text.txt");
    КонецПроцедуры //Запись

    Вообще нужно будет добавить в ЗиК кнопочку, чтоб автоматом кидалось в текстовик данные для перечисления зп через банк:
    Номер Карты;Сумма;ФИО
    Номер Карты;Сумма;ФИО
    и т.д.
     
  9. kaa

    kaa Гость

    Репутация:
    0
    Процедура Запись()
    Т = СоздатьОбъект("Текст");
    Т.Открыть("c:\install\text.txt");
    Строк = "Количество;Цена"
    Т.ДобавитьСтроку(Строк);
    //предполоджим из документа
    ВыбратьСтроки();
    Пока ПОлучитьСтроку()=1 Цикл
    Строк = Строка(Количество)+";"+Строка(Цена);
    Т.ДобавитьСтроку(Строк);
    КонецЦикла;

    Т.Записать("c:\install\text.txt");
    КонецПроцедуры //Запись

    Где-то так
     
  10. bremlin

    bremlin Гость

    Репутация:
    0
    kaa
    Большое и лохматое тебе Спасибо :( Выручил!
     
  11. bremlin

    bremlin Гость

    Репутация:
    0
    Еще небольшая кучка вопросиков.

    Скажем, если я хочу чтоб имя файла было динамичным, и в него записывались дата и еще что-нибудь. Можете привести пример как в этом случае связать переменную с именем файла?
    "ИНН(переменная)_Всякиеразныепеременные_Дата.txt"

    Заранее спасибо!
     
  12. vbs

    vbs Well-Known Member

    Репутация:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Например, так :
    ФайлЭкспорта = "C:\ИмяКаталога"+"\"+String(РабочаяДата())+".txt";
    Т = СоздатьОбъект("Текст");
    Т.Открыть(ФайлЭкспорта);
     
  13. bremlin

    bremlin Гость

    Репутация:
    0
    "Не лает, не кусает - значит сдохла" Не ругается, но ничего и не сохраняет.
     
  14. vbs

    vbs Well-Known Member

    Репутация:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Кавычки-то для драматического эффекта добавил ?

    Т.Открыть("ФайлЭкспорта");
    ...
    Т.Записать("ФайлЭкспорта");


    можно было и оставить

    T.Открыть(ФайлЭкспорта);
    ФайлЭкспорта - это переменная, а "ФайлЭкспорта" - текстовая строка
     
  15. bremlin

    bremlin Гость

    Репутация:
    0
    Спасибо большое:) За просвещение по поводу переменных!
    С кавычками красивше и выделяется)
     
  16. NikO

    NikO Гость

    Репутация:
    0
    Всем добрый вечер.

    Данная строчка кода работает превосходно. Объект-диаграмма
    добавляется на страницу. А как же дальше быть?
    Как указать тип диаграммы, источник данных для диаграммы?
    Перепробовал кучу вариантов.
    Помогите кто знает как решить этот вопрос.
    Всем спасибо.
     
  17. bremlin

    bremlin Гость

    Репутация:
    0
    Здравствуйте. Вопрос про экспорт из 1С в Excel. Подскажите пожалуйста, как возможно реализовать экспорт данных из таблицы сформированной 1С(или наверное проще из справочников тащить инфу) в документ Excel. При чем экспортировать нужно только заданный интервал строк(на практике это номера квартир), и только нужные столбцы.
    В общем-то у меня проблемы в основном только с записью строки в Excel, перевода на другую строку, ячейку и прочее.
    Поможите чем можите, пажалста.
     
  18. vbs

    vbs Well-Known Member

    Репутация:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Примерно так можно записать в нужную колонку определенного листа существующего файла какие-то данные

    ExcelApp = CreateObject("Excel.Application");
    WorkBooks = ExcelApp.WorkBooks;
    WorkBook = WorkBooks.Open(FileName); //FileName - имя файла Excel
    //NL - название листа
    WorkBook.Sheets(TrimAll(NL)).Activate();
    Лист = WorkBook.WorkSheets(TrimAll(NL));
    //First - начальный элемент цикла, Last - конечный
    for k = First to Last do
    YCell = ExcelApp.Cells(k,НомерКолонкиExcel);
    YCell.Value = Данные; //Данные - то, что нужно записать
    enddo;
    ExcelApp.ActiveWorkbook.Close();
    ExcelApp.Quit()
     
  19. bremlin

    bremlin Гость

    Репутация:
    0
    Здрасте. Спасибо за пример экспорта в Excel. Появились некоторое пробелемы с вытаскиванием значений.

    В общем. Нужно вытащить из 1С данные по оплате домофона. Существует специальный отчет, при его формировании выдает:
    №кв | блаблабла | блаблабла | оплачено | конечный остаток

    И в общем-то вытаскиваю как, захожу в конфигуратор этой формы, смотрю какое значение выдается в этой ячейке и пишу его в код выгрузки, что-то вроде:
    Процедура Excel()
    ЖКХ=СоздатьОбъект("Справочник.ЖКХ");
    ЖКХ.ИспользоватьРодителя(ВыбСубконто3);
    ЖКХ.ПорядокКодов();
    ЖКХ.ВыбратьЭлементы();
    -=-=-=-=-=-=-открытие екселя-=-=-=-=-=-=-
    Пока ЖКХ.ПолучитьЭлемент()=1 Цикл
    Ка=Ка+1;
    YCell = ExcelApp.Cells(Ка,1);
    YCell.Value = "Квартира №" + ЖКХ.Наименование;

    Тут все здорово, вытаскивает как надо.
    А вот теперь надо вытащить оплачнную сумму...в таблице она описана как выражение Ит.КорКО()#Ч014.2., вот так, 1 в 1.
    Также надо прописывать Ит = СоздатьОбъект("БухгалтерскиеИтоги"); и прочее, но 1С в упор не понимает такую переменную с # в середине.
    С конечной суммой дело обстоит не лучше...ПечСКД#Ч014.2.,
    Кто может подсказать как это дело решить?
     
  20. puh14

    puh14 Well-Known Member

    Репутация:
    0
    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    формат(Ит.КорКО(),"Ч014.2., ")
     
Загрузка...

Поделиться этой страницей