4. Регистры Рассмотрим предназначение регистров, ...

Создано: 13 апреля 2025 г.

Отвечено с использованием O3 Mini High от Chat01

Вопрос

  1. Регистры
    Рассмотрим предназначение регистров, виды регистров, изобразим как
    выгладят регистры, поговорим об их проектировании и хранении данных.
    Традиционно общая схема движения информации в 1С такая:
    Документы → Регистры → Отчеты
    Кто-то может сказать, что вся входная информация у нас уже хранится в
    справочниках и документах, а следовательно, все отчеты можно построить на
    основании этой информации. Но дело в том, что такие отчеты будут
    формироваться ОЧЕНЬ долго.
    Регистры предназначены для увеличения скорости считывания
    определенных (аналитических) показателей по деятельности предприятия.
    Показатели хранятся в регистрах в определенных разрезах, с учетом
    периодичности.
    Регистр — структура определенного вида, которая позволяет получать
    данные с одинаковой скоростью, не зависимо от объёма БД, без них выдача
    результата будет медленная.
    Итак, запомним, регистры – основание для отчетов, а данные добавляются в
    регистры при проведении документов.
    Различные регистры предназначены для хранения различных показателей:
    ПОКАЗАТЕЛИ НАКОПЛЕНИЯ. Для их учета предназначены регистры
    накопления. Данные регистры бывают двух типов, но оба могут
    накапливаться только числовые показатели.
    65
    Регистр накопления (остаточный). Увеличивается при поступлении и
    уменьшается при продаже. На каждый момент времени регистр должен
    помнить остаток измеряемого показателя (например, остаток товара, остаток
    денежных средств и т.д.).
    Регистр накопления (оборотный). Предназначен для хранения показателей,
    которые могут расти только в одну сторону. Например, данные о продажах
    (отрицательных продаж быть не может). В случае возврата товара он будет
    регистрироваться с отрицательным знаком.
    ПОКАЗАТЕЛИ СОСТОЯНИЯ. Для хранения характеристик какого-либо
    объекта, предназначен регистр сведений (в том числе во времени).
    Регистр сведений, имеет абсолютно любой тип данных. Например, в
    регистре сведений может хранится курсы валют на каждый день. А можем
    хранить прогноз погоды на каждый день, в каждом городе РФ.
    Есть и другие виды регистров: Регистры бухгалтерии, Регистры расчета, с
    ними мы познакомимся с других курсах.
    Приступим к проектированию регистров. Очень важно правильно
    спроектировать структуру регистра, т.к. структура регистра приводит к
    увеличению объёма БД, увеличивается время записи в регистр,
    увеличивается сложность разработки. Структуру регистра необходимо
    определять сразу, т.к. её изменение в дальнейшем является весьма сложным
    процессом.
    Фактически регистр представляет собой таблицу с записями, колонки
    которой могут быть измерениями, ресурсами и реквизитами.
    66
    Измерения
    Ресурсы
    Измерение1
    Реквизиты
    Измерение2
    Измерение3 Ресурс1 Ресурс2


    … … …
    Реквизит



    … … …

    При определении измерений рекомендуется указывать ссылочный тип
    данных
    (на
    справочники,
    документы,
    перечисления).
    Порядок измерений влияет на скорость получения данных из регистра.
    Поэтому при проектировании регистра важно понимать, как часто
    пользователь будет получать остатки по каждому измерению. Все измерения
    в порядке следования.
    Ресурсы - числовые данные, которые характеризуют собой некоторые
    показатели (ресурс регистра сведений может иметь любой тип данных).
    Ресурсы представляют собой значения, которое хранятся на пересечении
    измерении.
    Реквизит - некая дополнительная характеристика регистра, не отображается
    при получении итогов. Реквизиты регистров могут иметь любой тип данных.
    А теперь повторим то же самое, но более простым языком и на конкретном
    примере.
    Ресурсы – это то, что мы хотим считать и/или измерять в нашем регистре.
    Измерения – в каких разрезах мы хотим считать наши ресурсы.
    67
    Реквизиты – некий комментарий, который не является ни аналитическим
    разрезом, ни измеряемым показателем. В нашем примере мы не будем
    использовать реквизиты.
    Пример 1
    Допустим, мы проектируем систему складского учета. А нам надо учитывать
    количество товара на каждом складе. Какой регистр нам понадобится?
    Очевидно, что мы хотим знать остатки товара, значит нам понадобится
    регистр накопления с типом – остатки.
    Чтобы понять, что у нас будет в ресурсах надо ответить на вопрос – что мы
    хотим измерять? Мы хотим знать количество товара. Наши ресурсы готовы:
    КоличествоТовара (тип данных - число)
    А в каких разрезах мы хотим это измерять? Мы хотим знать какой конкретно
    товар и на какой складе. Значит наши измерения:
    Товар (тип данных – справочник «Товары»)
    Склад (тип данных – справочник «Склад»)
    Пример 2
    Автоматизируем магазин. Мы захотели узнать сколько какого товара продает
    каждый наш сотрудник. Какой регистр нам понадобится? Продажи
    сотрудников накапливают – да, значит регистр накопления. А можно ли
    посчитать остатки продаж? Нет, это вообще непонятно что такое.
    Количество продаж может только увеличиваться, значит нам понадобится
    регистр накопления с типом – обороты.
    68
    Чтобы понять, что у нас будет в ресурсах надо ответить на вопрос – что мы
    хотим измерять? Мы хотим знать количество и сумму продаж. Наши ресурсы
    готовы:
    КоличествоПродаж (тип данных - число)
    СуммаПродаж (тип данных - число)
    А в каких разрезах мы хотим это измерять? Мы хотим знать какой товар
    продан и какой сотрудник его продал:
    Товар (тип данных – справочник «Товары»)
    Сотрудник (тип данных – справочник «Сотрудники»)
    Пример 3
    Снова автоматизируем магазин. Нам надо где-то хранить цены наших
    товаров. Причем цены могут со временем меняться, но старые цены мы тоже
    должны сохранять. Следовательно, просто создать такой реквизит в
    справочнике не получится.
    Какой регистр нам понадобится? В этой ситуации ничего не накапливается,
    регистр нужен для хранения сведений о ценах, значит нам понадобится
    регистр сведений. Причем нам надо хранит цену на один и тот же товар в
    разные периоды времени. Значит регистр должен быть периодическим.
    Чтобы понять, что у нас будет в ресурсах надо ответить на вопрос – что мы
    хотим измерять? Мы хотим цену товара. Наши ресурсы готовы:
    ЦенаТовара (тип данных - число)
    А в каких разрезах мы хотим это измерять? Очевидно, что в разрезе товаров,
    измерения:
    69
    Товар (тип данных – справочник «Товары»)
    Вернемся к нашей задаче. Вспомним, что информация из регистров нужна
    для формирования отчетов, а отчеты нам нужны следующие:
    • Состояние заказов
    • Заработная плата сотрудников
    • Постоянные клиенты
    • Популярные услуги
    • Периодичность спроса
    Для отчета «Состояние заказов» ничего накапливать не нужно, но нужно
    знать состояние заказа (выполнен/не выполнен). В момент проведения
    документ Заказ мы будем сохранять в регистре информацию о том, что заказ
    еще не выполнен, в момент проведения акта – о том, что выполнен.
    Спроектируем регистр сведений.
    Измерения:
    • Заказ (тип данных «документ Заказ»)
    Ресурсы:
    • Состояние (тип данных Строка»)
    В конфигураторе добавим новый регистр сведений.
    70
    Назовем новый регистр СостояниеЗаказов.
    Режим записи: подчинение регистратору. Это означает, что записи в данный
    регистр будут попадать в момент проведения документов.
    Периодичность: по позиции регистратора
    Закладку Подсистемы пропустим, т.к. пользователю не надо видеть
    регистры, соответственно регистр можно не определять в какую-то
    подсистему.
    Заполним закладку данные:
    71
    А на закладке Регистраторы отметим документы, которые будут вносить
    изменения в наш регистр.
    Для отчета «Заработная плата сотрудников» надо накапливать сумму денег,
    которую они заработали на каждой заказе. Величина эта оборотная, т.к.
    может только увеличиваться. Нам нужен регистр накопления с типом –
    72
    обороты. Добавлять записи в этот регистр мы будем в момент проведения
    документа акт выполненных работ.
    Измерения:
    • Сотрудник (тип данных «справочник Сотрудники»)
    Ресурсы:
    • Сумма (тип данных Число(10,2))
    В конфигураторе добавим новый регистр накопления.
    Назовем новый регистр ЗаработнаяПлатаСотрудников.
    Вид регистра: обороты
    Обратите внимание, что регистры накопления всегда подчинены
    регистратору, невозможно установить независимый режим записи.
    73
    Данные:
    Регистраторы:
    74
    Отчет «Долги клиентов». Тут надо не только накапливать, но и знать остаток
    задолженности на каждый день. Нам нужен регистр накопления с типом –
    остатки. Добавлять записи в этот регистр мы будем в момент проведения
    документов акт выполненных работ и оплата.
    Измерения:
    • Клиент (тип данных «справочник Клиенты»)
    • Акт (тип данных «документ Акт выполненных работ»)
    Ресурсы:
    • Сумма (тип данных Число(10,2))
    Добавьте такой регистр в систему. Назовем его ЗадолженностиКлиентов.
    75
    Перейдем к отчетам «Постоянные клиенты», «Популярные услуги»,
    «Периодичность спроса». Для того, чтобы узнать кто из клиентов является
    постоянным нам необходимо знать, какие клиенты часто приобретают наши
    услуги. Но и для двух других отчетов нам нужно то же самое.
    Нам нужен регистр накопления с типом – обороты. Добавлять записи в этот
    регистр мы будем в момент проведения документа акт выполненных работ.
    Измерения:
    • Услуга (тип данных «справочник Услуги»)
    • Клиент (тип данных «справочник Клиенты»)
    Ресурсы:
    • Количество (тип данных Число(5,0))
    • Сумма (тип данных Число(10,2))
    Добавьте такой регистр в систему. Назовем его Продажи.
    Итак, все регистры у нас готовы. Но чтобы в них начала попадать
    информация (записи регистра) нам нужен, программный код, который будет
    выполняться при проведении документов.
    Начнем с регистра СостояниеЗаказов. Откроем в конфигураторе документ
    Заказ и перейдем на закладку Движения. Здесь мы можем увидеть, что в
    списке регистров галочкой отмечен регистр СостояниеЗаказов. Появилась
    она потому, что мы указали документ Заказ в качестве регистратора для
    данного регистра.
    76
    Нажмем на кнопку «Конструтор движений», которая находится на этой же
    вкладке. В открывшемся окне нам будет предложено заполнить значения,
    которые будут записываться в регистр. В поле Заказ мы будем записывать
    ссылку на сам документ, а в поле Состояние – строковое значение «Не
    выполнен».
    Нажмем OK. Появится автоматически сгенерированная обработка
    проведения.
    77
    Расположена она в предопределенной процедуре ОбработкаПроведения,
    которая вызывается каждый раз, когда документ Заказ проводится.
    Расположена данная процедура в модуле объекта документа Заказ. Мы уже
    работали с модулем менеджера, а теперь столкнулись с модулем объекта. В
    чем разница?
    Как вы помните, в модуль менеджера передавался список документов,
    которые необходимо напечатать. В модуль объекта ничего передавать не
    надо, он уже все знает про текущий документ. Модуль объекта является
    частью текущего документа. Как вы можете видеть в программном коде, мы
    обращаемся к реквизитам текущего документа (Дата, Ссылка) напрямую. Но
    при этом модуль объекта должен производить манипуляции только с
    текущим документом.
    В
    целом сгенерированный программный код интуитивно понятен.
    Добавляется новая запись в регистр, заполняются ее параметры.
    Единственное,
    что
    нужно
    отметить
    Движения.СостояниеЗаказов.Записывать = Истина. –
    это
    строчка
    Если не указать, что регистр нужно записывать, то запись добавится в
    оперативную память, а в конце процедуры просто исчезнет. Такую ошибку
    часто допускают начинающие разработчики.
    Теперь надо проверить, работает ли данный программный код. Но как
    увидеть записи в регистре, если мы сами не указали ему подсистему, и
    78
    регистр не виден в пользовательском режиме? Очень просто. Запускаем
    1С:Предприятие, переходим в список документов Заказ, выделяем все
    документы нажатием CTRL+A, жмем на документы правой кнопкой мыши, и
    в открывшемся контекстном меню жмем Провести.
    После этого все три документа должны были заново провестить. Должно
    было сработать три процедуры ОбработкаПроведения, и в регистр должны
    были попасть три записи о том, что заказы не выполнены.
    Убедимся в этом. В левом верхнем углу раскроем главное меню и выберем
    пункт «Все функции».
    Откроется уже знакомое нам дерево конфигурации, но уже в
    пользовательском режиме. Выберем регистр сведений «Состояние заказов».
    79
    Мы увидим форму записей регистра сведений, в которой будут как раз те три
    записи, которые мы предполагали.
    Теперь необходимо, чтобы акт выполненных работ делал запись о
    выполненном заказе. Это будет немного сложнее, т.к. акт делает движения по
    многим регистрам.
    80
    Поэтому, когда мы нажмем на «Конструктор движений» мы увидим форму
    выбора регистра. Выберем регистр «СостояниеЗаказов».
    81
    В конструкторе заполним поля регистра. Обратите внимание, что в прошлый
    раз для поля Заказ мы подставляли значение Ссылка, т.к. документ Заказ
    заполнял в регистре ссылку на самого себя. В документ Акт ссылка на
    документ Заказа называется Заказ.
    Получим следующую процедуру проведения.
    Помните, что для того, чтобы в регистре появились записи, которые мы
    хотим получить данным программный кодом, документ Акт необходимо
    82
    провести (!). Тогда сработает ОбработкаПроведения и добавятся записи в
    регистр.
    Перейдем к регистру Продажи. Движения по нему делает документ Акт. Для
    этого документа мы уже создали процедуру обработка проведения. Поэтому,
    когда мы нажмем на «Конструктор движений» мы увидим следующий
    вопрос.
    Ответим утвердительно.
    Откроется знакомое окно, причем все параметры, заполненные нами ранее,
    останутся на своих местах. Добавим в конструктор новый регистр:
    83
    В списке регистров добавится регистр Продажи.
    Данные, которые мы хотим записывать в регистр, находятся в табличной
    части документа. Поэтому в поле «Табличная часть» надо выбрать
    табличную часть «Услуги».
    Так как наименование полей в регистре и в документе у нас полностью
    совпадают, то мы можем воспользоваться кнопкой «Заполнить выражения».
    Данная команда ищет соответствия (по имени и типу) между реквизитами
    документа и регистра и подставляет подходящие.
    84
    Как мы можем видеть в нашем случае эта процедура отработала блестяще.
    Услуга, количество и сумма будут браться из табличной части документа.
    Клиент – из шапки.
    Нажмем OK.
    85
    Как видим в ранее созданную процедуру добавился программный код,
    создающий записи в регистре Продажи.
    Перейдем к регистру ЗаработнаяПлатаСотрудников. Аналогично добавим
    этот регистр в конструктор. И точно также воспользуемся автоматическим
    заполнением полей регистра по кнопке «Заполнить выражения».
    86
    Получим новый программный код в процедура проведения.
    Что нам не нравится в этом коде? Сейчас в сумму, начисляемую сотруднику,
    попадает вся сумма оказанных услуг. А ведь должен попадать только
    процент от этой суммы.
    Вспомним, что ПроцентСотрудника – это реквизит справочника Услуги.
    Поэтому можно его получить из услуги в текущей строке. Не забудем
    разделить результат на 100.
    87
    Переходим к регистру ЗадолженностиКлиентов. Для него форма
    конструтора будет выглядеть следующим образом.
    Обратите внимание, что первый наш регистр накопления с типов Остатки, и
    для него надо задавать вид движения Приход/Расход.
    Какой это будет тип движения нам надо решить самостоятельно. Давайте
    договоримся, что, когда мы оказали услуги и клиент должен нам денег – это
    будет движение с приходом. А когда клиент производит оплату, и мы
    проводим документ оплата – будет движение с расходом.
    Получается следующий код:
    88
    Как видите, здесь появилась новая строчка, влияющая на тип движения.
    И наконец, добавим расход по регистру ЗадолженностиКлиентов в
    документ Оплата.
    И итоговый код.
    89
    На этом работа с регистрами закончена. Не забудьте перепровести все
    документы, чтобы сформировались все записи в регистрах.
    После этого через «Все функции» проверьте, чтобы все записи попали в
    соответствующие регистры.

Что нужно сделать

Мысль

NoneDescribing tasks for registers design

From the user’s question, it seems we’re asked to summarize tasks related to designing registers in the 1C system. The steps include:

  • Understanding the purpose and functionality of registers.
  • Considering dimensions and resources, alongside requisites when needed.
  • Choosing the right register type (accumulation, state, etc.).
  • Designing various registers like warehouse accounting or sales.
  • Setting up configurations in the 1C system and generating movement code.
  • Testing registers via the system to confirm updates.

It's a process of thoughtful design and validation of data flow.

Reasoned about register design in 1C for 24 seconds

Ответ

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


1. Определить назначение и типы регистров

  • Назначение регистров:
    Регистры используются для быстрого получения аналитических показателей, они служат промежуточным звеном между исходными данными (документами, справочниками) и отчетами. Это позволяет увеличить скорость формирования отчетов, так как нужные данные уже агрегированы в специальных таблицах.

  • Основные типы регистров:

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

2. Проектирование структуры регистра

  • Структура регистра:
    Регистры представляют собой таблицы, где записи состоят из:

    • Измерений: аналитические разрезы, по которым производится группировка данных. Рекомендуется использовать ссылочные типы данных (например, на справочники, документы или перечисления). Порядок измерений влияет на скорость получения результатов.
    • Ресурсов: числовые (или другого типа) показатели, которые будут суммироваться или агрегироваться.
    • Реквизитов (опционально): дополнительные характеристики, не влияющие на аналитический разрез, например, комментарии.
  • Примеры проектирования:

    • Складской учет:
      • Ресурс: количество товара (число).
      • Измерения: товар (ссылка на справочник «Товары») и склад (ссылка на справочник «Склад»).
      • Тип регистра – накопления с типом «остатки».
    • Учёт продаж сотрудников в магазине:
      • Ресурсы: количество продаж и сумма продаж (числовые показатели).
      • Измерения: товар (справочник «Товары») и сотрудник (справочник «Сотрудники»).
      • Тип регистра – накопления с типом «оборотный», так как продажи могут только увеличиваться.
    • Хранение цен товаров:
      • Ресурс: цена товара (число).
      • Измерение: товар (справочник «Товары»).
      • Используется регистр сведений, поскольку важна история изменения цен.

3. Создание регистров в конфигураторе 1С

  • Добавление нового регистра:
    В конфигураторе нужно создать соответствующие регистры (накопления или сведений) и задать им:

    • Имя регистра.
    • Режим записи: как правило, «подчинение регистратору», чтобы данные добавлялись в момент проведения документов.
    • Периодичность: если требуется хранить данные по периодам (например, по дням).
    • Подсистему: регистр можно не показывать пользователю, если он нужен только для формирования отчетов.
  • Указание регистраторов (документов):
    После создания регистра в конфигураторе нужно на соответствующих документах (например, «Заказ», «Акт выполненных работ», «Оплата») в закладке «Движения» отметить данный регистр, чтобы при проведении документа автоматически выполнялось заполнение регистра.


4. Программирование движений регистров

  • Использование конструктора движений:
    При нажатии кнопки «Конструктор движений» автоматически генерируется программный код, который:

    • Создаёт новую запись в регистре.
    • Заполняет поля из текущего документа (например, поля «Ссылка», дата, значения ресурсов и измерений).
    • Для некоторых регистров могут понадобиться дополнительные вычисления (например, при начислении заработной платы сотрудникам – необходимо учитывать процент от суммы продажи).
  • Особенности:

    • В регистр необходимо обязательно установить свойство записи (например, Движения.ИмяРегистра.Записывать = Истина), иначе запись не попадёт в оперативную базу.
    • Если у документа несколько табличных частей или реквизитов, можно воспользоваться кнопкой «Заполнить выражения», чтобы автоматически сопоставить поля документа и регистра.

5. Тестирование и проверка работы регистров

  • Проведение документов:
    Все документы, участвующие в формировании движений по регистрам, необходимо провести. Проведение запускает сгенерированные процедуры, в которых происходит запись данных в регистры.

  • Проверка записей:
    После проведения документов запустите 1С:Предприятие и через меню «Все функции» откройте формы соответствующих регистров (например, «Состояние заказов», «Продажи», «ЗаработнаяПлатаСотрудников», «ЗадолженностиКлиентов»).
    Проверьте, что записи сформированы корректно и данные соответствуют ожиданиям.


Итог

В итоге необходимо выполнить следующие действия:

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

Эти шаги обеспечат корректное накопление данных для последующего формирования отчетов (по состоянию заказов, заработной плате, долгов клиентов, популярным услугам и периодичности спроса), а также гарантируют быстрое получение аналитических показателей независимо от объёма базы данных.

Вопрос

по примеру распиши подробно

Ответ

Ниже приведён максимально детальный разбор на примере, как пошагово создать и настроить регистры (накопления и сведений) в 1С, а также как связать их с документами, чтобы при проведении документов данные записывались в эти регистры.


1. Общие принципы и подготовка

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

    • Если нужно хранить остатки (например, остаток денежных средств, задолженность, остаток товара) – используйте Регистр накопления (остатки).
    • Если нужно накапливать обороты (например, продажи, сумма начисления зарплаты), то есть величины, которые могут только увеличиваться (при возврате – отрицательный оборот) – используйте Регистр накопления (обороты).
    • Если нужно хранить сведения (характеристики объектов во времени или без него, например, состояние заказа, цены товаров, курсы валют), используйте Регистр сведений.
  2. Определите измерения и ресурсы:

    • Измерения – это разрезы аналитики (какой товар, какой клиент, какой сотрудник и т. п.).
    • Ресурсы – это числовые (или иные) показатели, которые нужно суммировать, хранить и отражать в отчетах (количество, сумма, цена, т.д.).
    • Реквизиты (опционально) – дополнительная информация, не влияющая на аналитический разрез (комментарии, статусы и пр.).
  3. Продумайте, какие документы будут являться регистраторами, то есть будут при проведении записывать данные в регистр. Это важно, потому что именно при проведении документов формируются движения регистров.


2. Пример 1: Регистр сведений «СостояниеЗаказов»

Шаг 2.1: Создание регистра сведений

  1. Откройте конфигуратор 1С.
  2. В дереве конфигурации найдите ветку «Планы видов характеристик/Планы счетов/Планы видов расчетов», а чуть ниже – «Регистры сведений» (в зависимости от версии 1С название может немного отличаться).
  3. Кликните правой кнопкой мыши на «Регистры сведений» и выберите «Создать».
  4. В окне свойств нового регистра заполните:
    • Имя: «СостояниеЗаказов» (или другое подходящее имя).
    • Режим записи: «Подчинение регистратору». (Чтобы данные записывались при проведении документа.)
    • Периодичность: «По позициям регистратора» (или «Нет», если не нужна история изменений по времени).

Шаг 2.2: Определение структуры (Измерения, Ресурсы, Реквизиты)

  1. Перейдите на закладку «Данные» регистра.

  2. Создайте Измерение:

    • Имя: «Заказ».
    • Тип: «ДокументСсылка.Заказ» (ссылка на документ «Заказ»).
  3. Создайте Ресурс:

    • Имя: «Состояние».
    • Тип: «Строка».

    Таким образом, мы сможем хранить строковое описание состояния (например, «Не выполнен», «Выполнен»).

  4. Реквизитов здесь не нужно, поэтому пропускаем.

Шаг 2.3: Указание регистраторов

  1. Перейдите на закладку «Регистраторы» нового регистра «СостояниеЗаказов».
  2. Отметьте галочкой документ «Заказ» и документ «Акт выполненных работ», так как они оба будут менять состояние заказов:
    • Документ «Заказ» при проведении будет ставить «Не выполнен».
    • Документ «Акт выполненных работ» при проведении будет ставить «Выполнен».

Шаг 2.4: Автоматическая генерация движений в документе «Заказ»

  1. Откройте в конфигураторе объект «Документ Заказ».
  2. Перейдите на закладку «Движения» (появилась после того, как мы указали этот документ регистратором).
  3. Вы увидите, что в списке регистров стоит галочка на «СостояниеЗаказов».
  4. Нажмите кнопку «Конструктор движений».
  5. В открывшемся окне для поля «Заказ» укажите Ссылка (т. е. текущий документ).
  6. Для поля «Состояние» введите строку «Не выполнен».
  7. Нажмите «ОК», сгенерируется программный код в процедуре ОбработкаПроведения() (модуль объекта документа). Обратите внимание, что добавится строка:
    bsl
    Движения.СостояниеЗаказов.Записывать = Истина;
    Без неё записи в регистр не сохранятся.

Шаг 2.5: Генерация движений в документе «Акт выполненных работ»

  1. Откройте в конфигураторе «Документ Акт выполненных работ».
  2. Аналогично перейдите на закладку «Движения».
  3. Там также появится возможность выбрать регистр «СостояниеЗаказов».
  4. Нажмите «Конструктор движений» и заполните:
    • Поле «Заказ» – это реквизит документа «Акт» (обычно называется «Заказ»).
    • Поле «Состояние» – строка «Выполнен».
  5. Сохраните сгенерированный код, где также будет строка Движения.СостояниеЗаказов.Записывать = Истина;.

Шаг 2.6: Проверка результата

  1. Запустите 1С:Предприятие.
  2. Зайдите в список документов «Заказ», выделите все записи и нажмите Правой кнопкой«Провести». Это запустит процедуру проведения и заполнит регистр сведений «СостояниеЗаказов».
  3. Зайдите в список документов «Акт выполненных работ», проведите нужные документы (там, где указан «Заказ»).
  4. Откройте меню «Все функции» (в левом верхнем углу в режиме Предприятие) → найдите «Регистр сведений СостояниеЗаказов» и посмотрите, какие записи сформированы.

3. Пример 2: Регистр накопления (оборотный) «Продажи»

Пусть в нашей системе документы «Акт выполненных работ» должны фиксировать продажи: какие услуги оказаны и какова их сумма.

Шаг 3.1: Создание регистра накопления

  1. В конфигураторе найдите «Регистры накопления».
  2. Кликните правой кнопкой → «Создать».
  3. Название: «Продажи».
  4. Вид регистра: «Обороты», так как мы накапливаем показатели, которые растут (продажи).

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

Шаг 3.2: Определение структуры

  1. Перейдите на закладку «Данные».
  2. Измерения:
    • «Услуга» (ссылка на справочник «Услуги»).
    • «Клиент» (ссылка на справочник «Клиенты»).
  3. Ресурсы:
    • «Количество» (тип «Число(5,0)»).
    • «Сумма» (тип «Число(10,2)»).

Шаг 3.3: Указание регистратора

  1. Перейдите на закладку «Регистраторы».
  2. Установите галочку на «Документ Акт выполненных работ».

Важно: регистры накопления всегда подчинены регистратору, поэтому другие режимы записи здесь недоступны.

Шаг 3.4: Настройка движений в документе «Акт выполненных работ»

  1. Откройте документ «Акт выполненных работ» → закладка «Движения».
  2. Нажмите «Конструктор движений». Если уже есть движения для других регистров, система спросит, хотите ли вы их перезаписать или дополнить – выберите «Дополнить».
  3. В появившемся окне конструктора добавьте регистр «Продажи»:
    • Укажите, что данные берутся из табличной части «Услуги» (если в документе «Акт» именно так называется ТЧ).
    • Заполните выражения:
      • «Услуга» = «Услуга».
      • «Клиент» = «Клиент» (обычно реквизит шапки).
      • «Количество» = «Количество».
      • «Сумма» = «Сумма».
    • Нажмите «ОК».
  4. В сгенерированном коде появятся конструкции вида:
    bsl
    Для Каждого ТекСтр из ЭтотОбъект.Услуги Цикл НоваяСтрока = Движения.Продажи.Добавить(); НоваяСтрока.Период = Дата; НоваяСтрока.Клиент = Клиент; НоваяСтрока.Услуга = ТекСтр.Услуга; НоваяСтрока.Количество = ТекСтр.Количество; НоваяСтрока.Сумма = ТекСтр.Сумма; КонецЦикла; ... Движения.Продажи.Записывать = Истина;

Шаг 3.5: Проверка результата

  1. Проведите несколько документов «Акт выполненных работ».
  2. Через «Все функции»«Продажи» посмотрите сформированные записи.

4. Пример 3: Регистр накопления (оборотный) «ЗаработнаяПлатаСотрудников»

В нашем примере мы хотим учитывать начисление зарплаты сотрудникам на основании оказанных услуг, но это не остатки, а именно накапливаемые обороты (зарплата может только расти). Пусть документ «Акт выполненных работ» также формирует эти движения.

Шаг 4.1: Создание регистра

  1. «Регистры накопления»«Создать» → Назовём «ЗаработнаяПлатаСотрудников».
  2. Вид: «Обороты».

Шаг 4.2: Структура

  1. Измерения:
    • «Сотрудник» (ссылка на справочник «Сотрудники»).
  2. Ресурсы:
    • «Сумма» (Число(10,2)).

Шаг 4.3: Указание регистратора

  • На закладке «Регистраторы» отметьте документ «Акт выполненных работ».

Шаг 4.4: Движения в документе «Акт выполненных работ»

  1. Откройте документ «Акт выполненных работ» → закладка «Движения» → «Конструктор движений».

  2. Добавьте новый регистр «ЗаработнаяПлатаСотрудников».

  3. В поле «Сумма» мы можем автоматически подставить «Сумма» из табличной части, но по условию нужно начислять процент от суммы, указанный в справочнике «Услуги». Например:

    bsl
    НоваяСтрока.Сумма = ТекСтр.Сумма * ТекСтр.Услуга.ПроцентСотрудника / 100;

    Чтобы учесть это, после генерации кода зайдите в модуль объекта «Акт выполненных работ» и внесите поправки вручную, заменив присвоение суммы на нужное выражение.

  4. Не забудьте в конце движения прописать Движения.ЗаработнаяПлатаСотрудников.Записывать = Истина;.

Шаг 4.5: Проверка

  • Проведите документ «Акт выполненных работ», убедитесь, что для каждого сотрудника в регистре «ЗаработнаяПлатаСотрудников» появились записи с суммой, рассчитанной по формуле.

5. Пример 4: Регистр накопления (остатки) «ЗадолженностиКлиентов»

Допустим, нам нужно учитывать задолженность клиентов: когда мы оказываем услуги – задолженность растёт (приход), когда клиент платит – задолженность уменьшается (расход). Для этого подойдёт регистр накопления с видом «Остатки», так как нам важны и обороты, и остаток на любую дату.

Шаг 5.1: Создание регистра

  1. «Регистры накопления»«Создать» → Название «ЗадолженностиКлиентов».
  2. Вид: «Остатки».

Шаг 5.2: Структура

  1. Измерения:
    • «Клиент» (справочник «Клиенты»).
    • «Акт» (документ «Акт выполненных работ») – это чтобы детализировать задолженность по конкретному акту.
  2. Ресурсы:
    • «Сумма» (Число(10,2)).

Шаг 5.3: Указание регистраторов

  • На закладке «Регистраторы» отметьте:
    • Документ «Акт выполненных работ» (при проведении – приход задолженности).
    • Документ «Оплата» (при проведении – расход задолженности).

Шаг 5.4: Движения в документе «Акт выполненных работ» (приход)

  1. В документе «Акт выполненных работ» → «Движения» → «Конструктор движений».
  2. Добавьте регистр «ЗадолженностиКлиентов».
  3. Заполните поля:
    • «Клиент» = «Клиент» (шапка документа).
    • «Акт» = «Ссылка» (или реквизит «Акт», если так называется).
    • «Сумма» = «Сумма» (например, из табличной части или из шапки документа).
    • «ВидДвижения» = «Приход».
  4. Сгенерируется код вроде:
    bsl
    НоваяСтрока.ВидДвижения = ВидДвиженияНакопления.Приход;
    И не забудьте Движения.ЗадолженностиКлиентов.Записывать = Истина;.

Шаг 5.5: Движения в документе «Оплата» (расход)

  1. Откройте документ «Оплата» → «Движения» → «Конструктор движений».
  2. Добавьте регистр «ЗадолженностиКлиентов».
  3. Укажите:
    • «Клиент» = «Клиент».
    • «Акт» (если для каждой оплаты указываете, какой именно акт она закрывает). Иначе можно это измерение не использовать, смотрите по логике учёта.
    • «Сумма» = «Сумма оплаты».
    • «ВидДвижения» = «Расход».
  4. Сгенерированный код будет иметь вид:
    bsl
    НоваяСтрока.ВидДвижения = ВидДвиженияНакопления.Расход; Движения.ЗадолженностиКлиентов.Записывать = Истина;

Шаг 5.6: Проверка и формирование остатков

  1. Проведите документ «Акт выполненных работ» – увеличится долг (приход).
  2. Проведите документ «Оплата» – долг уменьшится (расход).
  3. Через «Все функции» → «ЗадолженностиКлиентов» смотрите движения.
  4. В отчетах (или в механизме «Остатки и обороты» для регистра) вы можете видеть остаток задолженности на любую дату.

6. Итоговая проверка и перепроведение документов

После того, как вы создали и настроили все регистры:

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

Если всё отображается верно, значит регистры настроены правильно и готовы к использованию в ваших отчетах.


Заключение

В результате пошаговых действий у вас должны получиться:

  1. Регистр сведений «СостояниеЗаказов» для хранения статусов заказов (выполнен/не выполнен).
  2. Регистр накопления (оборотный) «Продажи» для учёта каких товаров/услуг сколько и на какую сумму продано (по клиентам, сотрудникам и т. п.).
  3. Регистр накопления (оборотный) «ЗаработнаяПлатаСотрудников» для фиксации вознаграждения сотрудников (процент от суммы продажи).
  4. Регистр накопления (остатки) «ЗадолженностиКлиентов» для отслеживания долга клиента после оказания услуг и его уменьшения при оплате.

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

Поделиться этим Q&A