Разработка отчета СКД по данным из расширения.
Доброго всем дня!
Как корректно разработать отчет на СКД, где есть запрос данных по незаимствованным реквизитам из расширения? При разработке в конфигураторе ругается на то, что в конфигурации отсутствуют данные реквизиты. Сейчас делаю так - разрабатываю отчет в "консоли схем компоновки данных" в режиме "Предприятия", затем сохраняю схему, загружаю во внешний отчет. При загрузке схемы в отчет ругается, но отчеты работают. Но есть и другие более неприятные нюансы. Может быть есть штатный способ разработки таких отчетов корректно?
Как корректно разработать отчет на СКД, где есть запрос данных по незаимствованным реквизитам из расширения? При разработке в конфигураторе ругается на то, что в конфигурации отсутствуют данные реквизиты. Сейчас делаю так - разрабатываю отчет в "консоли схем компоновки данных" в режиме "Предприятия", затем сохраняю схему, загружаю во внешний отчет. При загрузке схемы в отчет ругается, но отчеты работают. Но есть и другие более неприятные нюансы. Может быть есть штатный способ разработки таких отчетов корректно?
По теме из базы знаний
- Шаблон отчета на СКД с сохранением настроек
- [Обзор. История внедрения] КИНТ: Управление санаторием - модуль "Питание"
- Работа с запросами в 1С СКД. Примеры использования расширения языка запросов СКД
- Разрабатываем отчет на СКД, содержащий данные из расширения
- Быстрый фронт в базе размером 8.8 терабайт – наши стандарты при разработке компонентов системы
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Согласно политике 1С, расширения должны реализовывать независимый от других расширений функционал. Не рекомендуется разработка алгоритмов в одних расширениях, зависящих от данных других расширений, а также доработка конфигурации, основанная на данных расширений.
Поэтому штатного функционала в конфигураторе нет.
Поэтому штатного функционала в конфигураторе нет.
(2) По-моему вы не совсем поняли мой вопрос.
Попробую объяснить по другому. Справочнику "Сегменты клиентов" в расширении я добавил реквизит "Важный" с типом "Булево". Теперь мне необходимо этот реквизит вывести в отчете СКД и вот здесь я с вами соглашусь - штатного механизма корректной разработки в конфигураторе такого отчета я не нашел, т.е. он есть, но реквизитов из расширения он не видит. Поэтому пришлось пойти костыльным путем разработки. И внешний отчет СКД - это не доработка конфигурации.
Механизму расширений уже не первый год, поэтому предположил, что может я что-то пропустил, и в конфигураторе уже появился штатный механизм разработки таких отчетов.
Попробую объяснить по другому. Справочнику "Сегменты клиентов" в расширении я добавил реквизит "Важный" с типом "Булево". Теперь мне необходимо этот реквизит вывести в отчете СКД и вот здесь я с вами соглашусь - штатного механизма корректной разработки в конфигураторе такого отчета я не нашел, т.е. он есть, но реквизитов из расширения он не видит. Поэтому пришлось пойти костыльным путем разработки. И внешний отчет СКД - это не доработка конфигурации.
Механизму расширений уже не первый год, поэтому предположил, что может я что-то пропустил, и в конфигураторе уже появился штатный механизм разработки таких отчетов.
(9)
Та же самая платформа, тоже режим "не использовать", во внешнем отчете не видит реквизиты добавленные в расширение. Конфигурация ERP 2.4.6.174.
Прописывал в СКД руками, но в пользовательское режиме ругается, что не видит эти реквизиты.
Что делаю не так?
режим совместимости "Не использовать". Никаких доп настроек нет.
Та же самая платформа, тоже режим "не использовать", во внешнем отчете не видит реквизиты добавленные в расширение. Конфигурация ERP 2.4.6.174.
Прописывал в СКД руками, но в пользовательское режиме ругается, что не видит эти реквизиты.
Что делаю не так?
Только что проверил.
Необходимо сделать следующее:
1) отчет необходимо сначала создать в расширение, в котором есть заимствованный объект
2) доработать отчет, получив нужную настройку
3) делаем внешним, а из расширения удаляем :)
Необходимо сделать следующее:
1) отчет необходимо сначала создать в расширение, в котором есть заимствованный объект
2) доработать отчет, получив нужную настройку
3) делаем внешним, а из расширения удаляем :)
Все это конечно работает, вот мне досталась конфигурация где создали около 30 реквизитов в составе расширений, причем расширений 8 штук.... Пойму когда один или два реквизита создают чтобы не заморачиваться при обновлениях на типовые решения, только не понимаю зачем добавлять реквизиты в расширения в таком количестве....
(13) Для внешних отчетов "вычисляемые поля" самый удобный вариант! ... Если отчет делать в расширении, а потом сохранять как внешний, то во-первых, в расширение нужно будет добавить кучу объектов и их реквизитов для создания запроса, и они только захламляют расширение, во-вторых, чтобы потом что-то доработать в запросе отчета нужно будет снова его встраивать в расширение, править и сохранять как внешний, это лишние телодвижения.
Можно еще сделать через внешние данные и соединения таблиц (при необходимости). В модуле отчета в процедуре ПриКомпоновкиРезультата создаем свой запрос и готовую таблицу выгружаем в схему компоновки. Возможно не всегда это будет приемлемо. Суть в том, что основная логика запроса делается сомой СКД, а не достающие данные через запрос в процедуре. Проверено, работает.
(19) Консоль работает но если источник данных запрос, то конструктор отчета будет ругаться и не будет оказывать помощи. Если расширение одно, то уж проще (12) чтобы не плодить лишних мест для синтаксических ошибок.
ПС сделал вариант (12) не хочу вычисляемых полей, с детства не доверяю ручному набору, символом ошибся и ищи почему не работает.
ПС сделал вариант (12) не хочу вычисляемых полей, с детства не доверяю ручному набору, символом ошибся и ищи почему не работает.
Нашел вот ещё какой вариант:
1. Сохраняем внешний отчет в файлы "Действия - Выгрузить в файлы".
2. В предприятии в консоли системы компоновки данных загружаем схему компоновки из файла Template в каталоге "...\Templates\ОсновнаяСхемаКомпоновкиДанных\Ext".
3. Редактируем и сохраняем туда же.
4. Загружаем в конфигураторе через действия - загрузить из файлов
5. Сохраняем отчет и радуемся в предприятии что все работает!!!
Только что так сделал, все другие варианты сбивали ресурсы в отчете.
1. Сохраняем внешний отчет в файлы "Действия - Выгрузить в файлы".
2. В предприятии в консоли системы компоновки данных загружаем схему компоновки из файла Template в каталоге "...\Templates\ОсновнаяСхемаКомпоновкиДанных\Ext".
3. Редактируем и сохраняем туда же.
4. Загружаем в конфигураторе через действия - загрузить из файлов
5. Сохраняем отчет и радуемся в предприятии что все работает!!!
Только что так сделал, все другие варианты сбивали ресурсы в отчете.
У меня была задача вывести реквизит из расширения у документа и в отбор его добавить во внешнем отчете
1-Писал реквизит в запросе руками
2-Создавал вычисляемое поле и в выражении указывал имя реквизита (имя поля), которое задал в запросе
3-И выводил его в структуре уже куда мне хотелось.
1-Писал реквизит в запросе руками
2-Создавал вычисляемое поле и в выражении указывал имя реквизита (имя поля), которое задал в запросе
3-И выводил его в структуре уже куда мне хотелось.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
//Получаем схему
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
//Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
//Текст запроса
НаборДанных = СхемаКомпоновкиДанных.НаборыДанных[0];
ТекстЗапроса = СтрЗаменить(НаборДанных.Запрос,
"ВЫРАЗИТЬ("" "" КАК СТРОКА(512)) КАК ТрекНомер",
"ЗаказКлиента.ТрекНомер КАК ТрекНомер");
НаборДанных.Запрос = ТекстЗапроса;
//Выводим отчет в документ
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры
Показать
(30) Для просто замены текста запроса необязательно всю компоновку переопределять.
Достаточно будет:
И такое приемлемо для реквизитов простых типов. С объектными начинаются проблемы.
Достаточно будет:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
ТекстЗапроса = СхемаКомпоновкиДанных.НаборыДанных[0].Запрос;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"ВЫРАЗИТЬ("" "" КАК СТРОКА(512)) КАК ТрекНомер",
"ЗаказКлиента.ТрекНомер КАК ТрекНомер");
СхемаКомпоновкиДанных.НаборыДанных[0].Запрос = ТекстЗапроса;
КонецПроцедуры
ПоказатьИ такое приемлемо для реквизитов простых типов. С объектными начинаются проблемы.
Привет, вот как я делал
в расширении есть реквизит у заказа "ФЕР_КомментарийВнутренний"
я сначала добавил поле с этим именем добавил в запрос как строку
ПОДСТРОКА("ФЕР_КомментарийВнутренний", 1, 1000) КАК ФЕР_КомментарийВнутренний
затем добавил его в настройки, в поля отчета
а уже потом в запросе вставил, то что мне нужно выводить в это в поле в отчете
ПОДСТРОКА(ЗаказКлиентаТовары.ФЕР_КомментарийВнутренний, 1, 1000) КАК ФЕР_КомментарийВнутренний
в расширении есть реквизит у заказа "ФЕР_КомментарийВнутренний"
я сначала добавил поле с этим именем добавил в запрос как строку
ПОДСТРОКА("ФЕР_КомментарийВнутренний", 1, 1000) КАК ФЕР_КомментарийВнутренний
затем добавил его в настройки, в поля отчета
а уже потом в запросе вставил, то что мне нужно выводить в это в поле в отчете
ПОДСТРОКА(ЗаказКлиентаТовары.ФЕР_КомментарийВнутренний, 1, 1000) КАК ФЕР_КомментарийВнутренний
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот