Здравствуйте!
Делаю отчет, при помощи скд собираю данные, в процедуре ПриКомпоновкеРезультата проставляю значения запроса, которые неизменны.
Загвоздка в том, что информацию нужно вывести в макет, который при помощи СКД не нарисовать.
Делаю при помощи СКД, чтобы пользователи могли делать любые отборы и могли отправлять по почте в дальнейшем.
Собственно вопрос, как и на каком этапе перехватить выполненный запрос с пользовательскими отборами и закинуть данные в свою функцию по формированию табличного документа?
Делаю отчет, при помощи скд собираю данные, в процедуре ПриКомпоновкеРезультата проставляю значения запроса, которые неизменны.
Загвоздка в том, что информацию нужно вывести в макет, который при помощи СКД не нарисовать.
Делаю при помощи СКД, чтобы пользователи могли делать любые отборы и могли отправлять по почте в дальнейшем.
Собственно вопрос, как и на каком этапе перехватить выполненный запрос с пользовательскими отборами и закинуть данные в свою функцию по формированию табличного документа?
По теме из базы знаний
Найденные решения
Вот мой пример, на другом регистре из другой конфигурации, все работает.
Прикрепленные файлы:
МФТИ_Отчетдоходрасход2.erf
(45) Спасибо большое. Получилось. Там еще как-то влияли сохраненные настройки, которые я не заметил ранее. Ну а теперь буду обрабатывать таблицу значений и выводить свой макет.
Прикрепленные файлы:
МФТИ_Отчетдоходрасход - копия (3).erf
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) да.
ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных;
КПСПереоценки = Новый СписокЗначений;
КПСПереоценки.Добавить(Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("00000000000000171"));
Массив = новый Массив;
Для каждого Стр из ВернутьМассивКЭК("200") Цикл
Массив.Добавить(Стр);
КонецЦикла;
Для каждого Стр из ВернутьМассивКЭК("300") Цикл
Массив.Добавить(Стр);
КонецЦикла;
ПараметрыДанных.УстановитьЗначениеПараметра("КПСПереоценки", КПСПереоценки);
ПараметрыДанных.УстановитьЗначениеПараметра("КПСДохода", ВернутьМассивКПС(Перечисления.ВидыКБК.КДБ));
ПараметрыДанных.УстановитьЗначениеПараметра("КПСРасхода", ВернутьМассивКПС(Перечисления.ВидыКБК.КРБ));
ПараметрыДанных.УстановитьЗначениеПараметра("КЭКДохода", ВернутьМассивКЭК("100"));
ПараметрыДанных.УстановитьЗначениеПараметра("КэкЗатрат", Массив);
Показать
(6)я на правильном пути?
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.Настройки;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных;
КПСПереоценки = Новый СписокЗначений;
КПСПереоценки.Добавить(Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("00000000000000171"));
Массив = новый Массив;
Для каждого Стр из ВернутьМассивКЭК("200") Цикл
Массив.Добавить(Стр);
КонецЦикла;
Для каждого Стр из ВернутьМассивКЭК("300") Цикл
Массив.Добавить(Стр);
КонецЦикла;
ПараметрыДанных.УстановитьЗначениеПараметра("КПСПереоценки", КПСПереоценки);
ПараметрыДанных.УстановитьЗначениеПараметра("КПСДохода", ВернутьМассивКПС(Перечисления.ВидыКБК.КДБ));
ПараметрыДанных.УстановитьЗначениеПараметра("КПСРасхода", ВернутьМассивКПС(Перечисления.ВидыКБК.КРБ));
ПараметрыДанных.УстановитьЗначениеПараметра("КЭКДохода", ВернутьМассивКЭК("100"));
ПараметрыДанных.УстановитьЗначениеПараметра("КэкЗатрат", Массив);
ТаблицаДанных = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаДанных);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Показать КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаЗначений = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Показать
(10)вот так верно?
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных;
КПСПереоценки = Новый СписокЗначений;
КПСПереоценки.Добавить(Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("00000000000000171"));
Массив = новый Массив;
Для каждого Стр из ВернутьМассивКЭК("200") Цикл
Массив.Добавить(Стр);
КонецЦикла;
Для каждого Стр из ВернутьМассивКЭК("300") Цикл
Массив.Добавить(Стр);
КонецЦикла;
ПараметрыДанных.УстановитьЗначениеПараметра("КПСПереоценки", КПСПереоценки);
ПараметрыДанных.УстановитьЗначениеПараметра("КПСДохода", ВернутьМассивКПС(Перечисления.ВидыКБК.КДБ));
ПараметрыДанных.УстановитьЗначениеПараметра("КПСРасхода", ВернутьМассивКПС(Перечисления.ВидыКБК.КРБ));
ПараметрыДанных.УстановитьЗначениеПараметра("КЭКДохода", ВернутьМассивКЭК("100"));
ПараметрыДанных.УстановитьЗначениеПараметра("КэкЗатрат", Массив);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаЗначений = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Показать
(11) Вы в переменную "ПараметрыДанных" засовываете "КомпоновщикНастроек.Настройки.ПараметрыДанных", эту структуру меняете, а в макет передаете "КомпоновщикНастроек.ПолучитьНастройки()". Я не уверен, что он заново не получит настройки и не перезатрет параметры. А может быть, я просто привык использовать КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы. В общем, если не заработает - проверьте этот момент, на всякий случай.
(14) Пробую посмотреть, что будет в таблице значений и в этой строке
выскакивает выскакивает ошибка на скрине. Куда копать не подскажите?
В скд на закладке настройки, отчета нет и детальных записей тоже
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
выскакивает выскакивает ошибка на скрине. Куда копать не подскажите?
В скд на закладке настройки, отчета нет и детальных записей тоже
Прикрепленные файлы:
Он у вас не выполняется по какой-то причине, возможно обязательные параметры не установлены или просто ошибка в схеме.
Вам нужно проверить работу этой схемы с этими параметрами до того, как вы будете выполнять ее программно.
Вам нужно проверить работу этой схемы с этими параметрами до того, как вы будете выполнять ее программно.
(19)я решил посмотреть что лежит в компоновщикенастроек и обнаружилось, что ДатаНачала и ДатаОкончания, которые заполняются через период с типом СтандартныйПериод (&Период.ДатаНачала и &Период.ДатаОкончания) и счета, которые заполняются через выражение БухгалтерскийУчетПовтИсп.ПолучитьМассивСчетов("17.01,17.03,17.07,17.34"), не заполнены. хочу сейчас их заполнить тоже в модуле.
(19)
Параметры проставил, но это не помогло.
Попытка-Исключение выдала :
{ВнешнийОтчет.Отчетдоходрасход.МодульОбъекта(33)}: Ошибка при вызове метода контекста (Выполнить): Ошибка компоновки макета: Ошибка генерации макета: Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Сообщить(ОписаниеОшибки());
КонецПопытки;
Параметры проставил, но это не помогло.
Попытка-Исключение выдала :
{ВнешнийОтчет.Отчетдоходрасход.МодульОбъекта(33)}: Ошибка при вызове метода контекста (Выполнить): Ошибка компоновки макета: Ошибка генерации макета: Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений
(34) Конфа БГУ 2.
Вот отчет. Наметки макета в нем можно увидеть
Вот отчет. Наметки макета в нем можно увидеть
Прикрепленные файлы:
МФТИ_Отчетдоходрасход.erf
К сожалению БГУ под рукой нет...
Вариант такой: попробуйте создать форму для этого отчёта, параметры заполняйте при открытии, затем в настройках убедитесь что они все заполнены, если не формируется, поэксперементируйте с конструктором настроек(добавте/уберите поля), так или иначе вы должны сперва заставить сформироваться отчёт в обычном режиме и только после этого переделывать его на программный(по факту, код у вас вроде рабочий) (БГУ будет только завтра, если не победите, может что дельное смогу подсказать...)
Вариант такой: попробуйте создать форму для этого отчёта, параметры заполняйте при открытии, затем в настройках убедитесь что они все заполнены, если не формируется, поэксперементируйте с конструктором настроек(добавте/уберите поля), так или иначе вы должны сперва заставить сформироваться отчёт в обычном режиме и только после этого переделывать его на программный(по факту, код у вас вроде рабочий) (БГУ будет только завтра, если не победите, может что дельное смогу подсказать...)
(40) я максимально упростил запрос, избавился от всех параметров, но это не помогло.
Прикрепленные файлы:
МФТИ_Отчетдоходрасход - копия (2).erf
Вот мой пример, на другом регистре из другой конфигурации, все работает.
Прикрепленные файлы:
МФТИ_Отчетдоходрасход2.erf
(45) Спасибо большое. Получилось. Там еще как-то влияли сохраненные настройки, которые я не заметил ранее. Ну а теперь буду обрабатывать таблицу значений и выводить свой макет.
Прикрепленные файлы:
МФТИ_Отчетдоходрасход - копия (3).erf
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот