Top.Mail.Ru
Заказать консультацию
специалиста 1С
Отправить заявку

ИнфоСофт использует файлы «cookie» с целью персонализации сервисов и повышения удобства пользования веб-сайтом. Вы можете запретить обработку сookies в настройках браузера. Пожалуйста, ознакомьтесь с политикой использования cookies.
Оставаясь на сайте, вы соглашаетесь с политикой использования cookies.

Анализ типовых отчетов в 1С:ЗУП 3.1. Механизм представлений на примерах

Палкина Юлия Посмотреть все статьи >> Специалист по внедрению 1С франчайзинговой сети "ИнфоСофт".
20.03.2024
4209
Время прочтения - 8 мин.
Заказать консультацию

Часто в типовых отчетах конфигурации 1С:ЗУП можно встретить пустое поле таблицы и какие-то «странные» описания полей типа:

Значение(Справочник.Организации.ПустаяСсылка) – ссылка на справочник,

“ ” – пустая строка,

0 – число,

ДАТАВРЕМЯ(1, 1, 1) – пустая дата.

Выглядит это следующим образом:

1.png


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


Типовой отчет Анализ начислений и удержаний

Откроем дерево конфигруации – отчеты, найдем отчет АнализНачисленийИУдержаний.

2.png

 

Откроем схему компоновки данных.

3.png

 

Далее перейдем в Наборы данных - запрос НачисленияУдержания и конструктор запроса.

4.png

 

НачисленияУдержанияВыплаты - это вложенный запрос, нажмем на «карандаш» (изменить). Перейдем во вложенный запрос.

5.png

 

И увидим, что нет ни одной выбранной таблицы запроса, но есть описание полей.

6.png

 

Перейдем на вкладку Объединения/Псевдонимы.

7.png

 

Тут наглядно видно, что описание поля «Значение(Справочник.Организации.ПустаяСсылка)» – это ОрганизацияСортировки. Описание поля «0» - это ПриоритетРабочегоМеста. Описание поля «» - это ФИОПолные. Описание поля ДАТАВРЕМЯ(1, 1, 1) – это ДатаНачала и тд.

Переходим на вкладку Дополнительно и видим, что данная «структура» помещена во временную таблицу ОбщиеЗапросы_НачисленияУдержания.

8.png


Далее из временной таблицы ОбщиеЗапросы_НачисленияУдержания выводятся все поля. Только в поле Таблицы она переименована, как Данные.

9.png

 

Откроем модуль объекта. Обратим внимание на процедуру ЗаполнитьОбщиеИсточникиДанныхОтчета. Тут как раз и происходит вся «магия», вернемся к процедуре позже.

10.png

 

Рассмотрим еще один типовой отчет.

 

Типовой отчет Воинский учет общий

В дереве конфигруации – отчеты, найдем и откроем отчет ВоинскийУчетОбщий.

11.png

 

Откроем схему компоновки данных.

12.png


Видим, что выбрана таблица справочник Сотрудники. В качестве полей выбрана ссылка и параметр период. 

Перейдем на вкладку Дополнительно. Видим, что создана временная таблица ВТСотрудники.

13.png

 

Далее в следующем пакете запросов видим, что выбрана таблица ВТСотрудники и далее описаны поля, как мы выдели в первом примере.

14.png

 

Перейдем на вкладку Дополнительно. Видим, что создана временная таблица Представления_КадровыеДанныеСотрудников.

15.png

 

В следующем пакете из таблицы Представления_КадровыеДанныеСотрудников выбраны поля Сотрудник и Дата приема.

16.png

 

Выбранные данные помещены во временную таблицу ВТПриемы.

17.png


В следующем пакете запросов из временной таблицы ВТПриемы выбраны пустые поля.

18.png

 

И на вкладке дополнительно создается временная таблица Представления_КадровыеДанныеСотрудников_ПриПриеме.

19.png

Подпишитесь на дайджест!
Подпишитесь на дайджест, и получайте ежемесячно подборку полезных статей.

В следующем пакете запросов информация выбирается из двух таблиц с префиксом Представления_.

20.png

 

Таблицы соединяются между собой по полю Сотрудник.

21.png

 

В общем модуле отчета ВоинскийУчетОбщий мы видим процедуру ЗаполнитьОбщиеИсточникиДанныхОтчета так же, как и в первом примере отчета.

22.png

 

В типовых отчетах мы увидели использование нескольких вариантов механизма представлений:

- ОбщиеЗапросы_НачисленияУдержания

- Представления_КадровыеДанныеСотрудников

- Представления_КадровыеДанныеСотрудников_ПриПриеме

Также обязательно в модуле объекта должна быть прописана процедура из общего модуля зарплата карды общие наборы данных – заполнить общие источники данных отчета.

Попытаемся создать отчет с использованием механизма «Представлений» самостоятельно. Посмотрим, как это работает. В создаваемом отчете с помощью механизма представления будем выводить должность и подразделение сотрудника. Некоторые подробности формирования отчета опустим, так как это в данный момент не имеет значения.

Добавим в расширение конфигурации 1С:ЗУП (демо) отчет Задача1_ВознаграждениеПоПроектам. Откроем схему компоновки данных. Набор данных запрос.

23.png

 

Первый запрос включает объединение двух виртуальных таблиц оборотов из регистра накопления начисления и удержания по сотрудникам:

В первом случае с параметром &ПремияНаПроекте:

24.png


Во втором случае с параметром &ОплатаПоОкладу:

25.png


Создадим временную таблицу ВТНачисления.

26.png

 

В следующем пакете запросов создадим временную таблицу ВТНачисленияГруппировка, где выберем данные из таблицы ВТНачисления, но с группировкой по сотруднику и периоду, суммируемые поля НачисленоПоОкладу, НачисленоПремии.

27.png

28.png

29.png

 

В следующем пакете запросов соединим таблицу ВТНачисленияГруппировка с таблицей регистра сведений ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников, создадим ключевую временную таблицу ВТДанные.

30.png

Чтобы подключить механизм Представлений и вытащить поля подразделение и должность, нужна таблица, где есть поля сотрудник и период. Возьмем эти поля из таблицы ВТДанные и поместим в таблицу ВТСотрудникиПериоды.

31.png

32.png

 

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

33.png 


Подразумеваем, что:

поле ДатаВремя(1, 1, 1) – это Период,

поле Значение(Справочник.Сотрудники.ПустаяСсылка) – это Сотрудник.

Поле сотрудник и период нужны для связи с таблицей ВТДанные.

Поле Значение(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) – это Подразделение.

Поле Значение(Справочник.Должности.ПустаяСсылка) – это Должность.

Поля подразделение и должность, как мы ожидаем, должны быть заполнены при выводе отчета с помощью механизма представлений.

34.png

Создадим временную таблицу Представления_СрезПоследних_КадроваяИсторияСотрудников.

Очень важно при использовании механизма представлений правильно называть таблицу. К сожалению, подробной методической информации по механизму представлений найти нигде нельзя. Можно только посмотреть через глобальный поиск конфигурации в макетах, какие варианты существуют.

35.png


Из таблицы Представления_СрезПоследних_КадроваяИсторияСотрудников вытащим поля Подразделение и Должность. Из таблицы ВТДанные все остальные поля.

36.png


Теперь соединим две таблицы ВТДанные и Представления_СрезПоследних_КадроваяИсторияСотрудников по полю сотрудник и период.

    37.png


Чтобы заполнилась таблица представлений, необходимо в модуле объекта отчета прописать процедуру из общего модуля ЗаполнитьОбщиеИсточникиДанныхОтчета, которая упоминалась ранее. Пропишем ее в процедуре ПриКомпоновкеРезультата в модуле объекта созданного отчета: ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ЭтотОбъект), где ЭтотОбъект – наш отчет.

 38.png


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

39.png

 

Мы рассмотрели, что в 1С:ЗУП существует удобный механизм, который позволяет не использовать в запросе явные физические таблицы, а лишь описать некий шаблон для их заполнения. Данный механизм называется механизмом Представлений. Это упрощает разработку отчетов в типовом решении 1С:ЗУП.


Заказать консультацию специалиста 1С
Оставьте заявку и наши эксперты проконсультируют вас по данной статье.
Отправить заявку
Рассказать друзьям
1С:ЗУП Для разработчиков 1С
Вам может быть интересно: