![]() |
![]() |
![]() |
|
прочитать эксель в цикле | ☑ | ||
---|---|---|---|---|
0
1с_lvl_памперс
15.05.20
✎
11:05
|
Гружу из экселя в БП док ОперацияБух. и все хорошо грузится но создается кол-во документов по количеству строк в файле. Головой понимаю, что надо обойти записи файла в цикле.. прикрутил цикл но рез-т один и тот же: либо кол док-в = кол строк в файле, либо 1 док с последней записью экселя. памагити. Код ниже.
|
|||
1
1с_lvl_памперс
15.05.20
✎
11:05
|
ПутьКФайлу = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВХранилище); ДвоичныеДанные.Записать(ПутьКФайлу); Выбфайл = Новый Файл(ПутьКФайлу); Если Не ВыбФайл.Существует() Тогда Сообщить("Файл не существует: " + ПутьКФайлу); Возврат; КонецЕсли; м = Новый Массив; Попытка ExcelПриложение = Новый COMОбъект("Excel.Application"); Исключение Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат; КонецПопытки; Файл = ПутьКФайлу; Попытка ExcelФайл = ExcelПриложение.WorkBooks.Open(Файл); Исключение Сообщить("Ошибка при открытии/чтении файла " + Файл + "." + Символы.ПС + ОписаниеОшибки() + Символы.ПС + "Возможно не верно указано имя листа.", СтатусСообщения.Внимание); КонецПопытки; СпрНом = Справочники.Номенклатура; ExcelЛист = ExcelФайл.Sheets(1); НомСтроки1 = 1; КолСтрок = ExcelЛист.Cells(1, 1).SpecialCells(11).Row; Стр = 2; Опер = Документы.ОперацияБух.СоздатьДокумент(); Опер.Дата = КонецДня(ТекущаяДата()); Опер.Организация = Справочники.Организации.НайтиПоКоду("БП-000001"); Опер.Содержание = "Пример программного создания документа 'ОперацияБух'"; Опер.Движения.Хозрасчетный.Записывать = Истина; Для Сч = 2 По КолСтрок цикл НовПроводка = Опер.Движения.Хозрасчетный.Добавить(); НовПроводка.Активность = Истина; НовПроводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01"); НашлиНоменклатуру = СпрНом.НайтиПоНаименованию(СокрЛП(ExcelЛист.Cells(Стр,6 ).Value)); Если (НашлиНоменклатуру = Неопределено) или (СокрЛП(НашлиНоменклатуру) = "") Тогда Сообщить("Номенклатура с кодом " + СокрЛП(ExcelЛист.Cells(Стр,6 ).Value) +" наименование " + СокрЛП(ExcelЛист.Cells(Стр,6 ).Value) + " не найдена"); КонецЕсли; НовПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = Справочники.Номенклатура.НайтиПоНаименованию(НашлиНоменклатуру); НовПроводка.ПодразделениеДт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("БП-000001"); НовПроводка.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("000"); Сумма = ExcelЛист.Cells(Стр,11 ).Value * ExcelЛист.Cells(Стр,10 ).Value; НовПроводка.Сумма = Сумма; //НовПроводка.КоличествоКт = ExcelЛист.Cells(Стр,11 ).Value; НовПроводка.КоличествоДт = ExcelЛист.Cells(Стр,11 ).Value; НовПроводка.СуммаНУДт = Сумма; //НовПроводка.СуммаНУКт = Сумма; //НовПроводка.Содержание = "Пересортица " + НашлиНоменклатуру; Опер.СуммаОперации = Опер.СуммаОперации + Сумма; Опер.Записать(РежимЗаписиДокумента.Запись); Сообщить(Опер); Стр = Стр + 1; //КонецЦикла; КонецЦикла; //Сообщить("Создана "+Содерж); |
|||
2
Ray Zexter
15.05.20
✎
11:07
|
Опер = Документы.ОперацияБух.СоздатьДокумент(); и Опер.Записать(РежимЗаписиДокумента.Запись); - выкинь из цикла
|
|||
3
1с_lvl_памперс
15.05.20
✎
11:07
|
(2) пробую..
|
|||
4
1с_lvl_памперс
15.05.20
✎
11:10
|
Спасибо, все получилось!
|
|||
5
1с_lvl_памперс
15.05.20
✎
11:19
|
как закрыть тему?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |