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

Публикация № 1228753

Разработка - Практика программирования

СКД отчеты настройки костыль умолчанию восстановление ссылка GUID УИД система компоновки данных битые

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

На практике удобно предоставлять пользователю отчеты с предустановленными настройками по умолчанию. Если в настройках используются параметры и отборы со ссылочным типом СправочникСсылка, ПланВидовХарактеристикСсылка, ДокументСсылка, ПеречислениеСсылка, можно использовать нижеизложенную методику восстановления ссылок по их строковым представлениям. Методика затрагивает Параметры настроек, Отборы в группировках и условиях настроек оформления схемы компоновки данных.

Возможны два способа восстановления:

Способ 1.
С использованием вспомогательных Пользовательских полей.

Способ 2.
Только с использованием Параметров с Ограничением доступности.

В обоих способах при использовании Отборов по списку значений, для надежности приходится использовать соответствующий заменяющий параметр СКД, т.к. при дальнейшей загрузке схемы в режиме конфигуратора без этого список может заменяться пустыми ссылками.
И в обоих способах для восстановления ссылок, сохраненных в Параметрах СКД с опцией Ограничение доступности, потребуется использовать вспомогательный реквизит отчета:  АдресХранилищаСКД.

Для указания конкретного Способа используем последний параметр функции УстановитьНастройкиПоУмолчаниюСервер: 1 или 2.
Способ 2 предлагается как предпочтительный, так как требует минимального количества дополнительных манипуляций.

В предложенном подходе Настройки по умолчанию применяются к варианту отчета "Основной".
 

Описание алгоритма применения методики.

Этап I.

  1. В любой Консоли СКД в режиме приложения создаем отчет.
  2. В конструкторе СКД в Параметрах создаем те параметры отчета, которые требуется заполнить ссылочными значениям по умолчанию.
  3. В случае когда используются и Отборы, сюда нужно будет добавить дополнительные параметры с тем же именем поля, которое используется в левой части настройки отбора. 
  4. (Только для Способа 1.) В Настройках на вкладке "Пользовательские поля" создаем специальные поля с наименованиями по формату "ТипПараметра_<имяпараметра>". В выражении детальных записей строкой указываем ссылочный тип параметра, например, "СправочникСсылка.Номенклатура".


Этап II.

  1. Выгружаем СКД в файл xml. (Либо формируем внешний отчет из вашей Консоли, если она это позволяет сделать)
  2. В режиме конфигуратора загружаем из файла схему в макет ОсновнаяСхемаКомпоновкиДанных.
  3. В Форме внешнего отчета, либо в модуле объекта, размещаем блоки дополнительных функций.
 
 Блок 1. Парсинг-постобработка схемы компоновки данных
 
 Блок 2. Загрузка настроек по умолчанию в Компоновщик настроек
 
 Блок 3. Применение настроек по умолчанию к варианту отчета "Основной"
 
Блок 4.  Нестандартная компоновка результата


На этом всё.

Сохраняем внешний отчет.

В пользовательском режиме проверяем правильность применения настроек.

Лайфхак: Блоки 1 и 2  можно разместить в каком-либо общем модуле конфигурации. В этом случае код модуля формы любого отчета, написанного по данной методике, будет выглядеть лаконично (только Блоки 3,4).

И напоследок.

Предлагаемый метод не претендует на универсальность.

Однако, практика показывает, что он во многом удобен как в части опыта написания отчетов на основе СКД программистом, так и в плане пользовательского опыта использования таких отчетов.

Отмечу, что при обратной выгрузке/загрузке схемы из отчета в Консоль строковые представления ссылок автоматически не восстанавливаются, требуя ручной корректировки.
Поэтому общий алгоритм использования данного механизма преимущественно односторонний: из Консоли в Отчет.

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

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

Номер релиза, на котором тестировалась методика и отчет: 8.3.14.1779.

Успехов в разработке отчетов!

UPD:  Добавлен второй, более предпочтительный, способ восстановления битых ссылок.  Обновлено описание и отчет во вложении.

Скачать файлы

Наименование Файл Версия Размер
Восстановление ссылочных значений в настройках СКД. Пример отчета

.erf 14,39Kb
0
.erf 1.1 14,39Kb Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. the1 791 30.04.20 20:59 Сейчас в теме
Отлично. Единственно, что мне непонятно, так это зачем создавать отчеты в консоли. Можно же сразу внешний отчет создать. И отлаживать удобнее, и с переносом настроек мороки нет. Имхо, конечно.
2. zaxarovsky 107 01.05.20 08:51 Сейчас в теме
(1) Создавать отчеты в консоли имеет ряд выгод, которые зависят от конкретной задачи.
Из преймуществ могу отметить эти:
1. Разработка "налету", когда сразу в режиме приложения можно видеть сформированный результат, выгружать его в другие инструменты - консоль запросов, например, генерировать из консоли внешний готовый отчет, быстро изменять Настройки СКД, предоставлять пользователю отчеты прямо в консоли (с отдельным пользовательским интерфейсом). И еще ряд других преймуществ.
Существет довольно много популярных Консолей СКД, и тому есть причины.
2. То, чему посвящена эта статья - Краткое описание жирным шрифтом - возможность задавать значения параметров с помощью ссылок в режиме приложения, а не НайтиПоКоду, НайтиПоНаименованию и прочего.

И кстати, это момент интересный: неужели здесь нет людей, которые используют в практике различные Консоли СКД? Отзовётесь?
04021976; +1 Ответить
3. the1 791 03.05.20 22:04 Сейчас в теме
(2) Вот Вы какой консолью пользуетесь? Тоже хочу попробовать, вдруг зайдет)
blindcat2006; +1 Ответить
4. zaxarovsky 107 04.05.20 22:09 Сейчас в теме
(3) Сейчас, так как на текущем месте работы установлена подсистема "Инструменты разработчика" (от Tormzit), использую консоль из этой подсистемы. Там она называется "Консоль компоновок данных (ИР)".
Ранее активно использовал "Универсальная консоль отчетов (UCR)" отсюда https://infostart.ru/public/16782/
Оставьте свое сообщение

См. также

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5 Промо

Практика программирования Адаптация типовых решений Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    2805    14    huxuxuya    11    

Генерация внешнего отчета на основе варианта в "классической" консоли СКД

Инструментарий разработчика v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Реализации функции генерации внешнего отчета одной кнопкой в "классической" консоли отчетов СКД. Это функция будет полезна, если вам надо пользователю отдать настроенный вариант отчета на тестирование (а для него консоли это очень сложно: настройки, отборы и т.п.) или банально лень в конфигураторе собирать внешний отчет и вместе с ним ещё хранить отдельно в файле настройки варианта (отборы, например).

1 стартмани

16.01.2019    7347    21    maxx    21