Как работать с регистрами накопления в 1С 8.2 – 8.3

 В этой статье я хочу рассмотреть такой механизм 1С:Предприятия 8, как регистры накопления. Этот механизм позволяет нам накапливать числовые показатели о деятельности фирмы, причем эти показатели он обрабатывает, рассчитывает итоги и позволяет нам получать остатки и обороты по этим показателям. В качестве примера приведу регистр накопления ТоварыНаСкладах из конфигурации “Управление торговлей”

Этот регистр используется для хранения остатков товаров на складах компании в разрезе номенклатуры, характеристики номенклатуры, серии и качества товара. Т.е. в любой момент мы можем посмотреть, сколько на конкретном складе, например “Центральный склад” у нас хранится номенклатуры “Ботинки мужские”, с характеристикой “43 размер”, серией от “20.08.2011” и качеством “новый”.

А чтобы это было возможным, в регистр нужно записывать данные. Платформа 1С:Предприятие так устроена, что записывать данные в регистр, можно только с привязкой к документам. Т.е. если в регистре что-то меняется (приход товара, или его продажа) должен быть обязательно указан документ, который это сделал. Обычно данные в регистр записываются, когда документ проводится. В модуле документа, есть предопределенная процедура ОбработкаПроведения, в которой разработчик и описывает алгоритм, по которому формуруются записи в регистрах накопления.Давайте рассмотрим процесс создания регистра с самого начала. Как вы помните, мы создавали конфигурацию, в которой у нас уже есть справочники и документы. Сейчас мы добавим к ней регистр накопления. Добавляем регистр накопления, название “ТоварыНаСкладах”, вид регистра “Остатки”. Вид регистра “Обороты” мы рассмотрим позже. На закладке данные добавляем измерение “Номенклатура” типа “Справочник.Номенклатура” и добавляем ресурс “Количество” типа число(15,3).

Теперь, нужно обеспечить формирование записей регистра при проведении документа. Но из документов у нас только “ПриходныйКассовыйОрдер” и “РасходнаяНакладная”. Документа, который делал бы приходные движения в наш регистр у нас нет. Давайте создадим его. Создаем документ, название “Оприходование товаров”, на закладке данные добавляем табличную часть “Товары”, в ней реквизиты “Номенклатура” и “Количество”.

Чтобы наш документ делал движения по регистру накопления “ТоварыНаСкладах” на закладке Движения отметим его (регистр) галочкой и нажмем кнопку “Конструктор движений”. Этот конструктор помогает нам написать алгоритм формирования записей регистров, который находится в уже упомянутой процедуре “ОбработкаПроведения”.В конструкторе вид движения регистра оставляем “Приход”, в поле Табличная часть выбираем “Товары”,нажимаем кнопку “Заполнить выражения” и затем кнопку ОК.

Откроется модуль документа, в котором уже создана процедура ОбработкаПроведения.

Теперь давайте запустим режим Предприятие и создадим несколько документов. У документов в верхней панели появилось подменю “Перейти”, по которому можно посмотреть созданные документов движения в регистрах.

Чтобы посмотреть какие же товары есть у нас на складе мы сделаем отчет, который будет показывать остатки по регистру “ТоварыНаСкладах”.
Переходим в режим Конфигуратор и создаем отчет. Название устанавливаем “ОстаткиТоваров”. На закладе формы создаем новую форму отчета, и назначаем ее основной. Добавляем на форму ПолеТабличногоДокумента, это можно через меню “Форма-Вставить элемент управления” и выбрать вид элемента – поле табличного документа, назначить ему имя ТабДок и расположить на всю форму.

Затем переходим в обработчик кнопки “Сформировать”, удаляем находящийся там комментарий, устанавливаем курсор в тексте процедуры обработчика события, щелкаем правой кнопкой мыши и выбираем “Конструктор запроса с обработкой результата”. Это позволит нам создать запрос и сразу вывести его результат в отчет.
На закладке Обработка результата выбираем “Вывод в табличный документ”, переходим на закладку “Таблицы и поля”. Видим, что таблица ТоварыНаСкладах представление в виде четырех таблиц.

Первая таблица – это список записей, которые мы формировали в обработке проведения документов, остальные это виртуальные таблицы, которые платформа создает сама. Эти таблицы позволяют нам получить обработанные данные по регистру – обороты за период, остатки на дату, или остатки и обороты в одной таблице. Мы хотим вывести остатки, поэтому выбираем таблицу Остатки. Из этой таблицы выбираем все поля Номенклатура и КоличествоОстаток. Нажимаем кнопку ОК.
Конструктор сформировал алгоритм, который выведет нам отчет по остаткам, нам лишь нужно указать куда вывести отчет.
Добавим строку:
“ТабДок = ЭлементыФормы.ТабДок;” перед текстом, сформированным конструктором.

 

Запустим режим 1С:Предприятие и посмотрим работу отчета.

Как видим, что-то более-менее приемлемое конструктор нам создал.
Еще у нас есть “Реализация товаров”, которая должна уменьшать наши остатки. Давайте сделаем так, чтобы она тоже формировала движения по регистру.
Открываем документ, на закладке Движения устанавливаем “галочку” напротив нашего регистра, и нажимаем кнопку “Конструктор движений”.Тип движение регистра ставим расход, выбираем табличную часть “Товары”, нажимаем “Заполнить выражения” и “ОК”. Конструктор сформировал алгоритм проведения документа, давайте его проверим. Для этого вновь запустим режим 1С:Предприятие и перепроведем созданные документы “РеализацияТоваров”.
Затем снова сформируем отчет по остаткам.

Как видите, остатки уменьшились, даже по некоторым позициям ушли в минус. Это происходит потому, что мы не контролируем наличие остатков при реализации товаров.
Наш регистр “ТоварыНаСкладах” типичный пример регистра остатков, у него есть движения как приходные, так и расходные. Но в системе 1С еще есть регистры оборотов.
В качестве примера, приведу регистр “Продажи”. Каждый раз при продаже товара клиенту, мы записываем кто, чего и сколько у нас купил. А затем в отчете мы можем посмотреть, а сколько товара у нас купил тот-то. В этот регистр не будут записываться движения отдельно приход или расход. Движения будут равнозначные. В этих случаях и используется регистр оборотов.Давайте и в нашей конфигурации создадим такой регистр. Добавим новый регистр накопление, название “Продажи”, тип регистра “Обороты”, на закладке данные добавим измерение “Клиент” и “Номенклатура”, ресурсы “Количество” и “Сумма”.

Вернемся к документу “РеализацияТоваров”, на закладе движения установим “галочку” напротив регистра “Продажи”, и нажмем кнопку “Конструктор движений”. Нажмем кнопку (+) (добавить) и выберем регистр “Продажи”, дальше как обычно выбираем табличную часть и нажимаем “Заполнить выражения”. “ОК”.

 

Запускаем 1С в режим Предприятие, перепроводим документы “РеализацияТоваров”, проверяем сформированы ли движения. Отчет вы можете сформировать сами, делается это все по такому же принципу как и прошлый отчет, таблицу нужно выбирать “Продажи.Обороты”.А теперь давайте в нашу конфигурацию добавим интерфейс, чтобы не приходлось документы открывать через меню “Операции”. Открываем в конфигураторе ветку “Общие”, ищем в ней Интерфейсы и добавляем новый. Откроется конструктор интерфейсов, в нем нажимаем кнопку “Построить”. Все. Упрощенный интерфейс готов. Чтобы он открывался по умолчанию нужно в свойствах конфигурации (правой кнопкой по самому верхнему элементу дерева конфигурации – Свойства) установить в качестве основного интерфейса, созданный нами интерфейс.
Получиться такой вид:

Вот и все, что хотел рассказать сегодня о регистрах накопления. Если будут вопросы пишите, буду рад помочь.

Если Вы хотите больше узнать о программировании в 1С, тогда регистрируйтесь на курс: 1С 8.3 Старт >>>

Оставьте ответ

[an error occurred while processing the directive]
[an error occurred while processing the directive]