При решении учетных задач на платформе 1С:Предприятие (в том числе при подготовке к экзамену «1С:Специалист по платформе») разработчики часто сталкиваются с ситуацией, когда по счету с установленным признаком количественного учета требуется сформировать проводку, содержащую только сумму. Разберем подробно, почему это абсолютно корректное поведение платформы, как устроен механизм признаков учета и какие бизнес-задачи решаются таким способом.
В платформе 1С:Предприятие регистр бухгалтерии спроектирован так, чтобы гибко настраивать учет различных показателей. На счетах учета активов (например, на счете «Товары») обычно ведется как суммовой, так и количественный учет. Для этого в плане счетов создается признак учета, например, Количественный, а в свойствах самого ресурса регистра бухгалтерии Количество этот признак связывается с соответствующим реквизитом плана счетов.
Благодаря этой связи платформа разделяет хранение ресурсов:
Сумма и ресурс Количество суммируются в регистрах бухгалтерии независимо друг от друга по всем установленным измерениям и субконто.Количество передается ноль или значение не заполняется вовсе, регистр запишет нулевое количество, сохранив указанную сумму.Остатки и ОстаткиИОбороты) корректно рассчитывают итоги. Проводка без количества не «ломает» регистр — она просто увеличивает суммовой остаток без изменения количественного остатка на складе.Запись в дебет счета учета товаров только стоимостной оценки без изменения количества — это классический сценарий включения дополнительных затрат в первоначальную стоимость материально-производственных запасов. Выясним причину, почему это необходимо на практике.
Представим типовую цепочку хозяйственных операций:
Дт Товары - Кт Поставщики (Количество: 10, Сумма: 1000). Себестоимость единицы составляет 100 рублей.Дт Товары - Кт Поставщики (Количество: 0, Сумма: 200).В результате на счете «Товары» по данной номенклатуре числится остаток: количество — 10 штук, общая сумма — 1 200 рублей. Себестоимость одной единицы товара возросла со 100 до 120 рублей. Физическое количество товара на складе при этом не изменилось.
Посмотрим на пример кода в модуле документа распределения расходов, где формируется проводка по увеличению себестоимости:
Движение = Движения.Бухгалтерский.Добавить();
Движение.Период = Дата;
Движение.СчетДт = ПланыСчетов.Основной.Товары;
Движение.СчетКт = ПланыСчетов.Основной.РасчетыСПоставщиками;
// Устанавливаем субконто по товару
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = СтрокаТаблицы.Номенклатура;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Склады] = Склад;
// Устанавливаем субконто взаиморасчетов
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = Контрагент;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Договоры] = Договор;
// Количество не заполняем, указываем только сумму
Движение.Сумма = СтрокаТаблицы.СуммаРасходов;
При проведении такого документа в таблице движений регистра реквизит КоличествоДт останется равным нулю, а ресурс Сумма запишет переданное значение.
При реализации учетных механизмов важно учитывать несколько ключевых правил работы с себестоимостью:
СуммаСписания = КоличествоК_Списанию * (СуммаОстаток / КоличествоОстаток). Если документ дополнительных расходов был проведен до оприходования товара или товар был полностью списан, может возникнуть ситуация с ненулевой суммой при нулевом количестве. Алгоритм проведения должен всегда проверять, что КоличествоОстаток > 0.КоличествоК_Списанию = КоличествоОстаток), сумма списания должна принудительно приравниваться ко всему остатку суммы (СуммаСписания = СуммаОстаток). Это исключает зависание копеек из-за погрешностей округления.БлокировкаДанных по счету и субконто, чтобы предотвратить коллизии параллельных транзакций.Таким образом, запись движений без количества при наличии суммовой оценки — это базовый и абсолютно корректный механизм платформы 1С для корректировки стоимости материальных ценностей.