1c в Xls

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

  1. Leon3

    Leon3 Гость

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

    LSH Гость

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

    jcnby Гость

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

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




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

    Делать рабочую книгу активной:
    Код (Text):
    Exel.WorkBooks(2).Activate();
    Exel.WorkBooks.Item(2).Activate();
    Коллекция (BuiltinDocumentProperties) содержащая все свойства рабочей книги в Ехеле:
    Код (Text):
    Свойство=Exel.WorkBooks.Item(1).BuiltinDocumentProperties;
    Посмотрим свойства:
    Код (Text):
    Для Ы=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 - учреждение




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

    Код (Text):
    Exel.ActiveWorkBook.Save() //- сохраняем
    Exel.ActiveWorkBook.SaveAs("C:/MyExel.xls")  //-сохранить как
    Вносим в ячейку формулу:
    Код (Text):
    Ячейка.Value=" =SUM(B1:B2)"
    Очистим ячейку
    Код (Text):
    Ячейка.ClearContents
    Форматирование.
    (Font, Interior)
    Код (Text):
    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-оранжевый


    адрес ячейки:
    Код (Text):
    .Address
    Прямоугольная область ячеек:
    Код (Text):
    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 Гость

    Про Диаграммы:

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

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

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

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

    jcnby Гость

    :) Диаграмма снимается...есть в 1сДиаграмма
     
  6. Leon3

    Leon3 Гость

    Спасибо помогло
     
  7. jcnby

    jcnby Гость

  8. bremlin

    bremlin Гость

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

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

    Код:

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

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

    kaa Гость

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

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

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

    bremlin Гость

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

    bremlin Гость

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

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

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

    vbs Well-Known Member

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

    bremlin Гость

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

    vbs Well-Known Member

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

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


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

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

    bremlin Гость

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

    NikO Гость

    Всем добрый вечер.

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

    bremlin Гость

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

    vbs Well-Known Member

    Регистрация:
    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 Гость

    Здрасте. Спасибо за пример экспорта в 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
    1C Team

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

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