Оборотный регистр накопления «Продажи»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: