1с скд ошибка отчет не сформирован

Обновлено: 07.07.2024

Описание ошибки:
Не сколько ошибка, сколько памятка себе. Но запросов в сети достаточно по этому вопросу. В моем случае решилось за счет того, что код программного вывода был недостаточным. Ключевые слова: не работает (не выводится) расшифровка в СКД при программном выводе (формировании) отчета; ​​расшифровка в СКД при программном формировании и выводе в табличный документ; СКД программный вывод расшифровка;

Помогло внимательное изучение кода для программного вывода. Методически пример кода программного вывода отчета на СКД:


//Получаем схему из макета
СхемаКомпоновкиДанных = ПолучитьМакет ( "ОсновнаяСхемаКомпоновкиДанных" );

//Из схемы возьмем настройки по умолчанию
Настройки = СхемаКомпоновкиДанных . НастройкиПоУмолчанию ;

//Помещаем в переменную данные о расшифровке данных
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных ;

//Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных ;

//Передаем в макет компоновки схему, настройки и данные расшифровки
МакетКомпоновки = КомпоновщикМакета . Выполнить ( СхемаКомпоновкиДанных , Настройки , ДанныеРасшифровки );

//Выполним компоновку с помощью процессора компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных ;
ПроцессорКомпоновкиДанных . Инициализировать ( МакетКомпоновки , , ДанныеРасшифровки );

//Очищаем поле табличного документа
Результат = ЭлементыФормы . Результат ;
Результат . Очистить ();

//Выводим результат в табличный документ
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент ;
ПроцессорВывода.УстановитьДокумент ( Результат );
ПроцессорВывода.Вывести ( ПроцессорКомпоновкиДанных );

Не хватало участков кода, относящихся к расшифровке - выделены жирным и подчеркнуты. После добавления в код расшифровка в отчете, сформированном программно на схеме компоновки данных (СКД), заработала.

Странности начались когда мы перешли на 8.3(8.3.3.687) Когда было 8.2 отчеты работали как часы, к ним никто не лез т.е. человеческий фактор можно исключить, после перехода на 8.3 отчеты выдают чистый лист, хотя данные есть (я запрос из СКД исполнял в консоле запросов). Как я это делал: В модуле объекта отчета в процедуре ПриКомпоновкеРезультата получаю код запроса который генерит СКД, беру его из "СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос" вставляю в консоль запросов, консоль выдает данные, почему же СКД выдает чистый лист? P.S. Отбор в СКД никакой не установлен

какие настройки (которые могут повлиять на результат) могли слететь, если б настройки группировки слетели я б данные видел в любом случаи, а тут вообще нет данных, отбор я специально убрал (для чистоты эксперемента)

на закладке настройки есть что нибудь? Если там ничего не будет - то и данных не будет выведено. Оставь там только детальные записи, без группировок, выведет что нибудь?

вот что на закладке "настройки" "Оставь там только детальные записи, без группировок" не понял где это сделать?

у тебя там Строки, Колонки - в них ничего не указано

группировка задается программно на форме отчета пользователь проставляет галки как он хочет группировать. P.S. сорри за то что задержался с ответом

А где в Компоновщике настроек можно посмотреть данные ко каким производится группировка, я в отладчике смотрю отчет.КомпоновщикНастроек, но там куча всего, Настройки, ПользовательскиеНастройки, ФиксированыеНастройки

тут видно что просто есть группировка, а надо еще глянуть какие поля должны выводится под этой группировкой

что значит какие поля? на скрине видно ж колонку поля группировки

тут проблема более глубокая, более местическая так сказать, т.к. есть база с такой же конфой, но там эти отчеты работают, отчеты 1 в 1 такие же (с точки зрения конфигурации)

под полными правами пробовал? Есть кое-какие особенности с правами и СКД

да, пользователь под которым я пробую имеет все роли

Чисто "семёрочный" подход. Пора переучивать пользователей. Не изобретай велосипед. Сделай все нужные группировки предварительно. А затем пользователь пусть сам решает, через "Все действия - Изменить вариант".

согласен, но не я это решаю, да и не это является причиной поломки отчета. Я сейчас ковыряю "Все действия - Изменить вариант" все там нормально, как на форме выбрать группировку так в Изменить вариант и отображается, пробовал прям там редактировать, ему пофиг (( P.S. у нас на базе включено разделение данных, по идеи какая разница но я уже не знаю на что смотреть и что может быть причиной.

на скрине видно группировку. а если зайти дальше, то в поле выбор должны быть перечислены поля, которые выводить в отчет. Вы ж программно группировки создаёте

а если вариантов группировки 5 - 6 и разный порядок следования, то что для каждого варианта сохранять настройку

разве это "семёрочный" подход разместить на форме отчета список значений с группировками и исходя из отмеченного пользователем программно формировать отчет?

что-то я прям хз. сохрани схему СКД в файлик и засунь её в новый девственно-чистый отчет попробуй

По-моему трабл в том что настроики варианта где-то кешируются, я убрал код который динамически сознает группировки, заполняет значение параметров, вообще все что не стандартно, изменяю макет, присваиваю значение параметра в макете и создаю там группировку, запускаю мне отчет орет что не заполнено значение параметра (вариант выбран основной), захожу в изменить вариант, и действительно не заполнен нужный параметр, а вот какого х он не заполнен, загадка, в макете для варианта "Основной" я параметр заполнен, кстате и группировки нет если смотреть в изменить вариант, как сказать отчету что бы он взял настройки макета такие как я задал в конфигураторе?

Есть ещё пользовательские настройки. Они сильнее, чем те, что заданы в схеме. Их-то СКД и подгружает из кэша.

так он не воспринимает ни фига если я вношу изменения в "изменить вариант" если выгрузить настройки в файл из конфигуратора и загрузить их в предприятии, то он съедает настройки и все ок, и дальше если я их правлю то изменения тоже видны, но это на корню рубит то что у нас в отчет натройки программно задаются

Я программно подставлял значения параметров в ПриЗагрузкеВариантаНаСервере. Если этого не делать, то параметры не инициализировались. К примеру, так:

Это правда для случая "своей" формы для отчёта на СКД. Для случая полностью программно нарисованного отчёта на СКД играют пользовательские настройки.

на третий день проблему удалось решить. У меня при загрузке варианта вызывались процедуры которые переносили настройки с формы в макет, там обращение было к Отчет.КомпоновщикНастроек.Настройки.Структура, а надо было к настройкам которые приходят праметром в ПриЗагрузкеВариантаНаСервере. 8.3 оказалась привередливой в этом вопросе.

+ но странности все равно присутствуют в СКД 8.3 долго писать, но они есть

Когда может потребоваться программный вывод отчета в 1С на СКД:

  • программная установка параметров СКД;
  • использование внешних данных в отчете;
  • специфика табличного документа при выводе на печать;
  • прочие нестандартные ситуации.

Предлагаю на примере рассмотреть, как можно сформировать отчет на СКД и заполнить его параметры программно.

Создадим новый внешний отчет. Напишем простейший запрос на примере 1С Бухгалтерия, который выводит начальный и конечный остатки и обороты по счету:

ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Счет,
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.Субконто2,
ХозрасчетныйОстаткиИОбороты.Субконто3,
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.СуммаОборот
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Счет = &Счет, , ) КАК ХозрасчетныйОстаткиИОбороты

Вот, как выглядит отчет в стандартном виде:

сформированный отчет в 1С на СКД

Теперь сформируем его программно. Для этого нам нужно добавить Основную Форму:

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

создание формы отчета по умолчанию

Добавим команду и кнопку на форме:

создание команды на управляемой форме

В действиях команды пропишем следующий код (читать код на сайте достаточно трудно, поэтому рекомендуем скачать уже готовый пример отчета и посмотреть код в нем):

Читайте также: