Документы, регистры накопления, скд. Оборотный регистр накопления «Продажи 1с 8 3 создать регистры накопления

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

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


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

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


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


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

В конструкторе вид движения регистра оставляем “Приход”, в поле Табличная часть выбираем “Товары”,нажимаем кнопку “Заполнить выражения” и затем кнопку ОК.


Откроется модуль документа, в котором уже создана процедура ОбработкаПроведения.
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр ТоварыНаСкладах Приход
Движения.ТоварыНаСкладах.Записывать = Истина;
Движения.ТоварыНаСкладах.Очистить();
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения.ТоварыНаСкладах.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;


КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

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


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


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

Первая таблица - это список записей, которые мы формировали в обработке проведения документов, остальные это виртуальные таблицы, которые платформа создает сама. Эти таблицы позволяют нам получить обработанные данные по регистру - обороты за период, остатки на дату, или остатки и обороты в одной таблице. Мы хотим вывести остатки, поэтому выбираем таблицу Остатки. Из этой таблицы выбираем все поля Номенклатура и КоличествоОстаток. Нажимаем кнопку ОК.
Конструктор сформировал алгоритм, который выведет нам отчет по остаткам, нам лишь нужно указать куда вывести отчет.
Добавим строку:
“ТабДок = ЭлементыФормы.ТабДок;” перед текстом, сформированным конструктором.
ТабДок = ЭлементыФормы.ТабДок;
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

Макет = Отчеты.ОстаткиТоваров.ПолучитьМакет("Макет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура,
| ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстатки.Номенклатура),
| ТоварыНаСкладахОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки";

Результат = Запрос.Выполнить();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();

ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
Запустим режим 1С:Предприятие и посмотрим работу отчета.


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

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


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

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


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

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

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

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

Written by: Роман Заболотин
Email: eval(unescape("%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%72%7a%61%62%6f%6c%6f%74%69%6e%40%67%6d%61%69%6c%2e%63%6f%6d%22%3e%72%7a%61%62%6f%6c%6f%74%69%6e%40%67%6d%61%69%6c%2e%63%6f%6d%3c%2f%61%3e%27%29%3b"))

Документы – суть ведения учета в 1С. Каждый документ имеет результат, например пришло товаров +10 шт.

Отчеты – позволяют смотреть результаты. Суммируют эти результаты и показывают пользователю.

Однако документов много и если бы приходилось суммировать их результаты, то это было бы слишком сложно. Поэтому придуман лучший способ!

Документы записывают свои результаты (называют «движения») в специальные таблицы – регистры 1с, которые сами суммируют результаты, чтобы отчет просто отобразил заранее посчитанные итоги.

Сегодня мы поговорим про регистры 1С и их использование.

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

Документ, который записал движения в регистр 1С, называют Регистратор. Дата и время движения равны (в 99% случаев) дате документа. Дату движения называют Период.

Каждый регистр 1С учитывает обычно движения какого нибудь одного справочника. Например, регистр 1С Товары на складах – движения товаров (в терминах 1С «номенклатуры») – сколько поступило товаров на склад, сколько убыло. Регистр 1С Взаиморасчеты с контрагентами (покупателями и поставщиками) – движения договоров с контрагентами – сколько нам стал должен контрагент после покупки или сколько мы ему должны после оплаты. Справочник, в разрезе которого ведется регистр называют основным измерением (аналитикой) регистра 1С.

Конечно же никто не делает одно основное измерение к у регистра 1С. Ведь если мы учитываем движения товаров, то нам интересно не только какой товар уменьшился или прибавился, но и например, по какому складу. Поэтому всегда есть три-пять дополнительных измерений «на всякий случай», которые можно назвать дополнительной аналитикой регистра 1С.

Как документ проводится по регистрам?

Движения документа по регистрам 1С

Посмотрим как работают регистры 1С. Вот у нас есть документ поступления товаров, в котором мы видим, что поступил товар Масло на склад Главный.

С точки зрения логики и математики этот документ имеет результат:

Масло кремлевское, Главный склад +10 (шт)

Проверим – так ли это?

Этот пункт меню покажет нам все движения документа, которые он сделал по регистрам. Как мы видим, документ сделал движения по целой куче регистров 1С, в каждый из которых он записал разную информацию (в соответствии с назначением регистра 1С). По регистру 1С Товары на складах он сделал ту проводку, которую мы с Вами рассчитали.

Как же это выглядит в регистре 1С? Откроем регистр 1С через меню Операции.

Открылся регистр 1С. Данных в нем много. Сделаем отбор только по нашему документу.

В результате мы видим движение нашего документа по регистру 1С. Оно ровно совпадает с тем, что мы рассчитали вручную:

  • Плюс – вид движения (приход/расход)
  • Регистратор – наш документ
  • Активность – эта строка движения действительна (то есть не отключена)
  • Номенклатура, основное измерение
  • Склад, дополнительное измерение
  • Количество, ресурс (то есть цифра, которую мы считаем).

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

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

Зачем нужны регистры 1С

Регистры 1С бывают разных видов. Цель использования регистра 1С зависит от его вида.

  • Регистры сведений 1С
    Это обычная таблица, как в Excel. Она не имеет никаких движений (приходов/расходов). Регистр сведений 1С обычно используется для хранения дополнительных данных справочников. С помощью регистра сведений 1С можно организовать
  • Регистры бухгалтерии 1С
    С точки зрения пользователя учет ведется на бухгалтерском плане счетов. На самом деле учет ведется в таблице регистров бухгалтерии 1С, которые сделаны в разрезе плана счетов 1С.
  • Регистры накопления 1С (регистр остатков 1С)
    Таблица движения документов + и –, которая автоматически вычисляет итого на начало периода и итого на конец периода. Например движения товара Лопата было +10, а потом -8. Значит остаток на начало был 0, а остаток на конец стал 2.

    Регистр накопления 1С с видом «Остатки» обозначает, что будут хранится движения (приходы и расходы, которые также называют «Обороты») и дополнительно будут автоматически рассчитываться итоги (которые называют «Остатки»).

    Регистр остатков 1С используют в том случае, когда у справочника логически может быть остаток. Например, когда мы учитываем движения товаров, то мы будем использовать регистр остатков 1С – ведь мы можем сказать, что товара Лопата осталось 3 штуки.

  • Регистры накопления 1С (регистр оборотов 1С)
    Таблица движения документов + и -, которая не считает итого.

    Регистр оборотов 1С ничем не отличается от регистра остатков, за исключением того, что у него не рассчитываются автоматически остатки.

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

    Например, продажи товаров были +10 (мы продали) а потом -2 (нам вернули). Мы не можем сказать что остаток продаж стал 8, потому что логически понятия остатка продаж не существует, мы скажем что итого оборота (сумма каждой строки оборота) стала 8.

  • Регистры расчетов 1С

    Таблица движений в разрезе видов расчета и периодов. Используется в начислении заработной платы (называют Сложные периодические расчеты).

Где находятся регистры 1С

Проведение документа в коде (в программе) прописывается программистом. Для этого откройте . Найдите строку вида «Процедура ОбработкаПроведения(». Раскройте крестик и Вы видите программу проведения этого документа.

Настройка и разработка Регистров 1С

Основные особенности Регистров 1С, по закладкам:

Теперь создадим оборотный регистр накопления и добавим в один из наших документов движения еще и по этому регистру. Продолжим дорабатывать документ «ОказаниеУслуги». До сих пор мы создавали в регистрах накопления движения только для строк документа, которые содержат материалы. Услуги, содержащиеся в документе, мы никак не учитывали.

Дело в том, что при учете услуг важны совершенно другие критерии, нежели при учете материалов. Прежде всего, бессмысленно говорить о том, сколько услуг было и сколько их осталось, важна только сумма и количество услуг, которые были оказаны за определенный промежуток времени. Кроме этого интересны следующие моменты:

· какие именно услуги были оказаны (чтобы составить рейтинг
услуг);

· какому именно клиенту оказывались услуги (чтобы
предоставить ему скидку от объема оплаченных ранее услуг,
например);

· какой мастер предоставлял услуги (чтобы начислить ему
заработную плату).

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

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

Регистры накопления могут быть регистрами остатков и регистрами оборотов .

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

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

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

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

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


Например, если ведется учет материалов в разрезах номенклатуры и склада - очевидно, что и номенклатура и склад могут быть измерениями, поскольку как приход, так и расход материалов всегда будет осуществляться с указанием конкретной номенклатуры и конкретного склада. Если же в этой ситуации появляется желание отразить учет материалов еще и в разрезе поставщика, то здесь уже нужно исходить из конкретной схемы учета, принятой на предприятии.

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

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

Иными словами, по каждому из измерений регистра накопления остатков изменение ресурсов обязательно должно осуществляться в обе стороны: приход и расход.

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

Нарушение этого принципа построения регистров накопления будет вести к непроизводительному использованию ресурсов системы и, как следствие, замедлению работы и падению производительности.

Теперь, когда мы знаем «практически все» о регистрах накопления, откроем конфигуратор и создадим новый объект конфигурации регистр накопления. Назовем его «Продажи» и определим вид регистра - «Обороты».

Рис. 147. Создание оборотного регистра.

На закладке «Данные» создадим измерения регистра:

У регистра будет три ресурса:

· «Количество», тип Число(15,3), неотрицательное;

· «Выручка», тип Число(15,2), неотрицательное;

· «Стоимость», тип Число(15,2), неотрицательное.

Этот регистр будет обрабатываться документами «РасходнаяНакладная», «ОказаниеУслуги».

Откроем окно редактирования объекта конфигурации Документ «ОказаниеУслуги» и на закладке «Движения» укажем, что этот документ будет создавать движения по регистру «Продажи».

Запустим 1С:Предприятие в режиме отладки и откроем формы списка регистров накопления «Продажи» и «ОстаткиНоменклатуры». Обратите внимание, что формы практически одинаковы, за исключением состава измерений и ресурсов.

Рис. 148 Вызов конструктора движений

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

Рис. 149 Работа с конструктором движений

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

Откроем в конфигураторе модуль объекта конфигурации документ «ОказаниеУслуги» и найдем в нем процедуру обработчика события «ОбработкаПроведения» (закладка «Прочее», кнопка «МодульДокумента»).

Создадим еще один цикл обхода табличной части:

Для Каждого ТекСтрокаУслуги Из Услуги Цикл

// регистр Продажи

Движение = Движения.Продажи.Добавить();

Движение.Период = Дата;

Движение.Номенклатура = ТекСтрокаУслуги.Услуга;

Движение.Клиент = Клиент;

Движение.Мастер = Мастер;

Движение.Количество = 1;

Движение.Выручка = ТекСтрокаПереченьНоменклатуры.Стоимость;

Движение.Себестоимость = 0;

КонецЦикла;

После этого необходимо внести необходимые изменения для запрета проведения документа при нехватке материалов на складе (аналогично документу «РасходнаяНакладная»).

Затем необходимо внести изменения в документ «РасходнаяНакладная». Требуется разрешить документу «двигать» данный регистр, определив с помощью конструктора процедуру проведения документа (!!! Не забыть про внесенные ручные изменения).

стоимость имеющихся в организации материалов, нам понадобится обращаться к документам, просматривать каждый из них, выписывая нужные данные, после чего суммировать их, получая нужные данные. Такой подход неудобен – он слишком медленный как для нашего воображаемого "ручного" случая, так и для автоматизированного учета.

Логичнее было бы, в дополнение к документам, вести специальные таблицы, в которые, при приеме материалов и при их списании, вносить краткие сведения об этом. Если, скажем, ежедневно, подводить итоги по этим таблицам и выводить остатки материалов, то, для того, чтобы сказать, сколько и каких материалов имеется в организации на определенную дату, достаточно обратиться к соответствующей графе таблицы. В системе 1С:Предприятие такими таблицами являются регистры накопления . Как следует из названия, они предназначены для отражения, накопления, неких показателей. И отражение в регистрах прихода и расхода материалов – один из типичных примеров их использования.

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

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

Итак, нам нужно хранить следующие данные:

  • Номенклатурная позиция
  • Ответственный сотрудник, на котором числится данная позиция
  • Количество номенклатуры
  • Стоимость номенклатуры
  • Данные о мастере, которому переданы материалы для использования.

Измерения регистра , или разрезы, в которых хранятся данные, позволяют нам ответить на вопросы о том, какие именно данные хранятся в регистре. В нашем случае нам нужно знать две основных характеристики – это, за каким ответственным лицом закреплена та или иная номенклатурная позиция . Очевидно, измерениями из нашего списка данных будут номенклатурная позиция и ответственный сотрудник.

Ресурсы регистра – это всегда числовые значения, характеризующие хранимые данные. Числовые значения – это количество и сумма, и именно они будут ресурсами нашего регистра.

Реквизиты регистра играют вспомогательную роль, и, в нашем случае, логично будет в реквизите регистра хранить сведения о мастере, получившем материалы для работы – на тот случай, если нам понадобится узнать – кто именно эти материалы использовал.

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

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

Обсудив теоретическую часть вопроса, перейдем к практике. Создадим новый регистр накопления , назовем его ОстаткиМатериалов , параметр Вид регистра оставим в значении Остатки , рис. 6.12 .


Рис. 6.12.

Включим регистр накопления в состав подсистемы ОперативныйУчетМатериалов .

На вкладке Данные создадим следующие измерения, ресурсы и реквизиты:

Измерения :

Имя : Номенклатура, Тип: СправочникСсылка.Номенклатура, Запрет незаполненных значений – установлено.

Имя : ОтветственныйСотрудник, Тип: СправочникСсылка.Сотрудники, Запрет незаполненных значений – установлено.

Ресурсы

Имя : Количество, Тип: число, длина 10, точность 3

Имя : Сумма, Тип: число, длина 10, точность 2

Реквизиты :

Имя : ПолучательМатериалов, Тип: СправочникСсылка.Сотрудники

Обратите внимание на имена этих реквизитов, на их типы, а так же – на стандартные реквизиты регистра ( рис. 6.13 .) – эти данные пригодятся нам при работе над процедурой проведения документа .

Исключим из состава реквизитов регистра общий реквизит Организация . Сейчас в нем нет необходимости. Для организации хранения данных в регистре в разрезе различных организаций нам понадобилось бы новое измерение – Организация, благодаря наличию которого мы смогли бы работать с материалами различных организаций.

Перейдем на вкладку Регистраторы окна редактирования объекта и выберем в качестве документов-регистраторов документы – ПоступлениеМатериалов и ОтпускМатериаловМастеру .

На данном этапе настройка регистра накопления окончена, перейдем к настройкам документов. Начнем с документа ПоступлениеМатериалов .

Откроем окно редактирования объекта для этого документа, перейдем на вкладку Движения ( рис. 6.14 .) и нажмем на кнопку


Рис. 6.14.

В конструкторе, выберем тип движения регистра – Приход , в поле Табличная часть укажем табличную часть документа Материалы , нажмем на кнопку Заполнить выражения . Автоматический механизм установления соответствия между данными документа и регистра не всегда работает правильно (в том случае, если не может однозначно определить соответствия, или тогда, когда соответствие, определенное им по его логике, отличается от желаемого), поэтому проверим правильность установленных соответствий. В итоге окно Конструктора движения регистра должно выглядеть так, как показано на рис. 6.15 .


Рис. 6.15.

После нажатия на кнопку ОК, в модуле объекта документа будет сформирована такая процедура обработки проведения (так она выглядит после удаления комментариев о том, что код построен конструктором движений):

Процедура ОбработкаПроведения(Отказ, Режим) // регистр ОстаткиМатериалов Приход Движения.ОстаткиМатериалов.Записывать = Истина; Для Каждого ТекСтрокаМатериалы Из Материалы Цикл Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаМатериалы.Номенклатура; Движение.ОтветственныйСотрудник = ОтветственныйСотрудник; Движение.Количество = ТекСтрокаМатериалы.Количество; Движение.Сумма = ТекСтрокаМатериалы.Сумма; КонецЦикла; КонецПроцедуры

Эта процедура объявлена в модуле объекта, она исполняется на

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

Предположим, что у нас есть 1000 разных документов: поступление товаров, списание, возврат, продажа и т.д. И каждый из документов изменяет количество определенного товара на складе. Чтобы получить информацию о текущем количестве на складе, необходимо перебрать все : какие-то увеличивают количество товара, какие-то уменьшают, какие-то могут и увеличивать, и уменьшать. А если необходимо учитывать еще и склад, организацию?.. Такая система очень ресурсоёмкая.

Для упрощения данного процесса разработчики 1С придумали особые объекты конфигурации. Используются они для удобства хранения и получения информации, в 1С 8.3 и 8.2 используются всевозможные регистры, в данной статье речь пойдет именно про Регистры накопления .

Сам регистр накопления представляет собой таблицу с информацией, в которой собраны все движения (поступления/списания или обороты) определенных документов. Рассмотрим, как выглядит таблица движения, на примере типового регистра накопления «Товары на складах» в конфигурации «Управление торговлей 10.3»:

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

Регистр накопления в конфигураторе

Что же такое регистр накопления с точки зрения разработки конфигурации? Начнем, пожалуй, с рассмотрения полей регистра накопления в :

Получите 267 видеоуроков по 1С бесплатно:

У регистра накопления есть Измерения, Ресурсы, Реквизиты и Стандартные реквизиты.

Рассмотрим сначала стандартные реквизиты регистра накопления:

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

Измерения регистра накопления

Измерение — это разрез, в котором ведется учёт. На вышеприведенном примере разрезом учета являются: склад, номенклатура, характеристика номенклатуры, серия номенклатуры, качество . Т.е задав интересующие нас измерения, мы можем в любой момент получить количество — ресурс. В разрезе разных измерений в дальнейшем, например, можно получать остатки на определенную дату.

Ресурс регистра накопления

Ресурс — это числовое поле, в котором хранится информация в разрезе измерений, о которых писали выше.

Иначе взаимодействия измерений/ресурсов можно схематично изобразить как систему координат:

Два измерения — абсцисса и ордината системы координат, т.е. на данном примере измерения это склад и номенклатура. На пересечении измерений мы можем получить количество — ресурс. Например, на «основном» складе товара «карандаш» в наличии 1 штука.

Реквизиты регистра накопления 1C

Реквизиты регистры накопления несут в себе роль «комментария» или дополнительной информации, в разрезе измерений нельзя получить остатки/обороты. Используются достаточно редко.

Виды регистра накопления

Существует два вида регистра накопления — обороты и остатки .

Если целью регистра накопления не является получение остатков, обязательно нужно использовать вид регистра накопления — обороты . Типичный пример использования оборотного регистра — регистрация объема продаж. В данном случае нам нужно знать только, какие продажи были за определенный период времени, остатки в данном случае не имеют смысла.

Если же среди целей использования регистра накопления — получение остатков на определенный период, нам необходим регистр с видом остатки . Такой тип позволяет получать как остатки, так и обороты. Для такого регистра система автоматически рассчитывает остатки. Пример «остаточного» регистра — товары на складах, деньги в кассе.

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

В зависимости от вида регистра система будет создавать разные виртуальные таблицы для регистра накопления. Виртуальная таблица – быстрый способ получения профильной информации из регистров.

Для регистра накопления это:

  • Остатки;
  • Обороты;
  • Остатки и обороты.

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

Правильное проектирование регистров накопления

Регистры накопления необходимо проектировать из необходимых отчетов. Самое трудное в системе 1С 8.3 — правильно хранить информацию, чтобы её в любой момент было легко получить.

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

Индексация измерений регистра накопления

У измерений регистра накопления имеется свойство — «индексировать». Это свойство необходимо устанавливать на измерения в тех случаях, когда по измерению планируется часто накладывать отборы при получении данных и данное измерение может иметь большое количество вариантов значения.

Например, регистр «ТоварыНаСкладах», измерения — «Склад, Номенклатура», ресурс — «Количество».

Правильнее проиндексировать «Номенклатуру», а поле»Склад» индексировать не стоит, потому как количество складов в системе, как правило, не существенное.