Автоматизация ввода основных хозяйственных операций с помощью документов, страница 5

4.1  Создать документ в соответствии с приведенными выше рекомендациями. Обратить внимание на правильное назначение типа реквизиту "СтатьяЗатрат": «ПеречислениеСсылка.СтатьиЗатрат». Построить движения при помощи конструктора (содержание проводки – напр.: «Учтены затраты»). Обратите внимание, что в сформированной процедуре «ОбработкаПроведения» отсутствует цикл обхода табличной части документа (т.е., документ всегда формирует только одну проводку):

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

    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

    // Данный фрагмент построен конструктором.

    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    // регистр Основной

    Движение = Движения.Основной.Добавить();

    Движение.СчетДт = ПланыСчетов.Основной.Затраты;

    Движение.СчетКт = ПланыСчетов.Основной.Поставщики;

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

    Движение.Сумма = Сумма;

    Движение.Содержание = "Учтены затраты";

    Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.СтатьиЗатрат] = СтатьяЗатрат;

    Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Поставщики] = Поставщик;

    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

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

4.2  Создать форму документа. Поскольку по условиям задачи, затраты по статье "Материалы" должны всегда проводиться "через склад" (т. е., документами "ПоступлениеМатериалов" и "ПередачаМатериаловВПроизводство"), необходимо предусмотреть контроль того, что статья затрат, выбранная пользователем в данном документе не является статьей "Материалы". Контроль может быть реализован различными способами (например, документ данного вида со статьей "Материалы" не будет записываться или не будет проводиться), однако наиболее удобным с точки зрения пользователя будет вывод предупреждения о том, что данная статья не может выбираться в документе, непосредственно после выбора такой статьи. Для реализации такого контроля необходимо создать обработчик события «ПриИзменении» (см. п. 1.6) для поля ввода «СтатьяЗатрат». Обработчик должен иметь примерно следующий вид:

Процедура СтатьяЗатратПриИзменении(Элемент)

    Если СтатьяЗатрат = Перечисления.СтатьиЗатрат.Материалы Тогда

           Предупреждение("Эта статья не может быть выбрана!");

           СтатьяЗатрат = 0;

    КонецЕсли;    

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

В случае равенства значения, выбранного в реквизите "СтатьяЗатрат" значению Перечисления.СтатьиЗатрат. Материалы пользователю будет выдано соответствующее предупреждение, а с помощью строки СтатьяЗатрат=0; поле ввода будет тут же очищено.

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

5.  Разработка документа "Оплата поставщику".

Данный документ должен формировать проводки по схеме: "Д60,Поставщики К50". Один документ отражает факт оплаты одному поставщику. Таким образом, документ будет иметь всего два реквизита: «Поставщик» и «Сумма». Каких-либо особенностей документ не имеет.

5.1  Разработать документ и протестировать его работу.