Почему не заполняется сумма в проводках по документу Перемещение товаров?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

При работе в конфигурации 1С:Бухгалтерия предприятия 3.0 пользователи часто сталкиваются с ситуацией, когда при перемещении ТМЦ по забалансовым счетам (например, 003.01 «Материалы на складе») в проводках заполняется только количество, а сумма остается нулевой. Это происходит даже в том случае, если в настройках параметров учета и настройках склада активировано ведение учета по количеству и сумме. В этой статье мы подробно разберем причины такого поведения системы и выясним, как добиться заполнения стоимостных показателей.

Анализ структуры документа Перемещение товаров

Для начала проанализируем, как документ ПеремещениеТоваров устроен «под капотом». В нем присутствуют две основные табличные части, отвечающие за разные виды активов:

  1. Товары — предназначена для учета собственных товарно-материальных ценностей, находящихся на балансе (счета 10, 41, 43). Для этой таблицы реализован сложный механизм автоматического расчета себестоимости по методам ФИФО или «По средней».
  2. ТоварыНаКомиссии — используется для забалансовых счетов, таких как 004 (Товары, принятые на комиссию) и 003 (Материалы, принятые в переработку).

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

Почему счет 004 работает, а 003 — нет?

Рассмотрим ситуацию, когда при использовании счета 004 сумма в проводках появляется, а при 003 — отсутствует. Это связано с архитектурой метаданных 1С:

Счет 004 в логике 1С рассматривается как торговый (комиссионная торговля). Для него предусмотрены специализированные регистры накопления, и в коде проведения документа ПеремещениеТоваров прописаны условия, позволяющие подтягивать стоимость из остатков, так как для комитента сумма является критически важным реквизитом.

Счет 003 (Материалы, принятые в переработку) рассматривается как производственный. Типовая логика предполагает, что такие материалы поступают документом ПоступлениеВПереработку, а их перемещение часто носит чисто количественный характер для целей цехового учета. В процедурах проведения документа ПеремещениеТоваров для забалансовых счетов (не являющихся 004) часто стоит прямое присваивание нулевой стоимости в коде:


// Фрагмент логики типового кода (условно)
Если СтрокаТЧ.СчетУчета = СчетаУчета.Счет003 Тогда
    СтрокаТЧ.Себестоимость = 0; // Система не ищет стоимость для данного счета
КонецЕсли;

Проверка настроек учета и остатков

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

  1. Настройки параметров учета: Перейдем в раздел «Администрирование» — «Параметры учета» — «Настройки проведения». Проверим, стоит ли флаг «Разрешить списание запасов при отсутствии остатков». Если флаг снят, а остатка с суммой на складе-отправителе нет на момент времени документа, сумма не проставится.
  2. Остатки по счету 003: Сформируем отчет «Оборотно-сальдовая ведомость по счету» (ОСВ) по счету 003.01 в разрезе складов и номенклатуры. Убедимся, что на складе-отправителе действительно числится сумма. Если при поступлении (например, через «Операцию, введенную вручную») сумма не была указана, перемещению будет нечего «забирать».
  3. Тип цен номенклатуры: Хотя тип цен влияет в основном на печатные формы, проверим карточку склада. Если склад розничный (НТТ), механизм работы документа меняется, но для забалансового счета 003 это обычно не является решением проблемы.

Способ решения №1: Использование документа «Операция, введенная вручную»

Если перемещения по забалансовым счетам происходят редко, самым простым и надежным способом будет использование ручной операции. Рассмотрим этот вариант:

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

Способ решения №2: Программная доработка (для программистов)

Если необходимо автоматизировать процесс, придется вмешаться в код документа. Выясним, где именно нужно внести изменения. Основная логика формирования проводок по забалансовым счетам в ПеремещениеТоваров находится в модуле менеджера или модуле объекта (в зависимости от версии конфигурации) в процедуре обработки проведения.

Нам потребуется изменить алгоритм заполнения таблицы ТоварыНаКомиссии. Рассмотрим пример того, как можно доработать поиск стоимости:


// Пример логики поиска стоимости на забалансовом счете
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ХозрасчетныйОстатки.СуммаОстаток КАК Сумма,
    |	ХозрасчетныйОстатки.КоличествоОстаток КАК Количество
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный.Остатки(&МоментВремени, Счет = &Счет, , 
    |		Субконто1 = &Номенклатура И Субконто2 = &Склад) КАК ХозрасчетныйОстатки";

Запрос.УстановитьПараметр("МоментВремени", Дата);
Запрос.УстановитьПараметр("Счет", СсылкаНаСчет003);
Запрос.УстановитьПараметр("Номенклатура", ТекущаяНоменклатура);
Запрос.УстановитьПараметр("Склад", СкладОтправитель);

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() И Выборка.Количество > 0 Тогда
    СредняяЦена = Выборка.Сумма / Выборка.Количество;
    СуммаПроводки = СредняяЦена * КоличествоПеремещения;
КонецЕсли;

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

Способ решения №3: Переход на счет 004

Как мы выяснили в ходе анализа, счет 004 (Товары на комиссии) обладает более полной поддержкой в типовых механизмах перемещения. Если для организации не принципиально использование именно 003 счета (например, это внутренний управленческий учет материалов на забалансе), можно рассмотреть вариант изменения учетной политики:

  1. Оформить поступление материалов на счет 004.01.
  2. Выполнить перемещение документом ПеремещениеТоваров.
  3. Проверить результат: в проводках по 004 счету сумма должна подтянуться автоматически из остатков.

Резюме

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

← На главную