Программирование 1С. Оборотные регистры накопления

Практическая работа

Оборотные регистры накопления



В этой работе Вы познакомитесь с видом регистра накопления – оборотным регистром накопления. Узнаете о некоторых важных принципах выбора измерений и реквизитов регистров накопления.

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

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

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

Какие именно услуги оказаны (для рейтинга услуг)

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

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

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

оборотный регистр Продажи.

Регистры накопления могут быть регистрами остатков и регистрами оборотов. Существующие в нашей конфигурации регистры накопления

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

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

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

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

Создайте новый регистр накопления с именем Продажи, вид –

Обороты. Расширенное представление списка – Движение по регистру Продажи. На вкладке Подсистемы отметьте Бухгалтерия, УчетМатериалов, ОказаниеУслуг. На вкладке Данные создайте

измерения регистра:

Номенклатура, тип СправочникСсылка.Номенклатура;

Клиент, тип СправочникСсылка.Клиенты;

Мастер, тип СправочникСсылка.Сотрудники;

Создайте три ресурса:

Количество, тип Число, длина 15, точность 2

Выручка, тип Число, длина 15, точность 2;

Стоимость, тип Число, длина 15, точность 2.























Отредактируйте командный интерфейс, чтобы в подсистемах

Бухгалтерия, ОказаниеУслуг и УчетМатериалов была доступна ссылка для просмотра оборотного регистра накопления Продажи. (Все Подсистемы – Продажи включить и перетащить в Панель навигации.См.также).






















Проведение документа Оказание услуги по трем регистрам



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

Откройте окно редактирования объекта Документ ОказаниеУслуги и на вкладке Движения укажите регистр Продажи. Перейдите на вкладку Прочее и откройте модуль объекта. Изменим процедуру обработки следующим образом:

Процедура ОбработкаПроведения(Отказ, Режим)

Движения.ОстаткиМатериалов.Записывать = Истина;

Движения.СтоимостьМатериалов.Записывать = Истина;

Движения.Продажи.Записывать = Истина;

Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл

Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда

// регистр ОстаткиМатериалов Расход Движение = Движения.ОстаткиМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

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

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

Движение.Склад = Склад;

Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество; // регистр СтоимостьМатериалов Расход Движение = Движения.СтоимостьМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

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

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

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

КонецЕсли;

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

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

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

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

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

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

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

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

КонецЦикла;

КонецПроцедуры

Обратите внимание, что у оборотного регистра отсутствует свойство ВидДвижения, т.к. отражение вида движения (приход или расход) имеет смысл только при учете остатков.

Отредактируйте командный интерфейс формы документа ОказаниеУслуги, включив видимость команды открытия регистра

Продажи.

































Запустите 1С: Предприятие, перепроведите каждый из документов Оказание услуги, после переходя из каждого в регистр Продажи.



















































Контрольные вопросы
Что такое оборотный регистр накопления

В чем отличие между регистром накопления остатков и оборотным регистром накопления

Как выбирать реквизиты и измерения при создании регистров накопления

Как создать оборотный регистр накопления


Приложенные файлы