При разработке отчетов и аналитических выборок в конфигурации 1С:Бухгалтерия предприятия 3.0 часто возникает задача извлечь данные по реализованным за период позициям номенклатуры — товарам и материалам. Рассмотрим, как правильно составить запрос к регистру бухгалтерии Хозрасчетный, какие виртуальные таблицы и параметры использовать, а также разберем важные методологические особенности учета.
Прежде чем писать текст запроса, проанализируем структуру бухгалтерских проводок, формируемых при реализации:
41 (включая его субсчета, например, 41.01, 41.02). При продаже товаров их учетная стоимость списывается в дебет счета 90.02 («Себестоимость продаж») с кредита счета 41.10 (субсчета 10.01, 10.06 и др.). При реализации материалов на сторону списание себестоимости обычно оформляется проводкой в дебет счета 91.02 («Прочие расходы») с кредита счета 10.Таким образом, для получения себестоимости и количества списанных при продаже позиций нам необходимы проводки с кредитом счетов 10, 41 и дебетом счетов 90.02, 91.02.
Для выборки данных по корреспонденциям счетов в платформе 1С:Предприятие предназначена виртуальная таблица РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт. Разберем по шагам, как настроить параметры этой таблицы, чтобы запрос работал максимально быстро и корректно.
Отбор по счетам необходимо накладывать строго в параметрах виртуальной таблицы, а не в секции ГДЕ. Конструкция В ИЕРАРХИИ позволяет перечислить несколько счетов через запятую непосредственно в тексте запроса либо передать список значений через параметр.
Посмотрим на готовый пример текста запроса:
ВЫБРАТЬ
ХозрасчетныйОборотыДтКт.Регистратор КАК Регистратор,
ХозрасчетныйОборотыДтКт.ПериодСекунда КАК ПериодСекунда,
ХозрасчетныйОборотыДтКт.СчетДт КАК СчетДт,
ХозрасчетныйОборотыДтКт.СчетКт КАК СчетКт,
ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК Номенклатура,
ХозрасчетныйОборотыДтКт.КоличествоОборотКт КАК Количество,
ХозрасчетныйОборотыДтКт.СуммаОборот КАК СуммаСебестоимости
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
&НачалоПериода,
&КонецПериода,
Авто,
СчетДт В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродаж), ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПрочиеРасходы)),
,
СчетКт В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы), ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары)),
,
) КАК ХозрасчетныйОборотыДтКт
Если требуется передавать счета динамически из встроенного языка 1С, рассмотрим программное заполнение параметров:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК Номенклатура,
| СУММА(ХозрасчетныйОборотыДтКт.КоличествоОборотКт) КАК Количество,
| СУММА(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК Себестоимость
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
| &НачалоПериода,
| &КонецПериода,
| ,
| СчетДт В ИЕРАРХИИ (&СчетаРасходов),
| ,
| СчетКт В ИЕРАРХИИ (&СчетаЗапасов),
| ,
| ) КАК ХозрасчетныйОборотыДтКт
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОборотыДтКт.СубконтоКт1";
СчетаРасходов = Новый СписокЗначений;
СчетаРасходов.Добавить(ПланыСчетов.Хозрасчетный.СебестоимостьПродаж);
СчетаРасходов.Добавить(ПланыСчетов.Хозрасчетный.ПрочиеРасходы);
СчетаЗапасов = Новый СписокЗначений;
СчетаЗапасов.Добавить(ПланыСчетов.Хозрасчетный.Товары);
СчетаЗапасов.Добавить(ПланыСчетов.Хозрасчетный.Материалы);
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(ПериодС));
Запрос.УстановитьПараметр("КонецПериода", КонецДня(ПериодПо));
Запрос.УстановитьПараметр("СчетаРасходов", СчетаРасходов);
Запрос.УстановитьПараметр("СчетаЗапасов", СчетаЗапасов);
Результат = Запрос.Выполнить();
Рассмотрим подробнее моменты, на которые следует обратить внимание при анализе полученных данных:
Дт 90.02 (91.02) — Кт 41 (10) списывается исключительно себестоимость запасов. На счетах 90.01 («Выручка») и 90.02 субконто Номенклатура в типовой конфигурации не ведется (аналитика представлена видами «Номенклатурные группы» и «Ставки НДС»). Поэтому получить продажную стоимость (выручку) в разрезе конкретных позиций номенклатуры только из регистра бухгалтерии невозможно. Для выручки по номенклатуре следует обращаться к табличным частям документов реализации или регистру накопления НДСПродажи.Регламентная операция с типом «Корректировка стоимости номенклатуры» доначисляет или сторнирует суммы по проводкам списания (без изменения количества), приводя среднюю скользящую оценку к средневзвешенной. Если исключить эти документы через фильтр по регистратору, итоговая себестоимость проданных товаров окажется недостоверной.ГДЕ НЕ Регистратор ССЫЛКА ... в секции ГДЕ запроса ухудшает производительность, так как СУБД вынуждена соединять таблицы всех видов документов и выполнять полное сканирование. Корректная фильтрация по счетам дебета и кредита автоматически отсекает лишние хозяйственные операции (производство, внутреннее перемещение и др.) без необходимости ручного исключения типов документов.90.02 и кредиту 41 с отрицательными значениями сумм и количества, что позволяет автоматически уменьшать оборот реализации на величину возвращенных позиций.