Проведение документа по нескольким регистрам. Оборотный регистр накопления
Цель работы
1.1 Изучить принципы проведения документа по нескольким регистрам
1.2 Познакомиться с принципами учета услуг с помощью оборотного регистра накопления.
Краткие теоретические сведения
Регистры накопления могут быть регистрами остатков и регистрами оборотов.
Существующие в созданной учебной конфигурации регистры «ОстаткиМатериалов» и «СтоимостьМатериалов» являются регистрами остатков. Если вы помните, при создании отчета «Материалы» в конструкторе запроса видно, что для таких регистров система создает три виртуальные таблицы: таблица остатков, оборотов и совокупная таблица остатков и оборотов.
Оборотный регистр накопления очень похож на уже знакомый регистр остатков, для которого понятие «остаток» не имеет смысла. Оборотный регистр накапливает только обороты, остатки ему безразличны. Поэтому единственной виртуальной таблицей, которую будет создавать система для такого регистра, будет таблица оборотов.
В остальном оборотный регистр ничем не отличается от регистра остатков.
Следует сказать об одной особенности конструирования регистров накопления, напрямую связанной с возможностью получения остатков. При создании оборотного регистра накопления нет особой сложности в определении того, какие именно параметры должны являться измерениями регистра – можно назначить в качестве его измерений любые нужные нам параметры.
Совсем иная ситуация в случае регистра накопления, поддерживающего накопление остатков. Для него выбор измерений должен выполняться исходя из того, что движения регистра могут быть осуществлены в две стороны: приход и расход. Таким образом, в качестве измерений нужно выбирать те параметры, по которым движения точно будут осуществляться как в одну, так и в другую сторону.
Например, если ведется учет материалов в разрезах номенклатуры и склада, очевидно, что и номенклатура, и склад могут быть измерениями, поскольку как приход, так и расход материалов всегда будут осуществляться с указанием конкретной номенклатуры и конкретного склада. Если же в этой ситуации появляется желание отразить учет материалов еще и в разрезе поставщика, то здесь уже нужно исходить из конкретной схемы учета, принятой на предприятии.
Скорее всего, при поступлении материалов поставщик будет указан, а вот при расходе материалов, с большой долей вероятности, поставщик указываться не будет, так как в большинстве случаев это совершенно лишняя информация. Значит, поставщика следует добавить как реквизит регистра накопления.
Если же при расходе материалов поставщик будет указываться наверняка, имеет смысл добавить поставщика в измерения регистра.
Иными словами, по каждому из измерений регистра накопления остатков изменение ресурсов обязательно должно осуществляться в обе стороны: приход и расход.
Для реквизитов регистра этот принцип неважен. По реквизитам регистра ресурсы могут только приходоваться или только расходоваться.
Нарушение этого принципа построения регистров накопления будет вести к непроизводительному использованию ресурсов системы и как следствие замедлению работы и падению производительности.
Задание
С помощью проведения документа по нескольким регистрам вести учет материалов по средней их стоимости. Создать оборотный регистр накопления «Продажи» для учета суммы и количества услуг, которые были оказаны за определенный промежуток времени.
Ход работы
Создать регистр накопления «СтоимостьМатериалов». Этот регистр будет иметь одно измерение – «Материал» с типом «СправочникСсылка.Номенклатура» и один ресурс – «Стоимость» с длиной 15 и точностью 2, неотрицательное. В древе конфигурации установить курсор на «Регистры накопления», выбрать «Действия» - «Добавить»
Рисунок 1 – Созданный регистр накопления «СтоимостьМатериалов»
4.1 Изменение процедуры проведения документа «Приходная накладная»
Открыть в конфигураторе окно редактирования объекта конфигурации Документ «ПриходнаяНакладная» и перейти на вкладку «Движения». В списке регистров отметить, что документ будет создавать теперь движения и по регистру «СтоимостьМатериалов».
Рисунок 2 – Добавляем движения по регистру «СтоимостьМатериалов»
Запустить конструктор движений. Нажать кнопку «Конструктор движений» и согласиться с тем, что существующая процедура ОбработкаПроведения будет замещена.
Рисунок 3 – Запрос конфигуратора на подтверждение замещения процедуры
Откроется окно конструктора движений, которое будет содержать созданные ранее движения документа по регистру «ОстаткиМатериалов». Добавить в список регистров, по которым формируются движения, еще один – «СтоимостьМатериалов». Выбрать для него ту же табличную часть «Материалы» и заполнить выражения.
Для ресурса «Стоимость» выбрать значения реквизита табличной части «Сумма».
Рисунок 4 – Движения по регистру «СтоимостьМатериалов»
Нажать OK и проанализировать текст, который сформировал конструктор.
Конструктор создал два цикла обхода табличной части документа – отдельно для каждого регистра. Так происходит потому, что в общем случае документ может иметь несколько табличных частей, и информация, содержащаяся в каждой из них, может предназначаться для своего отдельного регистра.
Рисунок 5 – Обработка проведения по двум регистрам
Табличная часть всего одна, поэтому можно объединить эти два цикла в один, закомментировав следующие строки:
// КонецЦикла;
// Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
Для того, чтобы сделать из строчки комментарий необходимо добавить перед строчкой «//».
Запустить 1С:Предприятие в режиме отладки и перепровести документы «ПриходнаяНакладная» №1 и №2.
Затем открыть «ПриходнуюНакладную» №1 и убедиться, что документ создает желаемые записи в регистрах накопления.
Рисунок 6 – Проведение документа «ПриходнаяНакладная» №1
4.2 Изменение процедуры проведения документа «Оказание услуги»
Требуется, чтобы при списании материалов, израсходованных в процессе оказания услуги, должна быть возможность указывать различную стоимость для одного и того же материала, которая рассчитана руководством исходя из текущих конъюнктурных соображений.
Поскольку в документе «ОказаниеУслуги» отражена только цена номенклатуры, понадобится добавить в табличную часть документа еще одно поле, в котором будет указываться стоимость номенклатуры.
Открыть в конфигураторе окно редактирования объекта конфигурации «Документ» - «ОказаниеУслуги», перейти на закладку «Данные» и создать новый реквизит табличной части документа с именем «Стоимость», типом «Число», длиной 15 и точностью 2, неотрицательное.
Рисунок 7 – Добавление реквизита табличной части
После этого открыть форму «ФормаДокумента» документа «ОказаниеУслуги» и добавить в табличное поле колонку, отображающую новый реквизит «Стоимость»», расположив ее после колонки «Номенклатура». Для этого выделить табличное поле и выполнить команду контекстного меню «Размещение данных». В окне «Размещение данных» отметить реквизит «Стоимость» и нажать «ОK». После этого с помощью мыши перетащить колонку «Стоимость» после колонки «Номенклатура».
Рисунок 8 – Модифицированная форма документа «ОказаниеУслуги»
Теперь нужно создать движения документа «ОказаниеУслуги» таким же образом, как для документа «ПриходнаяНакладная».
Открыть в конфигураторе окно редактирования объекта конфигурации «Документ» «ОказаниеУслуги» и указать, что он будет создавать движения по регистру накопления «СтоимостьМатериалов».
Запустить конструктор движений документа и добавить в список регистров регистр «СтоимостьМатериалов». Восстановить движения по регистру «ОстаткиМатериалов». Описать движения документа по регистру «СтоимостьМатериалов» следующим образом (важно обратить внимание, что стоимость вычисляется как произведение стоимости и количества, указанных в табличной части):
Рисунок 9 – Движения по регистру «СтоимостьМатериалов» в документе «ОказаниеУслуги»
Нажать «OK» и в тексте, сформированном конструктором, восстановить изменения, внесенные ранее (не записывать движения, если номенклатура – не материал). Вставить после строчки «Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл» следующий код:
Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры <> Перечисления.ВидыНоменклатуры.Материал Тогда
Продолжить;
КонецЕсли;
Также объединить два цикла обхода табличной части документа в один, закомментировав строки, как в документе «ПриходнаяНакладная».
Запустить 1С:Предприятие в режиме отладки. Теперь создать и провести еще два документа «ОказаниеУслуги». Важно заметить, что эти документы созданы другими датами.
Рисунок 10 – Два новых документа «ОкзаниеУслуги»
Проверить движения по регистрам:
Рисунок 11 – Движения регистров обоих документов
Ранее создавались в регистрах накопления движения только для строк документа, которые содержат материалы. Услуги, содержащиеся в документе, не учитывались.
Дело в том, что при учете услуг важны совершенно другие критерии, нежели при учете материалов. Прежде всего, бессмысленно говорить о том, сколько услуг было и сколько их осталось, важна только сумма и количество услуг, которые были оказаны за определенный промежуток времени. Кроме этого интересны следующие моменты:
- какие именно услуги были оказаны (чтобы составить рейтинг услуг);
- какому именно клиенту оказывались услуги (чтобы предоставить ему скидку от объема оплаченных ранее услуг, например);
- какой мастер предоставлял услуги (чтобы начислить ему заработную плату).
Очевидно, что существующие регистры накопления совершенно не подходят для решения таких задач. Поэтому создадим еще одно «хранилище» данных, которое будет использоваться в нашей программе, – оборотный регистр накопления «Продажи».
Открыть конфигуратор и создать новый объект конфигурации «Регистр накопления». Назвать его «Продажи» и определить вид регистра – «Обороты».
Рисунок 12 – Установка имени и вида регистра
На вкладке «Данные» создать измерения регистра:
- «Номенклатура», тип «СправочникСсылка.Номенклатура»,
- «Клиент», тип «СправочникСсылка.Клиенты»,
- «Мастер», тип «СправочникСсылка.Сотрудники».
У регистра будет три ресурса:
- «Количество», тип Число, длина 15, точность 3 (неотрицательное),
- «Выручка», тип Число, длина 15, точность 2,
- «Стоимость», тип Число, длина 15, точность 2 (неотрицательное).
Открыть окно редактирования объекта конфигурации «Документ» - «ОказаниеУслуги» и на закладке «Движения» указать, что этот документ будет создавать движения по регистру «Продажи».
В этот раз не обязательно использовать конструктор движений документа, а можно внести необходимые дополнения прямо в обработчик события «ОбработкаПроведения» документа «ОказаниеУслуги».
Открыть в конфигураторе модуль объекта конфигурации «Документ» - «ОказаниеУслуги» и найти в нем процедуру обработчика события «ОбработкаПроведения».
Сразу после окончания первого цикла создать еще один цикл обхода табличной части и команду записи движений регистра «Продажи». Цикл должен содержать следующий код:
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
// Регистр Продажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Клиент = Клиент;
Движение.Мастер = Мастер;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
Движение.Выручка = ТекСтрокаПереченьНоменклатуры.Сумма;
Движение.Стоимость = ТекСтрокаПереченьНоменклатуры.Стоимость * ТекСтрокаПереченьНоменклатуры.Количество;
КонецЦикла;
Все добавленные конструкции уже хорошо известны. Важно заметить, что у оборотного регистра отсутствует свойство «ВидДвижения», поскольку отражение вида движения (приход или расход) имеет смысл лишь при учете остатков. В случае регистра оборотов интересует только значение, которое должно быть записано в ресурс регистра.
Запустить 1С:Предприятие в режиме отладки и перепровести два ранее созданных документа «ОказаниеУслуги». Движения этих документов по регистру «Продажи» должны иметь следующий вид:
Рисунок 13 – Движения документов по регистру «Продажи»
Контрольные вопросы
5.1 Для чего может понадобиться проведение документа по нескольким регистрам?
5.2 Как с помощью конструктора создать движения документа по нескольким регистрам?
5.3 Что такое оборотный регистр накопления?
5.4 В чем отличие между регистром накопления остатков и оборотным регистром накопления?
5.5 Как создать движения документа без использования конструктора движений
Содержание отчета
6.1 Название работы
6.2 Цель работы
6.3 Описание хода работы со снимками экрана
6.4 Ответы на контрольные вопросы
6.5 Выводы к работе
Список литературы
7.1 Радченко М. Г. 1С:Предприятие 8.1. Практическое пособие разработчика. Примеры и типовые приемы. – СПБ.: 1С-Паблишинг, 2008. – 512 с.
7.2 1С:Предприятие 8.1. Конфигурирование и администрирование. М: Фирма «1С», 2007. – 342 с.
7.3 . Рязанцева Н.А. 1С:Предприятие. Комплексная конфигурация. Секреты работы. СПБ.: БХВ-Петербург - 2005, 623 с.
Практическая работа №10