Представления в ЗУП

27.04.21

Разработка - Механизмы типовых конфигураций

Использование представлений вместо прямого чтения из регистров сведений в ЗУП.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Представления в ЗУП:
.epf 31,56Kb
65
65 Скачать (5 SM) Купить за 3 050 руб.

Введение:

Один из основных "паттернов"  1С - "Чтение данных из регистров, а не из документов". Структура справочников и регистров считается стабильной, а "правильное" использование регистров рассматривается при подготовке к экзамену "1С:Специалист".
В ЗУП данный паттерн нарушается для регистров сведений. Вместо него разработчикам предоставляют механизм "Представлений".

При разработке запросов для ЗУП разработчики сталкиваются со следующими сложностями ЗУП:

  1. Часто требуется писать один и тот же "большой" запрос, для чтения данных.
    Это приводит к появлению большого количества "дубликатов кода" в запросах.
    При изменении структуры метаданных приходиться переписывать все эти запросы.
  2. Регистры сведений используются нестандартным образом.
    В регистры добавлены ресурсы "ОкончаниеПредположительно", "ДействуетДо", которые требуется учитывать при получении среза последних по регистру. Логика использования таких ресурсов не стандартизирована.

Для решения перечисленных выше проблем в ЗУП появился механизм представлений.
При изучении данного механизма я столкнулся с отсутствием документации по данному механизму аналогичной той которая предоставляется для БСП.

В результате, на этапе изучения продукта загадка "как использовать регистр" заменяется загадкой "как использовать представления". Для решения загадки была создана обработка, в которую помещались ценные знания.
Вся приведенная ниже информация это "догадки на тему загадки" любезно предоставленной разработчиками ЗУП.
Информация может быть неполной, противоречивой и даже ошибочной.

Использование представлений:

Что бы использовать представление необходимо пройти следующие этапы:

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

В ЗУП предусмотрены следующие способы работы с "представлениями":

  1. "Пустышки" в СКД
  2. Функции "СоздатьВТ..."

Ниже данные способы описываются подробнее.

"Пустышки в СКД"

Описания результирующей ВТ в СКД производятся путем написания запроса-пустышки.
Пример запроса-пустышки:

ВЫБРАТЬ
    ДАТАВРЕМЯ(1, 1, 1) КАК Период
ПОМЕСТИТЬ Представления_Периоды
ГДЕ
    "НачалоИнтервала" = &ДатаНачала
    И "ОкончаниеИнтервала" = &ДатаОкончания
    И "Периодичность" = "ДЕНЬ"
    И "ИспользоватьКонецПериода" = "ЛОЖЬ"

Для написания такого запроса необходимо знать:

  1. Какие поля допустимо использовать в запросе.
  2. Как должно называться представление (начало имени результирующей ВТ должно начинаться с имени представления).
  3. Какие параметры допустимо передать в секции "ГДЕ".

В обработке "Представления ЗУП" для быстрого написания запросов-пустышек созданы конструкторы, позволяющие создать запрос-пустышку настраивая его "мышкой".

Пример создания запроса-пустышки:


 

 

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

Для использования запросов-пустышек в отчетах необходимо заменить пустышки на фактически выполняемые запросы.
Заготовка кода, который для этого необходим есть в шаблонах кода (см. "Поиск шаблонов кода").

Функции "СоздатьВТ..."

При необходимости обратиться к представлению в коде используются функции "СоздатьВТ...".
Последовательность действий будет следующей:

  1. Создать менеджер временных таблиц (МВТ), который будет далее использоваться в цепочке запросов.
  2. Если это необходимо создать в МВТ таблицу, необходимую для построения результирующей ВТ
  3. Выполнить "СоздатьВТ..."
  4. Удалить ВТ, которые не далее не нужны.

Заготовки кода для работы с ВТ генерируются на закладке "Шаблоны кода".

 

 

Послесловие

Обработка предоставляется "как есть". Сложно сказать, будет ли она развиваться далее. Это зависит от того, будет ли у меня существенное количество задач, связанных с ЗУП. Мне эта обработка позволила собрать в кучу знания полученные при изучении механизмов и существенно увеличить скорость написания запросов-пустышек.

Кроме того, обратите внимание на закладку "Срез последних". Там предоставлена возможность построения пустышек для любого периодического регистра сведений. Работа с закладкой не отличается от остальных, потому отдельно я ее не описывал.

Надеюсь, что публикация будет полезной. 

Проверялось за ЗУП редакции 3.1 (3.1.14.433).

27.04.2021:

  1. Добавлено представление "КадровыеДанныеФизическихЛиц"
  2. Сформирован список найденных представлений. Располагается на первой странице.
    Доступны для выбора только поддерживаемые обработкой.
  3. Для срезов последних по некоторым регистрам обнаружены "особенности использования".
    Такие регистры выводятся в списке с "!". Под списком отображается описание тех "особенностей" с которыми столкнулся.
    Пример:
     

ЗУП Представления

См. также

Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Расчет себестоимости в типовых конфигурациях 1С – для многих «черный ящик», работающий по жестко зашитым в него алгоритмам. Реализация этого «черного ящика» может меняться в зависимости от конкретной конфигурации – УПП, БП 3.0, ERP. Но принцип работы везде одинаковый. Расскажем о том, как устроен расчет себестоимости, как его дорабатывать, и какие методы могут быть эффективны и без доработок.

27.12.2024    10395    Begemoth80    32    

82

СКД Механизмы типовых конфигураций Запросы Программист Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    2232    PROSTO-1C    0    

20

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Бесплатно (free)

Эта ошибка была обнаружена мной в типовой конфигурации 1С:Комплексная автоматизация 2 (2.5.16.115), БСП версия 3.1.9.302. Возникает она после того, как вы добавляете в расширение бизнес-процесс или задачу, выполняете обновление идентификаторов метаданных расширений, но ошибка при записи любого элемента справочника "Профили групп доступа" всё равно остаётся.

01.07.2024    2323    Vidz    0    

12

Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Очень часто в написании кода требуется обращаться к предопределённым значениям. Если идёт обращение к типовым предопределённым значениям, то проблем не возникает.

24.06.2024    1344    olja-ljaaa    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ubnkfl 15.04.21 13:27 Сейчас в теме
В дополнение к статье.
https://its.1c.ru/db/metod81#content:7329:hdoc

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

Для подготовки текста запроса, необходимо:

выбрать страницу представления;
задать параметры;
выбрать команду "Сформировать".
В поле "Представление" будет сформирован текст запроса-представления, который необходимо скопировать в набор данных схемы компоновки данных, разрабатываемого отчета.

В ознакомительных целях предоставлена возможность посмотреть каким запросом к данным будет заменен запрос-представление при выполнении отчета. Для этого необходимо перейти по гиперссылке "Показать 'Настоящий' запрос", расположенной внизу формы.

Внешняя обработка ПредставленияИспользуемыеВЗапросахНаборовДанныхСКДОтчетов.epf находится в каталоге \1CITS\EXE\HRM3
Показать
Прикрепленные файлы:
ПредставленияИспользуемыеВЗапросахНаборовДанныхСКДОтчетов.epf
1c_ssnik; AlbinaAAA; vakrikun; Strannik777; olen_ka; lepth; user1485342; VinnieThePOOH; ~Ponk@~; ixijixi; VAAngelov; Aftee; triviumfan; Kaval88; German_Tagil; asupsam; sanjabor; user_2010; +18 Ответить
2. Aftee 15.04.21 17:15 Сейчас в теме
Вот прочитает человек Вашу статью, даже получится сгенерить "пустышку". А дальше он с ней что будет делать? Ну вставит в СКД, ну получит пустой результат.
Распишите про процедуры, выполняющие заполнение наборов данных.
3. tschertovKA 15.04.21 20:19 Сейчас в теме
(2) Возможно вы не обратили внимание на предложение:
Для использования запросов-пустышек в отчетах необходимо заменить пустышки на фактически выполняемые запросы.
Заготовка кода, который для этого необходим есть в шаблонах кода (см. "Поиск шаблонов кода").

Там пока что есть только один шаблон кода, как раз тот, который надо для разработки собственного внешнего отчета с использованием в СКД запросов-пустышек.
AliceLight; +1 Ответить
4. Aftee 16.04.21 08:35 Сейчас в теме
(3) Ну да, не заметил. Хотелось бы поглядеть какой там шаблон для отчета. Приведете пример?
6. Sakuraso 16.04.21 09:26 Сейчас в теме
(4) Можно посмотреть в любом типовом отчете в ЗУП.
Выглядит примерно так:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОбработчикиСобытий

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	ЗарплатаКадрыОтчеты.ПриКомпоновкеРезультатаВТабличныйДокумент(
		ЭтотОбъект, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка, Ложь);
	
КонецПроцедуры

#КонецОбласти


#Область СлужебныеПроцедурыИФункции

Процедура ИнициализироватьОтчет() Экспорт
	
	ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ЭтотОбъект);
	
КонецПроцедуры

// Для общей формы "Форма отчета" подсистемы "Варианты отчетов".
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
	
	Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина;
	
КонецПроцедуры

// Вызывается перед загрузкой новых настроек. Используется для изменения схемы компоновки.
//
Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт
	
	Если КлючСхемы <> КлючВарианта Тогда
		
		ИнициализироватьОтчет();
		ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКомпоновкиДанных, КлючСхемы);
		
		КлючСхемы = КлючВарианта;
		
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли
Показать
AliceLight; Noobmaster69; user1592156; +3 Ответить
8. Aftee 16.04.21 11:37 Сейчас в теме
(6) ну и нафига мне обработка за 5 SM, если я могу код посмотреть в
в любом типовом отчете в ЗУП
?
1c_ssnik; VinnieThePOOH; +2 Ответить
12. dock 45 19.04.21 10:51 Сейчас в теме
(8) что бы поддержать автора, у которого явная нехватка sm :))))
1c_ssnik; +1 Ответить
5. Yashazz 4801 16.04.21 09:25 Сейчас в теме
Браво! Хоть кто-то рискнул в эту муть полезть и разобраться. Плюсую!
7. Aftee 16.04.21 11:35 Сейчас в теме
(5) Это давным-давно уже разобрано. Обработка "валяется" в открытом доступе (ее и тут прикрепили в (1)).
Есть более подробное описание механизма представлений от других авторов.

5 SM за бесплатную обработку, к которой прикручен шаблон кода (по факту нужна одна процедура, которую можно скопипастить из типовой конфы или из статей других авторов).

Яков, я Вас не узнаю...
1c_ssnik; dock; triviumfan; +3 Ответить
9. Gladkov_Anton 349 16.04.21 15:58 Сейчас в теме
(7) Если вам кажется, что 5 SM это большие деньги, в связи с тем, что инфостарт их не продает любому желающему по текущему курсу - то думаю, что вопрос о ценности SM лучше направить в поддержку сайта.

На момент написания статьи о существовании типовой обработки я не знал.
Всю информацию по этому механизму капал из первоисточника.
Моя обработка содержит существенно больше информации.

Уже доступны "Путь поля СКД", больше представлений чем в типовой, шаблоны кода.

Обновление в ближайшее время выложу и конечно отравлю тем, кто уже купил.

Если вы хотите сделать людям добро - предлагаю простой вариант:
Допиливаете в обработку примерно столько же сколько уже в ней сделано.
Список представлений в ЗУП намного больше тех, которые уже есть в обработке, можно приложить пояснения как пользоваться и добавить еще шаблонов кода.
Я со своей стороны выложу все это в свободный доступ, например на Git.

В противном случае ваши нападки выглядят не более чем как треп о жадности капиталистов...
amiralnar; EugeneMaliy; ubnkfl; +3 1 Ответить
10. Aftee 16.04.21 16:15 Сейчас в теме
(9)
Если вам кажется, что 5 SM это большие деньги
- Нет, не кажется.

Но
Обработка предоставляется "как есть". Сложно сказать, будет ли она развиваться далее.

+ (1) + приправить двумя типовыми процедурами по заполнению "пустышек"

Если вам кажется, что 5 SM это большие деньги
- да, кажется, учитывая вышеперечисленное.

Хозяин Барин, как говорится
1c_ssnik; VinnieThePOOH; +2 Ответить
11. Yashazz 4801 16.04.21 17:57 Сейчас в теме
(7) а я плохо разбираюсь в ЗУП. Не мой профиль. Я больше по УТ/БП, КА, производству, ну и платформе.
Ясно, спасибо за инфу. Убираю свой голос.
13. webester 26 25.07.22 09:52 Сейчас в теме
Обработка прекрасная. Шаблоны кода немного кривоваты, но пригодились. Сама обработка намного функциональнее, и удобнее чем типовая. Пользуюсь ей в приоритете перед типовой. Но автор забил на обновления. Это грусть. В списке есть и другие интересные представления. Может и дойдут руки когда-то посмотреть на них самостоятельно.
AliceLight; +1 Ответить
Оставьте свое сообщение