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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


В конце статьи хочу посоветовать вам бесплатный курс по компоновке данных от Сотникова Анатолия. Это курс от опытного программиста. Он на отдельной базе покажет вам, как строить отчеты в СКД. Вам только нужно внимательно слушать и запоминать! Вы получите ответы на такие вопросы:
  • Как создать простой отчет в виде списка?
  • Для чего нужны колонки Поле, Путь и Заголовок на закладке «Поля»?
  • Какие существуют ограничения для полей компоновки?
  • Как правильно настраивать роли?
  • Какие существуют роли для полей компоновки?
  • Где найти закладку компоновка данных в запросе?
  • Как настраивать параметры в СКД?
  • Дальше еще интереснее...
Наверное, не стоит самому стараться бороздить интернет в поисках нужной информации? Тем более все готово для применения. Только начните! Все подробности о том, что есть в бесплатных видеоуроках на странице автора.

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



  Пожалуйста, Войдите или Зарегистрируйтесь чтобы получить ссылку на скачивание.


Этот блог читают уже более 3000 человек
- читай и ТЫ!

0 ответы

Ответить

Want to join the discussion?
Feel free to contribute!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *