ОПЕРАТИВНЫЙ УЧЕТ

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

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

Регистр накопления - это объект конфигурации, предназначенный для хранения движений регистра и итоговой информации. Сведения об изменениях в регистрах, вызванных регистратором, называются движениями регистра. Механизм подсчета итогов использует движения регистров для выполнения непосредственных изменений в регистрах накопления. Движения регистров содержат только приращения (со знаком "плюс" или "минус") значений ресурсов регистра, а не итоговые величины значений. Движения регистров оказывают влияние на его итоги. Итоги - это сводная информация регистров, которая получается путем суммирования значений, вносимых движениями регистров. Итоги в регистре накопления хранятся с периодичностью месяц плюс текущие итоги на последнее движение по регистру. Физически регистр накопления можно представить в виде двух таблиц: таблицы движений и таблицы итогов. В отличие от движений регистра, нет возможности непосредственно просматривать итоги регистра накопления. Для обращения к итогам в конфигурации может быть создано необходимое число отчетов, которые будут обращаться к итогам и выводить их в виде товарных отчетов, складских карточек и ведомостей и т.д. При получении итогов на момент, отличный от начала месяца, система будет анализировать движения от ближайшего рассчитанного месяца.

Для управления рассчитанными итогами в режиме "1С:Предприятие" существует диалог "Управление итогами", который вызывается из пункта главного меню "Операции - Управление итогами".

Рис 6.1.

Регистр накопления представляет собой n-мерную систему координат, в узлах которой хранятся совокупные данные. Оси такой системы координат называются измерениями регистра, а хранящиеся в узлах данные - ресурсами регистра. Содержимое регистра накопления можно представить в виде таблицы с количеством колонок, равным сумме измерений и ресурсов регистра накопления. Помимо измерений и ресурсов, для регистра накопления может быть создан набор реквизитов. Реквизиты позволяют включать в движения регистров различную дополнительную информацию. Реквизиты не влияют на значения ресурсов регистра и могут использоваться для анализа движений регистра.

В системе 1С:Предприятие возможно использование регистров накопления двух типов: регистры остатков и регистры оборотов.

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

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

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

Рис 6.2.

Для работы с регистром накопления применяются следующие объекты:

*                        РегистрНакопленияМенеджер - предназначен для управления данными конкретного регистра накопления.

*                        РегистрНакопленияНаборЗаписей - представляет собой коллекцию записей регистра накопления. Позволяет выполнять считывание записей из базы данных по определенному регистратору, добавлять, удалять и модифицировать записи в наборе.

*                        РегистрНакопленияЗапись - используется для доступа к записи регистра накопления. Объект не создается непосредственно, а предоставляется другими объектами, отвечающими за регистр накопления.

*                        РегистрНакопленияВыборка - объект этого типа возвращается методами Выбрать и ВыбратьПоРегистратору у объекта типа РегистрНакопленияМенеджер и представляет собой способ перебора записей регистра накопления. Обход записей выполняется системой динамически. Это означает, что использование выборки не считывает все записи сразу, а выбирает их порциями из базы данных.

*                        РегистрНакопленияСписок - обеспечивает управление списком записей регистра накопления в форме в элементе управления "ТабличноеПоле".

*                        РегистрНакопленияКлючЗаписи - набор значений, однозначно идентифицирующих запись регистра. Объект используется в тех случаях, когда необходимо сослаться на определенную запись. Например, он выступает в качестве значения свойства ТекущаяСтрока табличного поля, отображающего список записей регистра.

Рис 6.3.

Рассмотрим некоторые методы объекта "РегистрНакопленияМенеджер":

*                        Выбрать() - формирует выборку записей регистра накопления. Возвращаемое значение типа "РегистрНакопленияВыборка"

*                        Обороты( - получает обороты регистра накопления за заданный период времени. Есть возможность фильтрации по значениям измерений. Возвращает таблицу значений, содержащую колонки с измерениями, указанными в параметре Измерения, и по две колонки на каждый ресурс, указанный в параметре Ресурсы. Названия колонок для ресурсов формируются следующим образом: для регистров остатков: "<Имя ресурса>Приход" и "<Имя ресурса>Расход" или "<ИдентификаторРесурса>Receipt" и "<ИдентификаторРесурса>Expense"; для регистров оборотов: "<Имя ресурса>

*                        Остатки() - получает остатки регистра накопления на заданный момент времени. Есть возможность фильтрации по значениям измерений, а также получения остатков в разрезе других измерений. Возвращает таблицу значений, содержащую колонки с измерениями, указанными в параметре Измерения, и колонки с ресурсами, указанными в параметре Ресурсы. Имеет смысл только для регистров, у которых в конфигураторе указан вид регистра "Остатки"

*                        ПолучитьФорму() - получает форму регистра накопления

*                        СоздатьНаборЗаписей() - создает набор записей регистра накопления. Набор записей создается пустым. Возвращаемое значение имеет тип "РегистрНакопленияНаборЗаписей"

Пример получения остатка конкретного материала из регистра накопления "ОстаткиМатериалов":

ТекМатериалОтбор = Новый Структура("Материал", ВыбМатериал);

ТабЗначенийМатериалОстатки = РегистрыНакопления.ОстаткиМатериалов.Остатки(Дата, ТекМатериалОтбор, "Материал ","Количество,Сумма");

Сообщить(ТабЗначенийМатериалОстатки[0].Количество);

Добавление и изменение записей регистра накопления, как и для других регистров, производится через набор записей регистра.

У документов есть свойство "Движения", тип - ФиксированнаяКоллекция, которое предоставляет доступ к коллекции наборов записей движений документа. Свойства коллекции содержат пустые наборы записей движений документа. При проведении документов сначала добавляются записи в набор, а затем набор записывается в базу данных.

Через набор записей также можно обращаться к уже существующим записям регистра накопления. Для этого нужно установить свойство Отбор и прочитать записи из базы данных. Свойство Отбор является объектом типа Отбор, свойства которого совпадают с именами измерений регистра и являются объектами типа ЭлементОтбора.

Например:

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

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

Рис 6.4.

При необходимости, можно настроить параметры:

Проведение - разрешает или запрещает проведение документа при записи

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

Удаление движений - задает автоматическое удаление всех записей при перепроведении или отмене проведения документа.

 

 

 

 

 

 

 

 

 

Конструктор движений регистров.

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

Рис 6.5.

Рис 6.6.

Если у документа есть табличные части и их данные влияют на состояние регистров, то включение табличной части производится в списке выбора "Табличная часть". Если тип реквизита совпадает с типом ресурса, то он в списке реквизитов помечается пиктограммой с пометкой. Затем для каждого регистра по кнопке "Заполнить выражения" производится заполнение формул атрибутов по данным реквизитов документа. Эти формулы можно отредактировать вручную.

Пример использования конструктора движений:

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

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

В приведенной выше процедуре описываются действия по добавлению в регистр накопления "Услуги" новой записи. Объект "РегистрНакопленияЗапись" имеет следующие свойства:

*                        Имя измерения, имя ресурса, имя реквизита;

*                        Активность - содержит флаг, определяющий влияние записи на итоги регистра накопления. Если значение Ложь, то запись не учитывается в итогах регистра;

*                        ВидДвижения - содержит вид записи, обозначающий, что запись отражает увеличение (Приход) или уменьшение (Расход) ресурсов регистра;

*                        НомерСтроки - содержит уникальный номер строки данной записи в списке записей по регистратору, указанному в значении свойства Регистратор;

*                        Период - содержит дату и время записи регистра накопления. Период может отличаться от даты регистратора. Совместно с Регистратор и НомерСтроки определяет последовательность движений;

*                        Регистратор - содержит документ, внесший запись регистра накопления.

 Задание 12

1.     Создайте регистр накопления "Взаиморасчеты" с измерениями "Клиент" типа СправочникСсылка.Клиенты, "Расчетный документ" типа ДокументСсылка.АктОбОказанииУслуг и ресурсом "Сумма". Для документа "Акт об оказании услуг" предусмотрите проведение по регистру "Взаиморасчеты".

2.     Создайте документ "Оплата от клиента" с реквизитами "Контрагент", "АктОбОказанииУслуг", "Сумма" и предусмотрите по нему движения по регистру накопления "Взаиморасчеты".

3.     Создайте внешнюю обработку "Проведение документа Поступление материалов", которая будет создавать движения по документу "ПоступлениеМатериалов" по регистру "ОстаткиМатериалов". При создании движений используйте объект "РегистрНакопленияНаборЗаписей".