Конструктор проводок

Материал из VcVSoft wiki server
Перейти к: навигация, поиск

Общая схема и термины

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

Основная идея состоит в том, чтобы записать шаблоны хозяйственных операций в справочник Операции документов. Реквизиты объектов - формулы, либо значения из базы данных.

Алгоритм формирования движений

  • В обработчике документа (подписка на событие ОбработкаПроведения) вызывается функция КалькуляторВСВ.ПровестиПоБухгалтерии(Источник,Отказ,РежимПроведения)
  • Формируется контекст исполнения в виде структуры, в которой роль ключей играют идентификаторы реквизитов и табличных частей документа, а роль значений - значения реквизитов и таблицы значений с колонками соответствующими идентификаторам табличных частей. Вышеописанные действия формируются функцией КалькуляторВСВ.СформироватьКонтекстДляПроведения(Источник). Данная функция вызывает метод СформироватьКонтекст расположенный в модуле менеджера документа, для которого создаются движения. Если метод отсутствует, то функция возвращает контекст в виде описанном выше. Такая связка необходима для того, чтобы вставить в контекст реквизиты документа, которые создаются при проведении документа. Например в документе Реализация запасов заранее неизвестна учетная стоимость ТМЦ, которя формируется только в момент проведения. Поэтому необходимо табличную часть Запасы заполнить значениями для Партий и учетной стоимости.
  • Просматриваютя метаданные документа на наличие реквизита ОперацияДокумента с типом СправочникСсылка.ОперацииДокументовВСВ. В случае нахождения такого реквизита производится проход в цикле по всем строкам табличной части (Если такого реквизита нет, но есть Статья Движения с типом СправочникСсылка.СтатьиДвиженияТМЦВСВ или СправочникСсылка.СтатьиДвиженияДенежныхСредствВСВ, то нужно в модуле объекта прописать следующий код: ОперацияДокумента = Справочники.ОперацииДокументовВСВ.НайтиПоСтатьеДвижения(СтатьяДвижения,Метаданные().Имя); Если реквизит есть, то нужно вывести его на форму ) Проводки, с атрибутом ТабличнаяЧасть равным Шапка при этом аналитика рассчитывается согласно формулам содержащимся в соответствующих строках табличных частей АналитикаДТ и АналитикаКТ. Реквизиты Количество, Сумма и СуммаВал рассчитываются по тому же принципу. При этом, если для реквизита не указан флажок ЭтоФормула, то в качестве значения берется значение из соответствующего реквизита проводки без обработки.
  • После создания движений для строк с идентификатором табличной части равным Шапка второй цикл проводок делается остальных строк, которые предназначены для конкретных табличных частей. При этом проводка применяется для каждой строки табличной части. Т.е. цикл по строкам находится внутри цикла по проводкам/ Т.е. имеем следующую вложенность циклов:

Цикл по проводкам

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

Цикл по строкам табличной части

Цикл по проводкам для каждой строки
  • В формулах для шапки доступны вызовы математических функций, обращения к реквизитам шапки и итогам (функция ИтогТЧ) по табличным частям
  • В формулах для табличной части и в операциях добавляются реквизиты табличной части для текущей строки.
  • Аналитика для дебета и кредита определяется видами субконто для соответствующих счетов.

Схема привязки (рис. 1)

Логическая схема конструктора проводок.png


Назад