Имя: Пароль:
1C
1С v8
v8: Excel и 1с 8.2. Расскажите в общем.
0 Balabass
 
13.01.12
04:01
Озадачило руководство следующим вопросом:
Есть сотни листов Excel в десятках документов.
Руками туда отдел заносит данные из 1с.
Сам Excel представляет из себя внутри кучу табличек разлинованных с различными показателями.
Меня интересует сам механизм - как можно выгружать нужные данные из 1с в Excel.
т.е. Открыть Excel программно, и для каждой ячеки а Excel грузить нужные данные? Или можно как то иначе?
Просто программировать 1000 ячеек как то не айс.
Быть может есть другой способ?
Или как это вообще делается?
1 Азат
 
13.01.12
04:11
а поиск программно открыть и поискать работу с Эксель не пробовалось?
2 Balabass
 
13.01.12
04:15
(1)Работа с Эксель - это одно. А меня интересует вообще сам алгоритм работы. Как выгружать данные? По 1 ячейке, или можно как то по шаблону выгрузить.
3 Koala
 
13.01.12
04:53
(0)"Просто программировать 1000 ячеек как-то не айс" - Автор, открой для себя цикл. Или ты что-то другое имеешь ввиду?
4 Мятежник
 
13.01.12
07:36
я делал так:
Попытка
       Excel      = Новый COMОбъект("Excel.Application");
       WB         = Excel.Workbooks.Open(Объект.ИмяФайла);
       WS         = WB.Worksheets(1); //указываем номер листа - 1
       arr     = WS.UsedRange.Value;  //передаём таблицу в переменную
       WB.Close(0);
   Исключение
       Сообщить("Внимание! Файл не открыт."+Символы.ПС+"Попробуйте открыть и пересохранить данный файл программой Эксель.");
       WB.Close(0);
       Возврат;
   КонецПопытки;
   //Узнаём данные выходные данные об листе ексель    
   МассивКолонок = arr.Выгрузить();
   
   //Узнаём данные выходные данные об листе ексель    
   всегоКолонок = МассивКолонок.ВГраница();
   всегоСтрок   = (МассивКолонок.Получить(0).Количество())-1;
   
   Номер = 0;
   Для Строка = 0 По всегоСтрок Цикл

   // Обработка нажатия Ctrl + Break
    ОбработкаПрерыванияПользователя();
   // Добавить данные в табличную часть экранной формы
   
   Стр = ТаблицаЗначений.Добавить();
   Добавление = Ложь;
   Попытка
       Если МассивКолонок.Получить(1).Получить(строка) <> Неопределено Тогда
                       Стр.Колонка1 =  Формат(МассивКолонок.Получить(0).Получить(строка), "ЧГ=");
           Стр.Колонка2 = МассивКолонок.Получить(1).Получить(строка);
             Добавление = Истина;
             Номер = Номер + 1;
                     Стр.Номер = Номер;
       КонецЕсли;
   Исключение
     // Не редко происходит ошибка конвертации отдельной ячейки документа
     Сообщить("Ошибка чтения строки файла Microsoft Excel." + Строка + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
   КонецПопытки;
Если Добавление = Ложь Тогда
           ТЗОС.Удалить(СтрОС);
           Номер = Номер - 1;
       КонецЕсли;
   КонецЦикла;
5 Мятежник
 
13.01.12
07:37
не отредактировал абзац
Если Добавление = Ложь Тогда
           ТЗОС.Удалить(СтрОС);
           Номер = Номер - 1;
       КонецЕсли;
   КонецЦикла;
Нужно так

Если Добавление = Ложь Тогда
           ТаблицаЗначений.Удалить(Стр);
           Номер = Номер - 1;
       КонецЕсли;
   КонецЦикла;
6 Мятежник
 
13.01.12
07:39
(5)код под себя делал, пытался удалить строки где есть пустая ячейка во втором столбце.
7 Armando
 
13.01.12
07:40
СЗОТ
Что мешает функционал из excel реализовать в 1С? Тем более что "Руками туда отдел заносит данные из 1с."
8 Balabass
 
13.01.12
08:05
(7) Нет времени все переносить. Там несколько десятков книг, в каждой несколько десятков страниц. Графики, отчеты, формулы, макросы...
9 БибиГон
 
13.01.12
08:06
(7) +100500
10 БибиГон
 
13.01.12
08:07
(8) а вручную заполнять надоело?
11 Balabass
 
13.01.12
08:18
Ну ты представь, что отдел вместо того, чтобы работать свою работу, сидет и 5 дней в месяце заполняет экселевские листики...
12 badboychik
 
13.01.12
08:35
а в чем необычность задачи то? только в количестве листов и ячеек?
13 dk
 
13.01.12
08:37
несколько вариантов
1. Формировать в 1с (MXL), потом сохранять в Excel (XLS) и допиливать (формулы, и прочее)
2. Сразу формировать в Excel
 2.1 с использованием шаблона
 2.2 без использования шаблона
3. Игры с буфером обмена - формировать в 1с потом через буфер перетаскивать в Excel
4. ...
----
может еще варианты есть
выбор зависит от
- навыков прога
- сложности итогового документы (связи, формулы, диаграммы, статичное количество строк / колонок или динамичное, ... )
- количества отличий формы данных в 1с и в Excel
- ...
14 Balabass
 
13.01.12
08:42
А про Использование шаблона. Это как?
15 Balabass
 
13.01.12
08:42
(12) Да
16 dk
 
13.01.12
08:46
(14) шаблон - это обычный файл ехеля - рисуешь там названия колонок, оформляешь, формулы прописываешь, а потом из 1с только цифры в нужные ячейки записываешь
отлично подходит для сложного оформления и более менее статичных данных
17 Мимохожий Однако
 
13.01.12
08:46
Количество листов и файлов не имеет значения, если формат хранения информации одинаков или поддается логическому описанию. На одном файле запрограммировал - остальные на автомате.
18 dk
 
13.01.12
08:49
(14) ты бы хоть скрины итоговых файлов кинул для примера
19 Мимохожий Однако
 
13.01.12
08:52
(18) ему надо "в общем")))
20 badboychik
 
13.01.12
08:58
(15) так какая разница 100 ячеек или 10000 в цикле? Дело только во времени.
Или там много правил по которым данные тасовать по ячейкам? Если файлы-шаблоны уже есть в экселе, пишешь выгрузки для каждого, потом само все делается.

"Работа с Эксель - это одно. А меня интересует вообще сам алгоритм работы"
А алгоритм работы с экселем это не тот алгоритм чтоле?
21 ptiz
 
13.01.12
08:58
"Как-то иначе" это так:
из 1С данные выгружаются в один файл "Данные 1С.xls".
Юзеры в своих листах ставят не цифры, а ссылки на ячейки этого файла. Это делается 1 раз, а потом только обновлять данные.
22 Balabass
 
13.01.12
09:03
(12)Хорошая Идея
23 Balabass
 
13.01.12
09:04
(22) (12)->(21)
24 Мимохожий Однако
 
13.01.12
09:13
Достаточно сделать отчеты  в 1С и сохранить в формате Excel. В Excel можно создать макросы обработки для других таблиц. ИМХО, вариаций великое множество. Однако общими рекомендациями не обойтись. Нужен анализ структуры данных конкретных рабочих участков... А записать в нужную ячейку понятную информацию из 1С проблем нет.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс