1С Предприятие. Практика программирования на платформе v7

Атрибуты операции и проводки


Бухгалтерская операция имеет аналогию с документом, это просто другое представление документа.

Атрибуты операции — это реквизиты шапки, они, как правило, и берутся из Шапки бухгалтерского документа:

ДатаОперации (Дата, обычно это дата документа), Содержание (обычно произвольная строка),

154______________________ 1С:Предприятие. Практика программирования на платформе V7

СуммаОперации (Число, обычно это итог по сумме — Итог(«Сумма»)),

Документ (ссылка на документ, создавший операцию). Атрибуты проводки — это реквизиты многострочной части.

Количество (Число),

Валюта (элемент справочника, определенный в свойствах планов счетов для валютного учета),

ВалСумма (Число),

Сумма (Число, для валютных счетов — это рублевое покрытие).

Параметры синтетического и аналитического учета задаются в проводке по дебету и кредиту:

Атрибуты Дебета и Кредита:

•    Счет,



Субконто (виды и количество субконто определяются выбранным счетом).

Упражнение 28 В документе Приход создайте реквизит шапки ТипУчета типа перечисление ТипыУчета. Предусмотрите ввод его значения по умолчанию -текущее значение константы ТекТипУчета, при создании нового документа в информационной базе.

Х Основы построения «Бухгалтерского учёта» в системе 1С:Предприятие_________ 155

В зависимости от значения этого реквизита мы будем выполнять движения по документу. У этого перечисления три значения: Красное, Белое и Черное. Определим условия проведения документа.

В результате если значение перечисления Красное — документ будет проведен и по оперативному, и по бухгалтерскому учету.

Описание алгоритма Операции в модуле документа.

После того, как мы сконфигурировали объекты бухгалтерского учета можно создать в модуле приходного документа операцию с проводками.

Проводки по документу создаются через атрибут «Операция».

Упражнение 29. Создадим алгоритм формирования операции по документу «Приход» с учетом формирования партии приходным документом и условия списания по бухгалтерскому или оперативному учету.




В окне редактирования документа установим флаг «Бухгалтерский учет», а в модуле документа отредактируем предопределенную процедуру ОбработкаПроведения(). Операцию также можно создать с помощью конструктора формирования операций, но процедуру ОбработкаПроведения() надо будет потом отредактировать.

156______________________ 1С:Лрвдприятие. Практика программирования на платформе V7

В конструкторе заполним атрибуты операции и проводки. Определяемый атрибут проводки выделяем в нижней таблице. Формулу, вычисляющую его значения, определяем по значению или берем из данных документа.



После редактирования модуль документа должен выглядеть примерно так:

// ********************

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

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

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

// Запись истории периодического реквизита справочника

Если НовЦенаоОборудование. Цена. Получить (ТекудийДокумент () ) Тогда

ПривязыватьСтроку(НомерСтроки);

УстановитьРеквизитСправочника(Оборудование,"Цена",НовЦена);

КонецЕсли;

Если ТипУчетаоПеречисление.ТипыУчета.Бел Тогда

//}}ДВИЖЕНИЯ_РЕГИСТРОВ

Регистр.Амортизация.Оборудование = Оборудование; Регистр.Амортизация.Партия = ТекущийДокумент(); Регистр.Амортизация.Количество = Количество* Единица.Коэффициент;

Регистр.Амортизация.Стоимость = Сумма;

Х Основы построения «Бухгалтерского учёта» в системе 1С:Предприятие_________ 157

Регистр.Амортизация.ПривязыватьСтроку(НомерСтроки);

Регистр.Амортизация.ДвижениеПриходВыполнить();

//}}ДВИЖЕНИЯ_РЕГИСТРОВ

КонецЕсли;

Если ТипУчетаоПеречисление.ТипыУчета.Чер Тогда

//{{Ф0РМИР0ВАНИЕ_ОПЕРАЦИИ

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

Операция.Дебет.Счет =СчетПоКоду("ОБ.ПР",ПланыСчетов.Учебный);

Операция.Дебет.Оборудование = Оборудование;

Операция.Дебет.Партия = ТекущийДокумент();

Операция.Кредит.Счет=СчетПоКоду("ОБ.СП",ПланыСчетов.Учебный); Операция.Кредит.Оборудование = Оборудование;

Операция.Количество = Количество*Единица.Коэффициент;

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

Операция.ТипУчета = ТипУчета;

КонецЕсли;



КонецЦикла;

Если ТипУчетаоПеречисление.ТипыУчета.Чер Тогда

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

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

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

//}}ФОРМИРОВАНИЕ_ОПЕРАЦИИ

КонецЕсли;

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

Обратите внимание, что, в отличие от движений регистров, для которых записывается каждое движение по строке документа, проводки по документу записываются в информационную базу все сразу при записи операции. Если возникает необходимость записать сформированные проводки, например, Чтобы посмотреть бухгалтерские итоги, используется метод Операция.ЗаписатьПроводки(). Метод может использоваться только для атрибута "Операция" документа в момент проведения (в процедуре ОбработкаПроведения). При этом происходит обновление бухгалтерских итогов. Это позволяет при проведении документа обращаться к бухгалтерским итогам, уже измененным проводками, записанными этим документом. После

158    ____________________ 1С:Предприятие. Практика программирования на платформе V7

выполнения метода ЗаписатьПроводки() и до окончания процедуру ОбработкаПроведение уже невозможно изменять или удалять проводки добавленные до вызова этого метода. Данный метод имеет смысл использовать, только в том случае, если существует необходимость обращения к итогам, измененным проводками записываемой операции. При записи сложной проводки, если у главной корреспонденции сложной проводки не указана сумма (равна 0), то она автоматически вычисляется на основании подчиненных корреспонденции.

При добавлении нового субконто или валютного учета («+») по счёту в плане счетов, в модулях документов, по которым проводки формируются интерактивно, необходимо прописать движения по созданным атрибутам счёта: <тип субконто> или <ВалСумма>.

Операция. ВалСумма=...;


Содержание раздела