Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БУХГАЛТЕРИЯ.doc
Скачиваний:
21
Добавлен:
19.03.2016
Размер:
646.14 Кб
Скачать

Глава 14. Создание алгоритма формирования проводок

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

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

Счет 41.1 имеет субконто «Номенклатура», то есть, в терминах на­шего документа, «Товар», а, поскольку в документе товары записыва­ются в табличную часть, проводка Д 41.1 — К 60.1 должна быть сфор­мирована для каждого вида товара, представленного в документе, другими словами, для каждой строки табличной части документа.

Счет 19.6 не имеет субконто, следовательно, можно не формировать для каждой строки документа проводку на сумму НДС, а просумми­ровать НДС по всем строкам таблицы и сделать одну проводку на об­щую сумму НДС.

Итак, документ должен сформировать столько проводок Д 41.1 — К 60.1, сколько заполнено строк в табличной части документа, а также одну проводку Д 19 .6 — К 60.1 на общую сумму НДС всех поступив­ших товаров.

Можно переходить к оформлению алгоритма. При первом откры­тии модуля документа мы видим текст процедуры ОбработкаПроведения:

Процедура Обработки Проведения ()

//Здесь следует написать алгоритм проведения документа

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

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

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

Процедура ОбработкаПроведения ( )

ВыбратьСтроки();

Пока ПолучитьСтроку() = 1 Цикл

Конец Цикла;

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

В цикле мы должны записать алгоритм обработки строки документа. Во-первых, мы олжны создать новую проводку:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку() =1 Цикл

Операция. НоваяПроводка();

КонецЦикла;

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

Для каждой строки документа мы должны сформировать проводку

Д 41.1-К 60.1:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку() =1 Цикл

Операция.НоваяПроводка();

Операция ДебетСчет=СчетПоКоду("41.1");

Операция.Кредит.Счет=СчетПоКоду("60.1");

Конец Цикла;

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

В проводке также должны быть указаны субконто дебета и кредита. Счет 41.1 содержит единственное субконто «Номенклатура», кото­рому в документе соответствует реквизит "Товар". Заполнить субконто дебета можно двумя способами:

Операция.Дебет.Номенклатура =Товар;

или

Операция.Дебет.Субконто (1,Товар);

Первый способ нам уже знаком, в нем обращение к субконто дебета проводки выполняется по наименованию (идентификатору вида) суб­конто.

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

Субконто кредита — это субконто счета 60.1 «Контрагенты». Суб­конто «Контрагенты» счета 60.1 соответствует реквизит документа «Поставщик». Заполнение субконто кредита можно также записать двумя способами:

Операция.Кредит.Контрагенты=Поставщик;

Или

Операция.Кредит. Субконто. (1, Поставщик);

Будем использовать новый для нас способ заполнения субконто:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку() =1 Цикл

Операция.НоваяПроводка();

Операция.Дебет.Счет=СчетПоКоду("41.1");

Операция.ДебетСубконто(1,Товар);

Операция.Кредит.Счет = СчетПоКоду("60.1");

Операция.Кредит.Субконто(1, Поставщик);

КонецЦикла;

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

Далее заполним сумму и количество проводки. Поскольку на счете 41.1 должна быть отражена сумма без НДС, вычтем сумму НДС из общей суммы товара. Параметру "Количество" проводки соответствует реквизит "Количество" документа.

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку() =1 Цикл

Операция.НоваяПроводка();

Операция.Дебет.Счет=СчетПоКоду("41.1");

Операция.Дебет.Субконто(1,Товар);

Операция.Кредит.Счет = СчетПоКоду("60.1");

Операция.Кредит.Субконто(1,Поставщик);

Операция.Количество=Количество;

Операция.Сумма=Сумма-НДС;

Конец Цикла;

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

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

Содержанием проводки будет строка "Поступление товара", а в качестве номера журнала запишем "ТЦ" (товарные ценности):

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Операция.НоваяПроводка();

Операция.Дебет.Счет=СчетПоКоду("41.1");

Операция.Дебет.Субконто(1,Товар);

Операция.Кредит.Счет =СчетПоКоду("60.1");

Операция.Кредит.Субконто(1,Поставщик);

Операция.Количество=Количество;

Операция.Сумма=Сумма-НДС;

Операция.СодержаниеПроводки="Поступление Товара";

Операция. Номер Журнала= "ТЦ"

Конец Цикла;

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

Алгоритм формирования проводок по строкам документа мы написали. Теперь мы должны сформировать проводку по выделению НДС.

Объявим новую проводку и зададим в ней корреспонденцию счетов:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Операция. НоваяПроводка();

Операция.Дебет.Счет=СчетПоКоду("41.1");

Операция.Дебет.Субконто(1,Товар);

Операция.Кредит.Счет = Счет По Коду ("60.1");

Операция. Кредит.Субконто (1, Поставщик);

Операция.Количество=Количество;

Операция.Сумма=Сумма-НДС;

Операция.Содержание Проводки="Поступление Товара";

Операция.Номер Журнала= "ТЦ"

КонецЦикла;

Операция.НоваяПроводка();

Операция.Дебет.Счет=СчетПоКоду("19.6");

Операция.Кредит.Счет=СчетПоКоду("60.1");

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

Далее заполним субконто дебета и кредита. Счет дебета проводки субконто не имеет, следовательно, дебет проводки заполнять не нужно, а строку заполнения кредита проводкит для счета 60.1 мы записывали ранее:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Операция.НоваяПроводка();

Операция.Дебет.Счет=СчетПоКоду("41.1");

Операция.Дебет.Субконто(1,Товар);

Операция.Кредит.Счет=СчетПоКоду("60.1");

Операция.Кредит.Субконто(1,Поставщик);

Операция.Количество=Количество;

Операция.Сумма=Сумма-НДС;

Операция.Содержание Проводки="Поступление Товара";

Операция.НомерЖурнала= "ТЦ"

КонецЦикла;

Операция.НоваяПроводка();

Операция.Дебет.Счет=СчетПоКоду("19.6");

Операция.Кредит.Счет =СчетПоКоду("60.1");

Операция.Кредит.Субконто(1, Поставщик);

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

Для записи суммы проводки нам надо получить итоговую сумма по строкам таблицы для реквизита "НДС":

Операция. Сумма=Итог ("НДС");

Кроме того, запишем содержание проводки и номер журнала:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку() =1 Цикл

Операция.НоваяПроводка();

Операция.Дебет.Счет=СчетПоКоду("41.1");

Операция.Дебет.Субконто(1,Товар);

Операция.Кредит.Счет=СчетПоКоду("60.1");

Операция.Кредит.Субконто(1,Поставщик);

Операция.Количество=Количество;

Операция.Сумма=Сумма-НДС;

Операция.СодержаниеПроводки="Поступление Товара";

Операция.НомерЖурнала= "ТЦ"

КонецЦикла;

Операция.НоваяПроводка();

Операция.Дебет.Счет=СчетПоКоду("19.6");

Операция.Кредит.Счет=СчетПоКоду("60.1");

Операция.Кредит.Субконто(1,Поставщик);

Операция.Сумма=Сумма-НДС;

Операция.СодержаниеПроводки="Выделен НДС";

Операция.НомерЖурнала="ТЦ";

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

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

Операция.СуммаОперации=Итого("Сумма")+Итог ("НДС");

Операция.Кредит.Субконто(1,Поставщик);

Операция.Сумма=Сумма-НДС;

Заполним содержание операции:

Операция.Содержание="Поступление товаров";

И, наконец, запишем сформированную операцию:

Операция.Записать():

Окончательный текст модуля документа вы видете ниже:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Операция.НоваяПроводка();

Операция.Дебет.Счет=СчетПоКоду ("41.1");

Операция.Дебет.Субконто(1,Товар);

Операция.Кредит.Счет=СчетПоКоду("60.1");

Операция.Кредит.Субконто(1,Поставщик);

Операция.Количество=Количество;

Операция.Сумма=Сумма-НДС;

Операция.СодержаниеПроводки="Поступление Товара";

Операция.НомерЖурнала= "ТЦ"

КонецЦикла;

Операция.НоваяПроводка();

Операция.Дебет.Счет=Счет По Коду ("19.6");

Операция.Кредит .Счет = Счет По Коду ("60.1");

Операция.Кредит. Субконто (1, Поставщик);

Операция.Сумма=Итог("НДС");

Операция.Содержание Проводки="Выделен НДС";

Операция.Номер.Журнала= "ТЦ";

Операция.СуммаОперации=Итог("Сумма")+Итог ("НДС");

Операция.Содержание="Поступление товаров";

Операция.Записать();

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

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