Настройка роли поля СКД со свойством «Период» в 1С
Доброго времени суток, уважаемые читатели блога SoftMaker.kz! В прошлой статье мы узнали, что такое роли полей СКД и для чего эти роли нужны. А сегодня во второй из этой серии статей, мы рассмотрим настройку роли со свойством «Период», а также рассмотрим примеры заполнения этих ролей. По полю с ролью «Период» рассчитывается остаток. Также, как и по полю с ролью «Измерение», о котором мы поговорим в другой раз. Итак, начнем!
Создадим новый отчет:
- В Конфигураторе выберем пункт меню «Файл» — «Новый» — «Внешний отчет».
- Нажмем на кнопку «Открыть схему компоновки данных». В открывшемся диалоге нажмем кнопку «Готово».
- Теперь создадим набор данных запрос, который обращается к виртуальной таблице «РегистрыНакопления».
- Нажмем правой кнопкой мыши на на узле «НаборыДанных» и выберем строчку «Добавить набор данных — Запрос».
- Теперь нажмем на кнопку «Конструктор запроса». Выберем регистр накопления «ТоварыНаСкладахОстаткиИОбороты» (конфигурация УТП).
- Откроем диалог «Параметры виртуальной таблицы» и укажем, что будет использоваться периодичность «Авто», то есть можно будет указывать несколько периодов.
Теперь настроим выходные поля. Пусть это будут следующие поля: «Регистратор», «ПериодМесяц», «Номенклатура», «Качество» и информация по остаткам. Добавление поля осуществляется двойным нажатием левой кнопки мыши на нужном поле или при помощи кнопки «>». После добавления полей нажмем кнопку «ОК».
Обратите внимание, что для некоторых полей автоматом настроилась роль со свойством «Период».
Рассмотрим, какие существуют настройки роли для свойства «Период». Во-первых, указывается порядковый номер периода. Нумерация должна быть непрерывной, начинаться с единицы, от младших периодов к старшим, то есть сначала будет идти, например, номер строки, далее «Регистратор», потом секунда, день, неделя, месяц, квартал, год.
Таким образом должны быть пронумерованы поля, которые встречаются в нашем запросе. Заметьте, что у нас есть два поля периода — «Регистратор» и «ПериодМесяц». Младшим полем является «Регистратор» ему присвоена единица, а старшим полем является «ПериодМесяц» ему присвоена двойка. Более подробно о порядке следования периодов мы рассмотрим в следующей статье.
Настроим наш отчет:
- Перейдем на закладку «Ресурсы» и определим ресурсы нашего отчета.
- Нажмем на кнопку «>>», чтобы выбрать все поля для ресурсов.
- Теперь перейдем на закладку «Настройки» и создадим настройку в виде списка.
- Нажмем на кнопку «Конструктор настроек компоновки данных» (кнопка в виде волшебной палочки).
- Тип отчета: «Список». Нажмем кнопку «Далее».
- Настроим выходные поля, нажав на кнопку «>>». Упорядочим их так: «ПериодМесяц», «Номенклатура», «Качество», «Регистратор».
- Нажмем кнопку «Далее» и настроим группировку. Группировку настроим в следующем порядке: «ПериодМесяц», «Номенклатура», «Качество». Группировка «Регистратор» будет выводиться в виде детальных записей.
- Нажмем кнопку «ОК».
Откроем наш отчет в режиме 1С:Предприятие. Если мы выполним этот отчет, то увидим некоторые особенности при получении остатков. Если внимательно присмотреться к результату отчета, то сразу заметно несколько ошибок. В частности, почему-то в самом начале периода деятельности компании существует начальный остаток.
И это ошибка связана с особенностью системы компоновки данных получать остатки по регистратору. Чтобы эти остатки выводились корректно, необходимо добавить еще одно поле в выходные поля запроса это поле «ПериодСекунда». Для добавления поля «ПериодСекунда» откроем отчет в Конфигураторе, нажмем на кнопку «Открыть схему компоновки данных». Теперь нажмем на кнопку «Конструктор запроса» и добавим «ПериодСекунда». В этом случае поле «Регистратор» у нас останется первым полем периода, «ПериодСекунда» будет вторым, а «ПериодМесяц» будет третьим.
Для чего нужна секунда? Система компоновки данных вычисляет остатки расчетным путем, и для того чтобы однозначно определить положение регистратора на временной оси самой ссылки на регистратор недостаточно, нужна еще и секунда, то есть дата этого регистратора, и тогда система компоновки сможет расчетным путем получить верный остаток. Если укажем правильный порядок полей и сформируем отчет заново, то получим:
Сейчас остатка на начало деятельности по номенклатуре «Плинтус» уже нет. Далее на следующий период он совпадает с конечным остатком, то есть мы видим действительно правильный результат. Пример отчета вы можете скачать по ссылке. Понравилась ли вам статья? Что можно изменить, что добавить? Не стесняйтесь делиться об этом в комментариях!
Спасибо! вы мне очень помогли.
Рад был помочь!
Попробовал. Не работает, Остатки не верные выдает.
Жаль… Проверьте еще раз ваши настройки…
Почему то остатки показывались не верными при выборе ещё одной из четырех группировок, со всеми другими были правильными.
Нашел причину. Надо было указать, что СырьеОстаткиИОбороты.МПЗ.ВидМатериала — ИЗМЕРЕНИЕ и там же выбрать Родителя — МПЗ. Всё хорошо, но появляются две строки с пустым регистратором, вначале и конце. Их бы ещё как то убрать.
Здорово, что получилось!