Атрибуты операции и проводки
Бухгалтерская операция имеет аналогию с документом, это просто другое представление документа.
Атрибуты операции — это реквизиты шапки, они, как правило, и берутся из Шапки бухгалтерского документа:
ДатаОперации (Дата, обычно это дата документа), Содержание (обычно произвольная строка),
154______________________ 1С:Предприятие. Практика программирования на платформе V7
СуммаОперации (Число, обычно это итог по сумме — Итог(«Сумма»)),
Документ (ссылка на документ, создавший операцию). Атрибуты проводки — это реквизиты многострочной части.
Количество (Число),
Валюта (элемент справочника, определенный в свойствах планов счетов для валютного учета),
ВалСумма (Число),
Сумма (Число, для валютных счетов — это рублевое покрытие).
Параметры синтетического и аналитического учета задаются в проводке по дебету и кредиту:
Атрибуты Дебета и Кредита:
• Счет,
Субконто (виды и количество субконто определяются выбранным счетом).
Упражнение 28 В документе Приход создайте реквизит шапки ТипУчета типа перечисление ТипыУчета. Предусмотрите ввод его значения по умолчанию -текущее значение константы ТекТипУчета, при создании нового документа в информационной базе.
Х Основы построения «Бухгалтерского учёта» в системе 1С:Предприятие_________ 155
В зависимости от значения этого реквизита мы будем выполнять движения по документу. У этого перечисления три значения: Красное, Белое и Черное. Определим условия проведения документа.
В результате если значение перечисления Красное — документ будет проведен и по оперативному, и по бухгалтерскому учету.
Описание алгоритма Операции в модуле документа.
После того, как мы сконфигурировали объекты бухгалтерского учета можно создать в модуле приходного документа операцию с проводками.
Проводки по документу создаются через атрибут «Операция».
Упражнение 29. Создадим алгоритм формирования операции по документу «Приход» с учетом формирования партии приходным документом и условия списания по бухгалтерскому или оперативному учету.
В окне редактирования документа установим флаг «Бухгалтерский учет», а в модуле документа отредактируем предопределенную процедуру ОбработкаПроведения(). Операцию также можно создать с помощью конструктора формирования операций, но процедуру ОбработкаПроведения() надо будет потом отредактировать.
156______________________ 1С:Лрвдприятие. Практика программирования на платформе V7
В конструкторе заполним атрибуты операции и проводки. Определяемый атрибут проводки выделяем в нижней таблице. Формулу, вычисляющую его значения, определяем по значению или берем из данных документа.
После редактирования модуль документа должен выглядеть примерно так:
// ********************
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку() =1 Цикл
// Запись истории периодического реквизита справочника
Если НовЦенаоОборудование. Цена. Получить (ТекудийДокумент () ) Тогда
ПривязыватьСтроку(НомерСтроки);
УстановитьРеквизитСправочника(Оборудование,"Цена",НовЦена);
КонецЕсли;
Если ТипУчетаоПеречисление.ТипыУчета.Бел Тогда
//}}ДВИЖЕНИЯ_РЕГИСТРОВ
Регистр.Амортизация.Оборудование = Оборудование; Регистр.Амортизация.Партия = ТекущийДокумент(); Регистр.Амортизация.Количество = Количество* Единица.Коэффициент;
Регистр.Амортизация.Стоимость = Сумма;
Х Основы построения «Бухгалтерского учёта» в системе 1С:Предприятие_________ 157
Регистр.Амортизация.ПривязыватьСтроку(НомерСтроки);
Регистр.Амортизация.ДвижениеПриходВыполнить();
//}}ДВИЖЕНИЯ_РЕГИСТРОВ
КонецЕсли;
Если ТипУчетаоПеречисление.ТипыУчета.Чер Тогда
//{{Ф0РМИР0ВАНИЕ_ОПЕРАЦИИ
Операция.НоваяПроводка();
Операция.Дебет.Счет =СчетПоКоду("ОБ.ПР",ПланыСчетов.Учебный);
Операция.Дебет.Оборудование = Оборудование;
Операция.Дебет.Партия = ТекущийДокумент();
Операция.Кредит.Счет=СчетПоКоду("ОБ.СП",ПланыСчетов.Учебный); Операция.Кредит.Оборудование = Оборудование;
Операция.Количество = Количество*Единица.Коэффициент;
Операция.Сумма = Сумма;
Операция.ТипУчета = ТипУчета;
КонецЕсли;
КонецЦикла;
Если ТипУчетаоПеречисление.ТипыУчета.Чер Тогда
Операция.Содержание = "Приход оборудования";
Операция.СуммаОперации = Итог("Сумма");
Операция.Записать();
//}}ФОРМИРОВАНИЕ_ОПЕРАЦИИ
КонецЕсли;
КонецПроцедуры
Обратите внимание, что, в отличие от движений регистров, для которых записывается каждое движение по строке документа, проводки по документу записываются в информационную базу все сразу при записи операции. Если возникает необходимость записать сформированные проводки, например, Чтобы посмотреть бухгалтерские итоги, используется метод Операция.ЗаписатьПроводки(). Метод может использоваться только для атрибута "Операция" документа в момент проведения (в процедуре ОбработкаПроведения). При этом происходит обновление бухгалтерских итогов. Это позволяет при проведении документа обращаться к бухгалтерским итогам, уже измененным проводками, записанными этим документом. После
158 ____________________ 1С:Предприятие. Практика программирования на платформе V7
выполнения метода ЗаписатьПроводки() и до окончания процедуру ОбработкаПроведение уже невозможно изменять или удалять проводки добавленные до вызова этого метода. Данный метод имеет смысл использовать, только в том случае, если существует необходимость обращения к итогам, измененным проводками записываемой операции. При записи сложной проводки, если у главной корреспонденции сложной проводки не указана сумма (равна 0), то она автоматически вычисляется на основании подчиненных корреспонденции.
При добавлении нового субконто или валютного учета («+») по счёту в плане счетов, в модулях документов, по которым проводки формируются интерактивно, необходимо прописать движения по созданным атрибутам счёта: <тип субконто> или <ВалСумма>.
Операция. ВалСумма=...;