Настройка роли поля СКД со свойством «Период» в 1С

Доброго времени суток, уважаемые читатели блога SoftMaker.kz! В прошлой статье мы узнали, что такое роли полей СКД и для чего эти роли нужны. А сегодня во второй из этой серии статей, мы рассмотрим настройку роли со свойством «Период», а также рассмотрим примеры заполнения этих ролей. По полю с ролью «Период» рассчитывается остаток. Также, как и по полю с ролью «Измерение», о котором мы поговорим в другой раз. Итак, начнем!


Создадим новый отчет:

  1. В Конфигураторе выберем пункт меню «Файл» — «Новый» — «Внешний отчет».
  2. Нажмем на кнопку «Открыть схему компоновки данных». В открывшемся диалоге нажмем кнопку «Готово».
  3. Теперь создадим набор данных запрос, который обращается к виртуальной таблице «РегистрыНакопления».
  4. Нажмем правой кнопкой мыши на на узле «НаборыДанных» и выберем строчку «Добавить набор данных — Запрос».
  5. Теперь нажмем на кнопку «Конструктор запроса». Выберем регистр накопления «ТоварыНаСкладахОстаткиИОбороты» (конфигурация УТП).
  6. Откроем диалог «Параметры виртуальной таблицы» и укажем, что будет использоваться периодичность «Авто», то есть можно будет указывать несколько периодов.

Диалог параметров виртуальной таблицы Конструктора запросов

Теперь настроим выходные поля. Пусть это будут следующие поля: «Регистратор», «ПериодМесяц», «Номенклатура», «Качество» и информация по остаткам. Добавление поля осуществляется двойным нажатием левой кнопки мыши на нужном поле или при помощи кнопки «>». После добавления полей нажмем кнопку «ОК».

Конструктор запроса - формирование полей СКД

Обратите внимание, что для некоторых полей автоматом настроилась роль со свойством «Период».

Свойство «Период» для роли поля в наборе данных

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

Таким образом должны быть пронумерованы поля, которые встречаются в нашем запросе. Заметьте, что у нас есть два поля периода — «Регистратор» и «ПериодМесяц». Младшим полем является «Регистратор» ему присвоена единица, а старшим полем является «ПериодМесяц» ему присвоена двойка. Более подробно о порядке следования периодов мы рассмотрим в следующей статье.

Форма настройки поля «Регистратор»

Настроим наш отчет:

  1. Перейдем на закладку «Ресурсы» и определим ресурсы нашего отчета.
  2. Нажмем на кнопку «>>», чтобы выбрать все поля для ресурсов.
  3. Теперь перейдем на закладку «Настройки» и создадим настройку в виде списка.
  4. Нажмем на кнопку «Конструктор настроек компоновки данных» (кнопка в виде волшебной палочки).
  5. Тип отчета: «Список». Нажмем кнопку «Далее».
  6. Настроим выходные поля, нажав на кнопку «>>». Упорядочим их так: «ПериодМесяц», «Номенклатура», «Качество», «Регистратор».
  7. Нажмем кнопку «Далее» и настроим группировку. Группировку настроим в следующем порядке: «ПериодМесяц», «Номенклатура», «Качество». Группировка «Регистратор» будет выводиться в виде детальных записей.
  8. Нажмем кнопку «ОК».

Форма настройки полей СКД

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

Неправильный начальный остаток без поля «ПериодСекунда» в схеме компоновки

И это ошибка связана с особенностью системы компоновки данных получать остатки по регистратору. Чтобы эти остатки выводились корректно, необходимо добавить еще одно поле в выходные поля запроса это поле «ПериодСекунда». Для добавления поля «ПериодСекунда» откроем отчет в Конфигураторе, нажмем на кнопку «Открыть схему компоновки данных». Теперь нажмем на кнопку «Конструктор запроса» и добавим «ПериодСекунда». В этом случае поле «Регистратор» у нас останется первым полем периода, «ПериодСекунда» будет вторым, а «ПериодМесяц» будет третьим.

Для чего нужна секунда? Система компоновки данных вычисляет остатки расчетным путем, и для того чтобы однозначно определить положение регистратора на временной оси самой ссылки на регистратор недостаточно, нужна еще и секунда, то есть дата этого регистратора, и тогда система компоновки сможет расчетным путем получить верный остаток. Если укажем правильный порядок полей и сформируем отчет заново, то получим:

Правильный начальный остаток после добавления «ПериодСекунда» в схеме компоновки

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

ПОДПИСКА

7 ответы
  1. Любовь говорит:

    Спасибо! вы мне очень помогли.

  2. ogion говорит:

    Попробовал. Не работает, Остатки не верные выдает.

  3. softmaker говорит:

    Жаль… Проверьте еще раз ваши настройки…

  4. ogion говорит:

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

  5. ogion говорит:

    Нашел причину. Надо было указать, что СырьеОстаткиИОбороты.МПЗ.ВидМатериала — ИЗМЕРЕНИЕ и там же выбрать Родителя — МПЗ. Всё хорошо, но появляются две строки с пустым регистратором, вначале и конце. Их бы ещё как то убрать.

Комментарии закрыты.