Введение:
Один из основных "паттернов" 1С - "Чтение данных из регистров, а не из документов". Структура справочников и регистров считается стабильной, а "правильное" использование регистров рассматривается при подготовке к экзамену "1С:Специалист".
В ЗУП данный паттерн нарушается для регистров сведений. Вместо него разработчикам предоставляют механизм "Представлений".
При разработке запросов для ЗУП разработчики сталкиваются со следующими сложностями ЗУП:
- Часто требуется писать один и тот же "большой" запрос, для чтения данных.
Это приводит к появлению большого количества "дубликатов кода" в запросах.
При изменении структуры метаданных приходиться переписывать все эти запросы. - Регистры сведений используются нестандартным образом.
В регистры добавлены ресурсы "ОкончаниеПредположительно", "ДействуетДо", которые требуется учитывать при получении среза последних по регистру. Логика использования таких ресурсов не стандартизирована.
Для решения перечисленных выше проблем в ЗУП появился механизм представлений.
При изучении данного механизма я столкнулся с отсутствием документации по данному механизму аналогичной той которая предоставляется для БСП.
В результате, на этапе изучения продукта загадка "как использовать регистр" заменяется загадкой "как использовать представления". Для решения загадки была создана обработка, в которую помещались ценные знания.
Вся приведенная ниже информация это "догадки на тему загадки" любезно предоставленной разработчиками ЗУП.
Информация может быть неполной, противоречивой и даже ошибочной.
Использование представлений:
Что бы использовать представление необходимо пройти следующие этапы:
- Подготовить временную таблицу (ВТ) с исходными данными для которых надо получить "представление".
Как правило ВТ с исходными данными должна содержать колонку "Период" и колонки соответствующие измерениям регистра, по которым надо получить срез. - Описать колонки, которые требуется получить в результирующей ВТ.
- Указать параметры построения представления.
В ЗУП предусмотрены следующие способы работы с "представлениями":
- "Пустышки" в СКД
- Функции "СоздатьВТ..."
Ниже данные способы описываются подробнее.
"Пустышки в СКД"
Описания результирующей ВТ в СКД производятся путем написания запроса-пустышки.
Пример запроса-пустышки:
ВЫБРАТЬ
ДАТАВРЕМЯ(1, 1, 1) КАК Период
ПОМЕСТИТЬ Представления_Периоды
ГДЕ
"НачалоИнтервала" = &ДатаНачала
И "ОкончаниеИнтервала" = &ДатаОкончания
И "Периодичность" = "ДЕНЬ"
И "ИспользоватьКонецПериода" = "ЛОЖЬ"
Для написания такого запроса необходимо знать:
- Какие поля допустимо использовать в запросе.
- Как должно называться представление (начало имени результирующей ВТ должно начинаться с имени представления).
- Какие параметры допустимо передать в секции "ГДЕ".
В обработке "Представления ЗУП" для быстрого написания запросов-пустышек созданы конструкторы, позволяющие создать запрос-пустышку настраивая его "мышкой".
Пример создания запроса-пустышки:
На закладке "Фактический запрос" можно сразу же посмотреть полный текст запроса, который будет подставляться в СКД вместо "пустышки". При построении макета компоновки данных часть полей платформа удаляет и выполняемый запрос будет существенно меньше фактического.
Для использования запросов-пустышек в отчетах необходимо заменить пустышки на фактически выполняемые запросы.
Заготовка кода, который для этого необходим есть в шаблонах кода (см. "Поиск шаблонов кода").
Функции "СоздатьВТ..."
При необходимости обратиться к представлению в коде используются функции "СоздатьВТ...".
Последовательность действий будет следующей:
- Создать менеджер временных таблиц (МВТ), который будет далее использоваться в цепочке запросов.
- Если это необходимо создать в МВТ таблицу, необходимую для построения результирующей ВТ
- Выполнить "СоздатьВТ..."
- Удалить ВТ, которые не далее не нужны.
Заготовки кода для работы с ВТ генерируются на закладке "Шаблоны кода".
Послесловие
Обработка предоставляется "как есть". Сложно сказать, будет ли она развиваться далее. Это зависит от того, будет ли у меня существенное количество задач, связанных с ЗУП. Мне эта обработка позволила собрать в кучу знания полученные при изучении механизмов и существенно увеличить скорость написания запросов-пустышек.
Кроме того, обратите внимание на закладку "Срез последних". Там предоставлена возможность построения пустышек для любого периодического регистра сведений. Работа с закладкой не отличается от остальных, потому отдельно я ее не описывал.
Надеюсь, что публикация будет полезной.
Проверялось за ЗУП редакции 3.1 (3.1.14.433).
27.04.2021:
- Добавлено представление "КадровыеДанныеФизическихЛиц"
- Сформирован список найденных представлений. Располагается на первой странице.
Доступны для выбора только поддерживаемые обработкой. - Для срезов последних по некоторым регистрам обнаружены "особенности использования".
Такие регистры выводятся в списке с "!". Под списком отображается описание тех "особенностей" с которыми столкнулся.
Пример: