Как оформить реализацию товара с нулевой ценой в 1С:Бухгалтерия

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

При ведении учета в программе «1С:Бухгалтерия» (включая локализованные версии, такие как «Бухгалтерия для Кыргызстана») пользователи часто сталкиваются с ситуацией, когда система блокирует проведение документа реализации, если цена товара равна нулю. Это происходит при попытке выдать бонус покупателю, провести рекламную акцию или передать образцы продукции. Разберем подробно, почему это происходит и какими способами можно решить эту задачу, сохранив корректность учета.

Выясним причину блокировки нулевой цены

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

  1. Свойства реквизита в метаданных: У реквизита Цена в табличной части Товары может быть установлено свойство Проверка заполнения: Выдавать ошибку. В этом случае платформа 1С блокирует запись или проведение документа еще до того, как управление передается в программный код модуля.
  2. Программные проверки в общих модулях: Типовые конфигурации часто содержат функции-валидаторы, которые проверяют заполнение сумм и цен. Это необходимо для предотвращения ошибок в налоговом учете, так как безвозмездная передача часто приравнивается к реализации и требует начисления налогов (НДС, налог на прибыль) исходя из рыночной стоимости.
  3. Настройки параметров учета: В некоторых конфигурациях существует флаг «Запретить отгрузку по нулевой цене», который проверяется в модуле менеджера документа перед проведением.

Решение 1: Проверка свойств реквизита в Конфигураторе

Если система выдает ошибку в момент нажатия кнопки «Провести», но в модуле документа процедура ОбработкаПроведения (или ПриПроведении) не содержит явных условий сравнения с нулем, заглянем в свойства самого объекта. Рассмотрим шаги для программиста:

  1. Откроем конфигурацию и найдем документ РеализацияТоваровУслуг.
  2. Перейдем на вкладку Данные и найдем табличную часть Товары.
  3. Выделим реквизит Цена и откроем его палитру свойств.
  4. Проанализируем свойство Проверка заполнения. Если там выбрано значение «Выдавать ошибку», система не позволит провести документ с пустым (нулевым) значением.

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

Решение 2: Программная корректировка проверки заполнения

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


Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    // Если нам нужно разрешить нулевую цену при определенных условиях
    // (например, если в строке стоит признак "Бонус")
    Для Каждого СтрокаТЧ Из Товары Цикл
        Если СтрокаТЧ.Цена = 0 Тогда
            // Находим индекс реквизита в массиве проверяемых
            Индекс = ПроверяемыеРеквизиты.Найти("Товары.Цена");
            Если Индекс <> Неопределено Тогда
                // Удаляем обязательность проверки для всего документа, 
                // если мы уверены в корректности данных
                ПроверяемыеРеквизиты.Удалить(Индекс);
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Если же проверка зашита глубоко в общих модулях, рекомендуется использовать Замер производительности. Включим замер, нажмем «Провести», получим ошибку и остановим замер. В списке выполненных строк кода мы легко найдем ту самую проверку Если Строка.Цена = 0 Тогда.

Решение 3: Использование механизма скидок (рекомендовано для бухгалтеров)

Проанализируем самый правильный с точки зрения методологии учета способ. Вместо того чтобы устанавливать цену в 0, укажем реальную цену товара, но применим к ней скидку 100%. Рассмотрим, как это работает:

  1. В документе реализации выберем товар.
  2. Укажем его обычную цену (например, из прайс-листа).
  3. В колонке % Скидки установим значение 100.
  4. Система автоматически рассчитает сумму как 0, при этом поле «Цена» останется заполненным.

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

Решение 4: Документ «Безвозмездная передача»

Если целью является именно списание товара в пользу контрагента без возникновения задолженности, воспользуемся специализированным документом Безвозмездная передача. Посмотрим на его преимущества:

Решение 5: Символическая цена

В ситуациях, когда время ограничено, а конфигурацию править нельзя, применим практическую хитрость. Установим цену в 0.01 (1 копейка или 1 тыйын). Это позволит системе провести документ, так как цена формально заполнена и больше нуля. Итоговая сумма задолженности клиента будет ничтожной, и её можно будет списать в конце периода документом Корректировка долга.

Как проверить результат проведения (Дт/Кт)

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

  1. Проводки по складу: Должно быть списание количества по кредиту счета 41 (Товары).
  2. Проводки по задолженности: Если цена была 0, то проводок по дебету счета 62 (Расчеты с покупателями) не будет, либо они будут с нулевой суммой.
  3. Ручная корректировка: Если вам нужно специфическое отражение в учете, установите флаг Ручная корректировка в окне проводок и внесите необходимые изменения в счета и суммы вручную.

Таким образом, мы выяснили, что блокировка нулевой цены — это защитный механизм системы. Наиболее корректным способом решения является использование 100% скидки или документа безвозмездной передачи, а для разработчиков — работа с массивом ПроверяемыеРеквизиты в модуле объекта.

← На главную