Не загружает данные в отчете (либо падает с ошибкой)
1С:Управление производственным предприятием
Платформа 1С v8.3
Автомобили, автосервисы
Windows
Россия
Программист
Внешний отчет (ert,erf)
Добрый день, прошу помощи знающих людей. Есть внешний отчет в УПП "Отчет по заказанным ЗЧ", требуется к полученным данным в этом отчете, присоединить данные из другой самописной базы. (А именно подтянуть количество документов, в которых фигурирует определенный артикул и количество в штуках в этих документах).
Вложил 2 файла, в одном из них, при формировании отчета, выскакивает ошибка (скрин приложил), во втором случае от ошибки избавились, предварительно передавая в качестве внешних данных пустую таблицу, но в таком случае, по итогу, формируется пустой отчет (скрин приложил).
Таблицу с данными из другой базы получаю, это отрабатывает, проверено.
Подскажите, пожалуйста, что не так делаю?
Код отчета, в котором выскакивает ошибка:
Вложил 2 файла, в одном из них, при формировании отчета, выскакивает ошибка (скрин приложил), во втором случае от ошибки избавились, предварительно передавая в качестве внешних данных пустую таблицу, но в таком случае, по итогу, формируется пустой отчет (скрин приложил).
Таблицу с данными из другой базы получаю, это отрабатывает, проверено.
Подскажите, пожалуйста, что не так делаю?
Код отчета, в котором выскакивает ошибка:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки(); // копия настроек из компоновки данных
СхемаКомпоновкиДанных = ПолучитьМакет("Макет"); // получение макета компоновки данных
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //объект для создания макета компоновки данных
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); // компоновка макета
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; //Объект, выполняющий компоновку данных
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
#Область ПодготовкаДанныхДляОтправкиВЗЧ
// получение таблицы отчета
Результат = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
// создание и заполнение массива артикуламии вставка в структуру для отправки в базу ЗЧ
МассивАртикулов = Новый Массив;
Для Каждого Строка Из Результат Цикл
МассивАртикулов.Добавить(Строка.Артикул);
КонецЦикла;
СтруктураАртикулов = Новый Структура;
СтруктураАртикулов.Вставить("Артикулы", МассивАртикулов);
СтруктураДляПередачи = ЗначениеВСтрокуВнутр(МассивАртикулов);
// получение даты начала и конца и помещение в структуру для отправки в базу ЗЧ
ПараметрыДанных = Настройки.ПараметрыДанных.Элементы; //Получение параметров из настройки
ДатаНачала = Дата(ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных("НачалоПериода")).Значение); //получаем дату начала
ДатаОкончания = Дата(ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных("КонецПериода")).Значение); // получаем дату конечную
СтруктураДат = Новый Структура;
СтруктураДат.Вставить("ДатаНачала", ДатаНачала);
СтруктураДат.Вставить("ДатаОкончания", ДатаОкончания);
СтруктураДляПередачиДат = ЗначениеВСтрокуВнутр(СтруктураДат);
#КонецОбласти
Если ЗначениеЗаполнено(ДатаНачала) и ЗначениеЗаполнено(ДатаОкончания) Тогда
#Область ПолучениеТаблицыИзЗЧ
Прокси = TR_РегламентныеЗадания.ПолучитьПрокси(Справочники.НастройкиИнтеграции.НайтиПоНаименованию("Веб сервис (soap) ЗЧprice"));
СтрокаТаб = Прокси.ZaprosPartNumber(СтруктураДляПередачиДат, СтруктураДляПередачи);
Если СтрокаТаб <> Неопределено Тогда
ТЗ_Запросов = ЗначениеИзСтрокиВнутр(СтрокаТаб); // получаем ТЗ из удаленной базы
КонецЕсли;
#КонецОбласти
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаем данные расшифровки
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // Создаем компоновщик макета
// Инициализируем макет компоновки используя схему компоновки данных
// и созданные ранее настройки и данные расшифровки
//СхемаКомпоновкиДанных = ПолучитьМакет("Макет");
ВнешнийНаборДанных = Новый Структура;
ВнешнийНаборДанных.Вставить("Запросы", ТЗ_Запросов);
ПараметрыСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных;
ПараметрыСКД.УстановитьЗначениеПараметра("ТаблицаЗапросов", ТЗ_Запросов);
//МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
//ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
//ПараметрыДанных.УстановитьЗначениеПараметра("Таблица", ТЗ_Запросов);
КонецЕсли;
КонецПроцедуры
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ///////
Код отчета, в котором отчет выгружается пустым:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки(); // копия настроек из компоновки данных
//СхемаКомпоновкиДанных = ПолучитьМакет("Макет"); // получение макета компоновки данных
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //объект для создания макета компоновки данных
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); // компоновка макета
ТЗ_Запросов = Новый ТаблицаЗначений;
ТЗ_Запросов.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка"));
ТЗ_Запросов.Колонки.Добавить("КоличествоЗапросов", Новый ОписаниеТипов("Число"));
ТЗ_Запросов.Колонки.Добавить("КоличествоВЗапросах", Новый ОписаниеТипов("Число"));
ВнешнийНаборДанных = Новый Структура;
ВнешнийНаборДанных.Вставить("ЗапросыИзЗЧ", ТЗ_Запросов);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; //Объект, выполняющий компоновку данных
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных); //инициализация компоновщика
#Область ПодготовкаДанныхДляОтправкиВЗЧ
// получение таблицы отчета
Результат = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
// создание и заполнение массива артикуламии вставка в структуру для отправки в базу ЗЧ
МассивАртикулов = Новый Массив;
Для Каждого Строка Из Результат Цикл
МассивАртикулов.Добавить(Строка.Артикул);
КонецЦикла;
СтруктураАртикулов = Новый Структура;
СтруктураАртикулов.Вставить("Артикулы", МассивАртикулов);
СтруктураДляПередачи = ЗначениеВСтрокуВнутр(МассивАртикулов);
// получение даты начала и конца и помещение в структуру для отправки в базу ЗЧ
ПараметрыДанных = Настройки.ПараметрыДанных.Элементы; //Получение параметров из настройки
ДатаНачала = Дата(ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных("НачалоПериода")).Значение); //получаем дату начала
ДатаОкончания = Дата(ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных("КонецПериода")).Значение); // получаем дату конечную
СтруктураДат = Новый Структура;
СтруктураДат.Вставить("ДатаНачала", ДатаНачала);
СтруктураДат.Вставить("ДатаОкончания", ДатаОкончания);
СтруктураДляПередачиДат = ЗначениеВСтрокуВнутр(СтруктураДат);
#КонецОбласти
Если ЗначениеЗаполнено(ДатаНачала) и ЗначениеЗаполнено(ДатаОкончания) Тогда
#Область ПолучениеТаблицыИзЗЧ
Прокси = TR_РегламентныеЗадания.ПолучитьПрокси(Справочники.НастройкиИнтеграции.НайтиПоНаименованию("Веб сервис (soap) ЗЧprice"));
СтрокаТаб = Прокси.ZaprosPartNumber(СтруктураДляПередачиДат, СтруктураДляПередачи);
Если СтрокаТаб <> Неопределено Тогда
ТЗ_Запросов = ЗначениеИзСтрокиВнутр(СтрокаТаб); // получаем ТЗ из удаленной базы
КонецЕсли;
#КонецОбласти
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаем данные расшифровки
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // Создаем компоновщик макета
// Инициализируем макет компоновки используя схему компоновки данных
// и созданные ранее настройки и данные расшифровки
//СхемаКомпоновкиДанных = ПолучитьМакет("Макет");
//ВнешнийНаборДанных = Новый Структура;
ВнешнийНаборДанных.Очистить();
ВнешнийНаборДанных.Вставить("ЗапросыИзЗЧ", ТЗ_Запросов);
//МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
//ПараметрыДанных.УстановитьЗначениеПараметра("Таблица", ТЗ_Запросов);
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
Отчет по заказанным ЗЧ пустой отчет.erf
Отчет по заказанным ЗЧ с ошибкой.erf



По теме из базы знаний
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- ВИДы на жительство. Использование внешних источников данных в прикладных задачах
- Результаты ревью кода 1500+ решений каталога Инфостарт: наиболее частые ошибки разработчиков в коде
- Database Compression Tool: Инструмент для свертки и сжатия баз данных 1С
- Технологии и преимущества разработки решений на общем коде. Как разрабатывается 1С:РМК, 1C:Розница и 1С:УНФ
Найденные решения
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки(); // копия настроек из компоновки данных
//СхемаКомпоновкиДанных = ПолучитьМакет("Макет"); // получение макета компоновки данных
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //объект для создания макета компоновки данных
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); // компоновка макета
ТЗ_Запросов = Новый ТаблицаЗначений;
ТЗ_Запросов.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка"));
ТЗ_Запросов.Колонки.Добавить("КоличествоЗапросов", Новый ОписаниеТипов("Число"));
ТЗ_Запросов.Колонки.Добавить("КоличествоВЗапросах", Новый ОписаниеТипов("Число"));
ВнешнийНаборДанных = Новый Структура;
ВнешнийНаборДанных.Вставить("ЗапросыИзЗЧ", ТЗ_Запросов);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; //Объект, выполняющий компоновку данных
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных); //инициализация компоновщика
#Область ПодготовкаДанныхДляОтправкиВЗЧ
// получение таблицы отчета
Результат = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
// создание и заполнение массива артикуламии вставка в структуру для отправки в базу ЗЧ
МассивАртикулов = Новый Массив;
Для Каждого Строка Из Результат Цикл
МассивАртикулов.Добавить(Строка.Артикул);
КонецЦикла;
СтруктураАртикулов = Новый Структура;
СтруктураАртикулов.Вставить("Артикулы", МассивАртикулов);
СтруктураДляПередачи = ЗначениеВСтрокуВнутр(МассивАртикулов);
// получение даты начала и конца и помещение в структуру для отправки в базу ЗЧ
ПараметрыДанных = Настройки.ПараметрыДанных.Элементы; //Получение параметров из настройки
ДатаНачала = Дата(ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных("НачалоПериода")).Значение); //получаем дату начала
ДатаОкончания = Дата(ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных("КонецПериода")).Значение); // получаем дату конечную
СтруктураДат = Новый Структура;
СтруктураДат.Вставить("ДатаНачала", ДатаНачала);
СтруктураДат.Вставить("ДатаОкончания", ДатаОкончания);
СтруктураДляПередачиДат = ЗначениеВСтрокуВнутр(СтруктураДат);
#КонецОбласти
Если ЗначениеЗаполнено(ДатаНачала) и ЗначениеЗаполнено(ДатаОкончания) Тогда
#Область ПолучениеТаблицыИзЗЧ
Прокси = TR_РегламентныеЗадания.ПолучитьПрокси(Справочники.НастройкиИнтеграции.НайтиПоНаименованию("Веб сервис (soap) ЗЧprice"));
СтрокаТаб = Прокси.ZaprosPartNumber(СтруктураДляПередачиДат, СтруктураДляПередачи);
Если СтрокаТаб <> Неопределено Тогда
ТЗ_Запросов = ЗначениеИзСтрокиВнутр(СтрокаТаб); // получаем ТЗ из удаленной базы
КонецЕсли;
#КонецОбласти
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаем данные расшифровки
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // Создаем компоновщик макета
// Инициализируем макет компоновки используя схему компоновки данных
// и созданные ранее настройки и данные расшифровки
//СхемаКомпоновкиДанных = ПолучитьМакет("Макет");
//ВнешнийНаборДанных = Новый Структура;
ВнешнийНаборДанных.Очистить();
ВнешнийНаборДанных.Вставить("ЗапросыИзЗЧ", ТЗ_Запросов);
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
//ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
//ПараметрыДанных.УстановитьЗначениеПараметра("Таблица", ТЗ_Запросов);
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки(); // копия настроек из компоновки данных
//СхемаКомпоновкиДанных = ПолучитьМакет("Макет"); // получение макета компоновки данных
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //объект для создания макета компоновки данных
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); // компоновка макета
ТЗ_Запросов = Новый ТаблицаЗначений;
ТЗ_Запросов.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка"));
ТЗ_Запросов.Колонки.Добавить("КоличествоЗапросов", Новый ОписаниеТипов("Число"));
ТЗ_Запросов.Колонки.Добавить("КоличествоВЗапросах", Новый ОписаниеТипов("Число"));
ВнешнийНаборДанных = Новый Структура;
ВнешнийНаборДанных.Вставить("ЗапросыИзЗЧ", ТЗ_Запросов);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; //Объект, выполняющий компоновку данных
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных); //инициализация компоновщика
#Область ПодготовкаДанныхДляОтправкиВЗЧ
// получение таблицы отчета
Результат = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
// создание и заполнение массива артикуламии вставка в структуру для отправки в базу ЗЧ
МассивАртикулов = Новый Массив;
Для Каждого Строка Из Результат Цикл
МассивАртикулов.Добавить(Строка.Артикул);
КонецЦикла;
СтруктураАртикулов = Новый Структура;
СтруктураАртикулов.Вставить("Артикулы", МассивАртикулов);
СтруктураДляПередачи = ЗначениеВСтрокуВнутр(МассивАртикулов);
// получение даты начала и конца и помещение в структуру для отправки в базу ЗЧ
ПараметрыДанных = Настройки.ПараметрыДанных.Элементы; //Получение параметров из настройки
ДатаНачала = Дата(ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных("НачалоПериода")).Значение); //получаем дату начала
ДатаОкончания = Дата(ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных("КонецПериода")).Значение); // получаем дату конечную
СтруктураДат = Новый Структура;
СтруктураДат.Вставить("ДатаНачала", ДатаНачала);
СтруктураДат.Вставить("ДатаОкончания", ДатаОкончания);
СтруктураДляПередачиДат = ЗначениеВСтрокуВнутр(СтруктураДат);
#КонецОбласти
Если ЗначениеЗаполнено(ДатаНачала) и ЗначениеЗаполнено(ДатаОкончания) Тогда
#Область ПолучениеТаблицыИзЗЧ
Прокси = TR_РегламентныеЗадания.ПолучитьПрокси(Справочники.НастройкиИнтеграции.НайтиПоНаименованию("Веб сервис (soap) ЗЧprice"));
СтрокаТаб = Прокси.ZaprosPartNumber(СтруктураДляПередачиДат, СтруктураДляПередачи);
Если СтрокаТаб <> Неопределено Тогда
ТЗ_Запросов = ЗначениеИзСтрокиВнутр(СтрокаТаб); // получаем ТЗ из удаленной базы
КонецЕсли;
#КонецОбласти
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаем данные расшифровки
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // Создаем компоновщик макета
// Инициализируем макет компоновки используя схему компоновки данных
// и созданные ранее настройки и данные расшифровки
//СхемаКомпоновкиДанных = ПолучитьМакет("Макет");
//ВнешнийНаборДанных = Новый Структура;
ВнешнийНаборДанных.Очистить();
ВнешнийНаборДанных.Вставить("ЗапросыИзЗЧ", ТЗ_Запросов);
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
//ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
//ПараметрыДанных.УстановитьЗначениеПараметра("Таблица", ТЗ_Запросов);
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот