Опубликован: 06.12.2011 | Уровень: специалист | Доступ: платный
Лекция 3:

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

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >
Аннотация: В этой лекции рассматривается разработка процедур проведения по подсистеме бухгалтерского учета для документов, отражающих списание материальных ценностей, а так же – разработка документа, используемого для переоценки валютных остатков при изменении курса валюты

Цель лекции: разработать новые и модифицировать существующие документы для работы с бухгалтерской подсистемой

Проведение документа ОтпускМатериаловМастеру

Документ ОтпускМатериаловМастеру используется для отражения списания материалов в производство. Мы, при списании материалов этим документом, будем списывать их по средней себестоимости в рамках отдельного ответственного лица, за которым эти материалы числятся, причем, числятся исключительно на счете Материалы для производства. Наш документ ОтпускМатериаловМастеру уже используется в системе для решения задач оперативного учета материалов, мы, чтобы не усложнять задачу, оставим процедуру проведения по регистру накопления в исходном состоянии, добавив в модуль документа еще одну процедуру следующего вида:

Процедура ОбработкаПроведенияПоБухучету(Отказ)
КонецПроцедуры

Вызовем эту процедуру в начале процедуры ОбработкаПроведения, в итоге, получим такой код вызова:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
  ОбработкаПроведенияПоБухучету(Отказ);
…
КонецПроцедуры

Здесь мы вызываем процедуру и передаем ей параметр Отказ. Установка этого параметра в процедуре ОбработкаПроведенияПоБухучету в значение Истина позволит нам, при необходимости, отказаться от проведения документа, при предварительной проверке перед формированием движений по бухгалтерскому учету.

В нашей конфигурации потенциально возможна ситуация, когда количество материалов определенного вида, числящееся по бухгалтерскому учету на счете Материалы для производства за определенным сотрудником, будет не соответствовать общему количеству материалов, которое за ним числится. Например, если в документе запрошено списание 5 единиц некоей позиции, и, в то же время, по данным регистра накопления за сотрудником числится 6 единиц, а по данным остатка этого вида материала на счете Материалы для производства, будет получено количество 4, документ проведен не будет. В данном случае будем считать, что бухгалтерские данные имеют приоритетное значение, и, поэтому, возникновение подобной ситуации приведет к отказу от проведения документа.

Данные для проведения документа мы получаем двумя запросами. Одним – для формирования движений по регистру накопления, другим – по регистру бухгалтерии. Часть данных, получаемых запросами, дублируется. Для целей оптимальности можно объединить эти запросы в один и соответствующим образом переработать процедуры проведения, так же объединив их.

В основе процедуры проведения по бухгалтерскому учету документа ОтпускМатериаловМастеру лежит запрос. Запрос будет оперировать, во-первых, данными табличной части документа, во-вторых – сведениями об остатках номенклатурных позиций на определенном счете с определенным набором субконто (Номенклатура и Сотрудник).

Сначала получим данные, которые нам нужны из табличной части документа. Это можно сделать с помощью такого запроса ( рис. 3.1):

ВЫБРАТЬ
  ДокМ.Номенклатура,
  СУММА(ДокМ.Количество)КАК Количество
ИЗ
  Документ.ОтпускМатериаловМастеру.Материалы Как ДокМ
ГДЕ
  ДокМ.Ссылка=&Ссылка
СГРУППИРОВАТЬ ПО
  ДокМ.Номенклатура
Запрос по табличной части документа в консоли запросов

увеличить изображение
Рис. 3.1. Запрос по табличной части документа в консоли запросов

Теперь нам нужно дополнить данные, полученные из табличной части, сведениями из подсистемы бухгалтерского учета. Регистр бухгалтерии имеет несколько виртуальных таблиц, в частности, одна из них – это таблица остатков. Сохраним текст запроса к табличной части документа и воспользуемся консолью запросов для исследования таблицы Остатки регистра бухгалтерии, рис. 3.2

Запрос по виртуальной таблице регистра бухгалтерии Остатки

увеличить изображение
Рис. 3.2. Запрос по виртуальной таблице регистра бухгалтерии Остатки

Изменять ширину колонок в консоли запросов можно, пользуясь бегунком Ширина колонок.

Мы хотели бы получить из таблицы регистра данные о количественном и суммовом остатке материалов на заданном нами счете и по заданному набору субконто.

Таблица остатков регистра бухгалтерии поддерживает следующие параметры:

Период – здесь можно указать момент времени, на который нужно получить остатки.

Условие счета – позволяет указать счет, по которому нужно производить отбор.

Субконто – этот параметр может принимать ссылку или массив ссылок на виды субконто.

Условие – дополнительное условие на выборку данных, в частности, на значения субконто или измерений регистра.

Данные, полученные после ограничения выборки таблицы остатков моментом времени и счетом, говорят нам о том, что следующее ограничение будет заключаться в отборе данных, которые будут содержать в себе остатки по комбинации необходимых субконто, то есть – по остаткам нужных видов номенклатуры, которые числятся за ответственным лицом, указанным в документе. Для этого нам нужно будет, установить условие на значение субконто – одно из них должно соответствовать ответственному лицу, указанному в документе, второе – одной из номенклатурных позиций, перечисленной в табличной части. Кроме того, в параметры виртуальной таблицы нужно будет передать список видов субконто, по которым мы хотим производить отбор, в нашем случае мы собираемся отбирать данные по двум субконтопо субконто Номенклатура и по субконто Сотрудники, поэтому нам придется передавать в данный параметр массив ссылок.

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

На данном этапе работы мы приходим к необходимости пользоваться данными, которые были получены запросом по табличной части документа, в запросе, который будет выполняться по таблице остатков регистра бухгалтерии. Лучше всего для решения подобной задачи подойдет оформление результатов первого запроса в виде виртуальной таблицы и последующее использование этой виртуальной таблицы в запросе к таблице остатков регистра бухгалтерии.

В итоге, после работы с консолью запросов, мы имеем такой текст запроса:

ВЫБРАТЬ
  ДокМ.Номенклатура,
  СУММА(ДокМ.Количество)КАК Количество
ПОМЕСТИТЬ ДокМТч
ИЗ
  Документ.ОтпускМатериаловМастеру.Материалы Как ДокМ
ГДЕ
  ДокМ.Ссылка=&Ссылка
СГРУППИРОВАТЬ ПО
  ДокМ.Номенклатура
;
ВЫБРАТЬ
  ДокМТч.Номенклатура,
  ДокМТч.Количество,
  ЕСТЬNULL(Остатки.СуммаОстаток,0) КАК СуммаОстаток,
  ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК КоличествоОстаток  
ИЗ
  ДокМТч КАК ДокМТч
    ЛЕВОЕ СОЕДИНЕНИЕ
      РегистрБухгалтерии.Хозрасчетный.Остатки (
        &МоментВремени, 
        Счет=&Счет,
        &Субконто,
        Субконто1 В(ВЫБРАТЬ
                ДокМТч.Номенклатура
              ИЗ
                ДокМТч)
            И Субконто2=&Ответственный) КАК Остатки
      ПО ДокМТч.Номенклатура=Остатки.Субконто1
< Лекция 2 || Лекция 3: 123456 || Лекция 4 >
Константин Павлов
Константин Павлов

Почему в лекции 1 "Основы организации бухгалтерской подсистемы" курса "Разработка прикладных решений для платформы 1С:Предприятие 8.2 в режиме "Управляемое приложение"" совершенно нет информации о том что нужно на вкладке данные в табличной части создать табличную часть "ВидыСубконто" и также нет информации о том какие нужно добавить реквизиты и какие у этих реквизитов должен быть тип? Считаю лекцию 1 в данном вопросе недоработанной.

Надежда Федулкина
Надежда Федулкина
Олег Некрасов
Олег Некрасов
Россия
Алексей Васильев
Алексей Васильев
Россия, Новосибирск