Ниже приведён максимально детальный разбор на примере, как пошагово создать и настроить регистры (накопления и сведений) в 1С, а также как связать их с документами, чтобы при проведении документов данные записывались в эти регистры.
1. Общие принципы и подготовка
-
Определите, зачем нужен регистр и какие отчеты на его основе будут строиться.
- Если нужно хранить остатки (например, остаток денежных средств, задолженность, остаток товара) – используйте Регистр накопления (остатки).
- Если нужно накапливать обороты (например, продажи, сумма начисления зарплаты), то есть величины, которые могут только увеличиваться (при возврате – отрицательный оборот) – используйте Регистр накопления (обороты).
- Если нужно хранить сведения (характеристики объектов во времени или без него, например, состояние заказа, цены товаров, курсы валют), используйте Регистр сведений.
-
Определите измерения и ресурсы:
- Измерения – это разрезы аналитики (какой товар, какой клиент, какой сотрудник и т. п.).
- Ресурсы – это числовые (или иные) показатели, которые нужно суммировать, хранить и отражать в отчетах (количество, сумма, цена, т.д.).
- Реквизиты (опционально) – дополнительная информация, не влияющая на аналитический разрез (комментарии, статусы и пр.).
-
Продумайте, какие документы будут являться регистраторами, то есть будут при проведении записывать данные в регистр. Это важно, потому что именно при проведении документов формируются движения регистров.
2. Пример 1: Регистр сведений «СостояниеЗаказов»
Шаг 2.1: Создание регистра сведений
- Откройте конфигуратор 1С.
- В дереве конфигурации найдите ветку «Планы видов характеристик/Планы счетов/Планы видов расчетов», а чуть ниже – «Регистры сведений» (в зависимости от версии 1С название может немного отличаться).
- Кликните правой кнопкой мыши на «Регистры сведений» и выберите «Создать».
- В окне свойств нового регистра заполните:
- Имя: «СостояниеЗаказов» (или другое подходящее имя).
- Режим записи: «Подчинение регистратору». (Чтобы данные записывались при проведении документа.)
- Периодичность: «По позициям регистратора» (или «Нет», если не нужна история изменений по времени).
Шаг 2.2: Определение структуры (Измерения, Ресурсы, Реквизиты)
-
Перейдите на закладку «Данные» регистра.
-
Создайте Измерение:
- Имя: «Заказ».
- Тип: «ДокументСсылка.Заказ» (ссылка на документ «Заказ»).
-
Создайте Ресурс:
- Имя: «Состояние».
- Тип: «Строка».
Таким образом, мы сможем хранить строковое описание состояния (например, «Не выполнен», «Выполнен»).
-
Реквизитов здесь не нужно, поэтому пропускаем.
Шаг 2.3: Указание регистраторов
- Перейдите на закладку «Регистраторы» нового регистра «СостояниеЗаказов».
- Отметьте галочкой документ «Заказ» и документ «Акт выполненных работ», так как они оба будут менять состояние заказов:
- Документ «Заказ» при проведении будет ставить «Не выполнен».
- Документ «Акт выполненных работ» при проведении будет ставить «Выполнен».
Шаг 2.4: Автоматическая генерация движений в документе «Заказ»
- Откройте в конфигураторе объект «Документ Заказ».
- Перейдите на закладку «Движения» (появилась после того, как мы указали этот документ регистратором).
- Вы увидите, что в списке регистров стоит галочка на «СостояниеЗаказов».
- Нажмите кнопку «Конструктор движений».
- В открывшемся окне для поля «Заказ» укажите
Ссылка
(т. е. текущий документ).
- Для поля «Состояние» введите строку «Не выполнен».
- Нажмите «ОК», сгенерируется программный код в процедуре ОбработкаПроведения() (модуль объекта документа). Обратите внимание, что добавится строка:
bsl
Движения.СостояниеЗаказов.Записывать = Истина;
Без неё записи в регистр не сохранятся.
Шаг 2.5: Генерация движений в документе «Акт выполненных работ»
- Откройте в конфигураторе «Документ Акт выполненных работ».
- Аналогично перейдите на закладку «Движения».
- Там также появится возможность выбрать регистр «СостояниеЗаказов».
- Нажмите «Конструктор движений» и заполните:
- Поле «Заказ» – это реквизит документа «Акт» (обычно называется «Заказ»).
- Поле «Состояние» – строка «Выполнен».
- Сохраните сгенерированный код, где также будет строка
Движения.СостояниеЗаказов.Записывать = Истина;
.
Шаг 2.6: Проверка результата
- Запустите 1С:Предприятие.
- Зайдите в список документов «Заказ», выделите все записи и нажмите Правой кнопкой → «Провести». Это запустит процедуру проведения и заполнит регистр сведений «СостояниеЗаказов».
- Зайдите в список документов «Акт выполненных работ», проведите нужные документы (там, где указан «Заказ»).
- Откройте меню «Все функции» (в левом верхнем углу в режиме Предприятие) → найдите «Регистр сведений СостояниеЗаказов» и посмотрите, какие записи сформированы.
3. Пример 2: Регистр накопления (оборотный) «Продажи»
Пусть в нашей системе документы «Акт выполненных работ» должны фиксировать продажи: какие услуги оказаны и какова их сумма.
Шаг 3.1: Создание регистра накопления
- В конфигураторе найдите «Регистры накопления».
- Кликните правой кнопкой → «Создать».
- Название: «Продажи».
- Вид регистра: «Обороты», так как мы накапливаем показатели, которые растут (продажи).
Примечание: У оборотных регистров нет остатков, только обороты за период.
Шаг 3.2: Определение структуры
- Перейдите на закладку «Данные».
- Измерения:
- «Услуга» (ссылка на справочник «Услуги»).
- «Клиент» (ссылка на справочник «Клиенты»).
- Ресурсы:
- «Количество» (тип «Число(5,0)»).
- «Сумма» (тип «Число(10,2)»).
Шаг 3.3: Указание регистратора
- Перейдите на закладку «Регистраторы».
- Установите галочку на «Документ Акт выполненных работ».
Важно: регистры накопления всегда подчинены регистратору, поэтому другие режимы записи здесь недоступны.
Шаг 3.4: Настройка движений в документе «Акт выполненных работ»
- Откройте документ «Акт выполненных работ» → закладка «Движения».
- Нажмите «Конструктор движений». Если уже есть движения для других регистров, система спросит, хотите ли вы их перезаписать или дополнить – выберите «Дополнить».
- В появившемся окне конструктора добавьте регистр «Продажи»:
- Укажите, что данные берутся из табличной части «Услуги» (если в документе «Акт» именно так называется ТЧ).
- Заполните выражения:
- «Услуга» = «Услуга».
- «Клиент» = «Клиент» (обычно реквизит шапки).
- «Количество» = «Количество».
- «Сумма» = «Сумма».
- Нажмите «ОК».
- В сгенерированном коде появятся конструкции вида:
bsl
Для Каждого ТекСтр из ЭтотОбъект.Услуги Цикл
НоваяСтрока = Движения.Продажи.Добавить();
НоваяСтрока.Период = Дата;
НоваяСтрока.Клиент = Клиент;
НоваяСтрока.Услуга = ТекСтр.Услуга;
НоваяСтрока.Количество = ТекСтр.Количество;
НоваяСтрока.Сумма = ТекСтр.Сумма;
КонецЦикла;
...
Движения.Продажи.Записывать = Истина;
Шаг 3.5: Проверка результата
- Проведите несколько документов «Акт выполненных работ».
- Через «Все функции» → «Продажи» посмотрите сформированные записи.
4. Пример 3: Регистр накопления (оборотный) «ЗаработнаяПлатаСотрудников»
В нашем примере мы хотим учитывать начисление зарплаты сотрудникам на основании оказанных услуг, но это не остатки, а именно накапливаемые обороты (зарплата может только расти). Пусть документ «Акт выполненных работ» также формирует эти движения.
Шаг 4.1: Создание регистра
- «Регистры накопления» → «Создать» → Назовём «ЗаработнаяПлатаСотрудников».
- Вид: «Обороты».
Шаг 4.2: Структура
- Измерения:
- «Сотрудник» (ссылка на справочник «Сотрудники»).
- Ресурсы:
Шаг 4.3: Указание регистратора
- На закладке «Регистраторы» отметьте документ «Акт выполненных работ».
Шаг 4.4: Движения в документе «Акт выполненных работ»
-
Откройте документ «Акт выполненных работ» → закладка «Движения» → «Конструктор движений».
-
Добавьте новый регистр «ЗаработнаяПлатаСотрудников».
-
В поле «Сумма» мы можем автоматически подставить «Сумма» из табличной части, но по условию нужно начислять процент от суммы, указанный в справочнике «Услуги». Например:
bsl
НоваяСтрока.Сумма = ТекСтр.Сумма * ТекСтр.Услуга.ПроцентСотрудника / 100;
Чтобы учесть это, после генерации кода зайдите в модуль объекта «Акт выполненных работ» и внесите поправки вручную, заменив присвоение суммы на нужное выражение.
-
Не забудьте в конце движения прописать Движения.ЗаработнаяПлатаСотрудников.Записывать = Истина;
.
Шаг 4.5: Проверка
- Проведите документ «Акт выполненных работ», убедитесь, что для каждого сотрудника в регистре «ЗаработнаяПлатаСотрудников» появились записи с суммой, рассчитанной по формуле.
5. Пример 4: Регистр накопления (остатки) «ЗадолженностиКлиентов»
Допустим, нам нужно учитывать задолженность клиентов: когда мы оказываем услуги – задолженность растёт (приход), когда клиент платит – задолженность уменьшается (расход). Для этого подойдёт регистр накопления с видом «Остатки», так как нам важны и обороты, и остаток на любую дату.
Шаг 5.1: Создание регистра
- «Регистры накопления» → «Создать» → Название «ЗадолженностиКлиентов».
- Вид: «Остатки».
Шаг 5.2: Структура
- Измерения:
- «Клиент» (справочник «Клиенты»).
- «Акт» (документ «Акт выполненных работ») – это чтобы детализировать задолженность по конкретному акту.
- Ресурсы:
Шаг 5.3: Указание регистраторов
- На закладке «Регистраторы» отметьте:
- Документ «Акт выполненных работ» (при проведении – приход задолженности).
- Документ «Оплата» (при проведении – расход задолженности).
Шаг 5.4: Движения в документе «Акт выполненных работ» (приход)
- В документе «Акт выполненных работ» → «Движения» → «Конструктор движений».
- Добавьте регистр «ЗадолженностиКлиентов».
- Заполните поля:
- «Клиент» = «Клиент» (шапка документа).
- «Акт» = «Ссылка» (или реквизит «Акт», если так называется).
- «Сумма» = «Сумма» (например, из табличной части или из шапки документа).
- «ВидДвижения» = «Приход».
- Сгенерируется код вроде:
bsl
НоваяСтрока.ВидДвижения = ВидДвиженияНакопления.Приход;
И не забудьте Движения.ЗадолженностиКлиентов.Записывать = Истина;
.
Шаг 5.5: Движения в документе «Оплата» (расход)
- Откройте документ «Оплата» → «Движения» → «Конструктор движений».
- Добавьте регистр «ЗадолженностиКлиентов».
- Укажите:
- «Клиент» = «Клиент».
- «Акт» (если для каждой оплаты указываете, какой именно акт она закрывает). Иначе можно это измерение не использовать, смотрите по логике учёта.
- «Сумма» = «Сумма оплаты».
- «ВидДвижения» = «Расход».
- Сгенерированный код будет иметь вид:
bsl
НоваяСтрока.ВидДвижения = ВидДвиженияНакопления.Расход;
Движения.ЗадолженностиКлиентов.Записывать = Истина;
Шаг 5.6: Проверка и формирование остатков
- Проведите документ «Акт выполненных работ» – увеличится долг (приход).
- Проведите документ «Оплата» – долг уменьшится (расход).
- Через «Все функции» → «ЗадолженностиКлиентов» смотрите движения.
- В отчетах (или в механизме «Остатки и обороты» для регистра) вы можете видеть остаток задолженности на любую дату.
6. Итоговая проверка и перепроведение документов
После того, как вы создали и настроили все регистры:
- Зайдите в 1С:Предприятие.
- Перепроведите все документы, которые должны формировать движения по новым (или изменённым) регистрам.
- Можно сделать это массово (выделив все документы в списке и выбрав «Провести»).
- Зайдите в меню «Все функции» (если оно не отображается, включите его в параметрах системы).
- Найдите все ваши регистры («СостояниеЗаказов», «Продажи», «ЗаработнаяПлатаСотрудников», «ЗадолженностиКлиентов»).
- Откройте каждый регистр и убедитесь, что записи соответствуют проводкам документов:
- Для регистра сведений «СостояниеЗаказов» – смотрите поля «Заказ» и «Состояние».
- Для регистров накопления смотрите поля «Измерения», «Ресурсы», «ВидДвижения» и даты.
Если всё отображается верно, значит регистры настроены правильно и готовы к использованию в ваших отчетах.
Заключение
В результате пошаговых действий у вас должны получиться:
- Регистр сведений «СостояниеЗаказов» для хранения статусов заказов (выполнен/не выполнен).
- Регистр накопления (оборотный) «Продажи» для учёта каких товаров/услуг сколько и на какую сумму продано (по клиентам, сотрудникам и т. п.).
- Регистр накопления (оборотный) «ЗаработнаяПлатаСотрудников» для фиксации вознаграждения сотрудников (процент от суммы продажи).
- Регистр накопления (остатки) «ЗадолженностиКлиентов» для отслеживания долга клиента после оказания услуг и его уменьшения при оплате.
С помощью этих регистров можно быстро формировать необходимые отчёты по остаткам, оборотам, состоянию заказов и прочим аналитическим признакам, поскольку данные для отчетов уже будут агрегированы и оптимизированы для выборок.