Имя: Пароль:
1C
1С v8
программное заполнение доумента Операция
,
0 bagira
 
21.01.12
16:27
Нужно данными из екселя заполнить документ Операция. Т.к. в документе табличной части нет, а выложен отбор из регистра бухгалтерии, то делаю вывод что заполнять надо регистр. Но что-то не клеится, программа отрабатывает, ошибок не дает, я даже для надежности на форме паралельно табличное поле заполняю. Но в документе  и в регистре записи не добавляются. Кто-нибудь подскажите пожалуйста где косяк. Вот код:


Процедура ЧтениеXLSФайла(Элемент)
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Номер");
    ТЗ.Колонки.Добавить("ФИО");
    ТЗ.Колонки.Добавить("Сумма");
    НомерЛиста         = 1;
   //Пытаемся подключиться к Excel
   Попытка
       Excel = новый COMОбъект("Excel.Application");
   Исключение
       Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
       Возврат;
   КонецПопытки;    
   //Подключились удачно, открываем файл
   Excel.Workbooks.Open(ИмяФайла);
   //Открываем необходимый лист
   Excel.Sheets(НомерЛиста).select();  
   //Получим количество строк и колонок.
   //В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
   Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
    Если Версия = "8" тогда
       ФайлСтрок   = Excel.Cells.CurrentRegion.Rows.Count;
       ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
   Иначе
       ФайлСтрок   = Excel.Cells(1,1).SpecialCells(11).Row;
       ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column;  
   Конецесли;
   Сообщить ("Количество строк = "+ФайлСтрок);
   Сообщить("Количество колонок = "+ФайлКолонок);
   НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
   НаборЗаписей.Отбор.Регистратор.Значение = ДокументОперация;
   НаборЗаписей.Прочитать();

   Для а = 1 по ФайлСтрок Цикл  
       строкаТЗ = ТЗ.Добавить();
       строкаТЗ.Номер = Excel.Cells(а, 1).Value;
       строкаТЗ.ФИО = Excel.Cells(а, 2).Value;
       строкаТЗ.Сумма = Excel.Cells(а, 3).Value;
   КонецЦикла;
   Результат = ТЗ.Скопировать();
   ЭлементыФормы.Результат.СоздатьКолонки();
    //Заполним теперь по ТЗ набор записей
Для каждого стр Из ТЗ Цикл
   ФИО = Справочники.ФизическиеЛица.НайтиПоНаименованию(стр.ФИО);
   Проводка = НаборЗаписей.Добавить();
   //Проводка = ДокументОперация.Движения.Добавить();

   Проводка.Регистратор    = ДокументОперация;
   Проводка.Период            = ДокументОперация.Дата;
   Проводка.Организация    = ДокументОперация.Организация;
   //Счета...
   Проводка.СчетДт            = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда;
   Проводка.СчетКт         = ПланыСчетов.Хозрасчетный.Вспомогательный;
   БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт,"РаботникиОрганизации",ФИО);
   
   ПРоводка.Сумма = Excel.Cells(а, 3).Value;
   Проводка.НомерЖурнала    = "";
КонецЦикла;
    НаборЗаписей.Записать(Ложь);
    //Закрываем Excel
    Excel.ActiveWorkbook.Close();  
   
КонецПроцедуры
1 Fragster
 
гуру
21.01.12
16:28
не увидел "наборзаписей.записать()"
2 bagira
 
21.01.12
16:30
Как это ??? перед закрытием екселя стоит
3 bagira
 
21.01.12
16:34
может ограничение какое есть на колиство? у меня там 402 строки. Ну кто-нибудь подскажите...
4 Fragster
 
гуру
21.01.12
16:37
(2) а, в натуре... форматирование кода сломало глаза...
приходит на ум только

НаборЗаписей.Отбор.Регистратор.Использование = Истина;

ну и Сообщить(ТЗ.Количество());
5 bagira
 
21.01.12
16:38
ТЗ заполняется, я ж на форме вижу ее.... щас с использованием попробую....уже всю голову себе сломала
6 golden-pack
 
21.01.12
16:40
Отладчик есть - чтобы голову не ломать
7 Fragster
 
гуру
21.01.12
16:41
если ДокументОперация это ДокументОбъект, а не ДокументСсылка, то
НаборЗаписей = ДокументОперация.Движения.Хозрасчетный;
8 bagira
 
21.01.12
16:43
ДокументОперация, это ссылка.
Нашла я где косяк. Может пригодится кому. Как я и стала подозревать, есть ограничения на количество записей. В файле оставила 20 записей вместо 402., все село как в аптеке. Но все равно всем спасибо...))
9 Fragster
 
гуру
21.01.12
16:46
(8) вообще-то там нет ограничения на количество записе
10 Fragster
 
гуру
21.01.12
16:47
й, по крайней мере, 400 влезает (как и 10000)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.