Всем доброго дня, есть обработка которая выгружает необходимые документы в ексель из Бухгалтерии предприятия ре. 2.0, все но вот уже когда выгрузка подходит к концу, происходит затык на документе реализация товаров и услуг, тесть обраьотка не обнаруживает поле наименование полное в этом документе, все выше выгруженные документы такой ошибки не выдавали хотя полностью идентичны по содержанию, кто знает что это может быть.
По теме из базы знаний
- Писальщик/Читальщик XLS
- Борис Нуралиев ответил на вопросы сообщества “Инфостарт”
- Заполнение недостающих данных в документе Сведения о трудовой деятельности работников СЗВ-ТД
- SynchroWB - Интеграция 1С и Wildberries по API с УТ, КА, ERP, УНФ, Розница 3: расширение для синхронизации и обмена
- Интеграция 1С с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода - для УНФ, УТ, КА, ERP
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
Процедура КнопкаВыполнитьНажатие(Кнопка)
НомерЛиста = 1;
//Пытаемся подключиться к Excel
Попытка
Excel = новый COMОбъект("Excel.Application");
Исключение
Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
Возврат;
КонецПопытки;
//Подключились удачно, открываем файл
Excel.Workbooks.Open("C:\Documents and Settings\Программист-3\Рабочий стол\333.xlsx");
//Открываем необходимый лист
Лист = Excel.Sheets(1);
ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 19);
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ХозрасчетныйДвиженияССубконто.Период КАК Период,
| ХозрасчетныйДвиженияССубконто.Регистратор КАК Регистратор,
| ХозрасчетныйДвиженияССубконто.СчетДт,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1,
| ХозрасчетныйДвиженияССубконто.СубконтоДт2,
| ХозрасчетныйДвиженияССубконто.СубконтоДт3,
| ХозрасчетныйДвиженияССубконто.Сумма,
| ХозрасчетныйДвиженияССубконто.СчетКт,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1,
| ХозрасчетныйДвиженияССубконто.ВидСубконтоКт2,
| ХозрасчетныйДвиженияССубконто.ВидСубконтоКт3,
| ХозрасчетныйДвиженияССубконто.КоличествоДт,
| ХозрасчетныйДвиженияССубконто.КоличествоКт,
| ХозрасчетныйДвиженияССубконто.СуммаНУКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
| &НачалоПериода,
| &КонецПериода,
| СчетДт.Родитель.Код = ""62""
| И СчетКт.Родитель.Код = ""90.01""
| ИЛИ СчетКт.Родитель.Код = ""41"",
| ,
| ) КАК ХозрасчетныйДвиженияССубконто
|ГДЕ
| ХозрасчетныйДвиженияССубконто.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И (ХозрасчетныйДвиженияССубконто.Регистратор ССЫЛКА Документ.СписаниеСРасчетногоСчета
| ИЛИ ХозрасчетныйДвиженияССубконто.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
| ИЛИ ХозрасчетныйДвиженияССубконто.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
| ИЛИ ХозрасчетныйДвиженияССубконто.Регистратор ССЫЛКА Документ.КорректировкаДолга
| ИЛИ ХозрасчетныйДвиженияССубконто.Регистратор ССЫЛКА Документ.ОперацияБух
| ИЛИ ХозрасчетныйДвиженияССубконто.Регистратор ССЫЛКА Документ.КорректировкаРеализации)
|
|УПОРЯДОЧИТЬ ПО
| Период,
| Регистратор");
Запрос.УстановитьПараметр("НачалоПериода",НачалоМесяца('20170430000000'));
Запрос.УстановитьПараметр("КонецПериода",КонецМесяца('20170630000000'));
РезультатЗапроса = Запрос.Выполнить().Выбрать();
a=1;
Пока РезультатЗапроса.Следующий() Цикл
a = a + 1;
Лист.Cells(a,1).NumberFormat = "@";
Лист.Cells(a,1).value = Строка(РезультатЗапроса.Регистратор.УникальныйИдентификатор());
Лист.Cells(a,2).NumberFormat = "@";
Лист.Cells(a,2).value = РезультатЗапроса.Регистратор.Номер;
Лист.Cells(a,3).NumberFormat = "ДД.ММ.ГГГГ";
Лист.Cells(a,3).value = РезультатЗапроса.Регистратор.Дата;
Лист.Cells(a,4).NumberFormat = "@";
Лист.Cells(a,4).value = Строка(РезультатЗапроса.Регистратор);
Лист.Cells(a,5).NumberFormat = "@";
Если (ТипЗнч(РезультатЗапроса.Регистратор) <> Тип("ДокументСсылка.ОтчетОРозничныхПродажах")) Тогда
Вот здесь --------> Лист.Cells(a,5).value = РезультатЗапроса.СубконтоДт1.НаименованиеПолное;
Лист.Cells(a,6).NumberFormat = "@";
Лист.Cells(a,6).value = РезультатЗапроса.СубконтоДт1.ИНН;
Лист.Cells(a,7).NumberFormat = "@";
Лист.Cells(a,7).value = РезультатЗапроса.СубконтоДт1.КПП;
Лист.Cells(a,8).NumberFormat = "@";
Лист.Cells(a,8).value = Строка(РезультатЗапроса.СубконтоДт2.УникальныйИдентификатор());
Лист.Cells(a,9).NumberFormat = "@";
Лист.Cells(a,9).value = РезультатЗапроса.СубконтоДт2.Наименование;
КонецЕсли;
Лист.Cells(a,10).NumberFormat = "0,00";
Лист.Cells(a,10).value = РезультатЗапроса.СуммаНУКт;
Лист.Cells(a,12).NumberFormat = "ДД.ММ.ГГГГ";
Лист.Cells(a,12).value = НачалоМесяца(РезультатЗапроса.Регистратор.Дата);
Лист.Cells(a,13).NumberFormat = "@";
Лист.Cells(a,13).value = РезультатЗапроса.СчетКт.Код;
Лист.Cells(a,14).NumberFormat = "@";
Лист.Cells(a,14).value = РезультатЗапроса.СчетДт.Код;
КонецЦикла;
Excel.Save();
Excel.quit();
КонецПроцедуры
Показать
(5) РезультатЗапроса.СубконтоДт1.НаименованиеПолное - это обращение к субконто, которое скорее всего есть справочник, это не документ. Посмотри в отладке какое значение принимает РезультатЗапроса.СубконтоДт1, возможно там пусто, вот и ошибка. Тогда надо скорректировать запрос.
В любом случае СубконтоДт1.НаименованиеПолное лучше получить непосредственно в запросе:
| ХозрасчетныйДвиженияССубконто.СубконтоДт1,
| ЕстьNull(ХозрасчетныйДвиженияССубконто.СубконтоДт1.НаименованиеПолное,"""") КАК СубконтоДт1_НаименованиеПолное,
Меня немного смущает условие
Здесь написано: все проводки вида 62 -> 90.01 или любой_счет -> 41 , верно?
В условиях "И" приоритетнее "ИЛИ", как умножение перед сложением. Или надо оборачивать условия в скобки.
| СчетДт.Родитель.Код = ""62""
| И СчетКт.Родитель.Код = ""90.01""
| ИЛИ СчетКт.Родитель.Код = ""41"",
Здесь написано: все проводки вида 62 -> 90.01 или любой_счет -> 41 , верно?
В условиях "И" приоритетнее "ИЛИ", как умножение перед сложением. Или надо оборачивать условия в скобки.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот