Как исправить ошибку «Не заполнен счет кредита» при программном создании документа Оприходование запасов в 1С:УНФ

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

При автоматизации загрузки данных из внешних систем, таких как маркетплейс Wildberries, разработчики часто сталкиваются с необходимостью программного создания документов в конфигурации 1С:Управление нашей фирмой (УНФ). Одной из самых распространенных проблем является ошибка проведения документа Оприходование запасов, сопровождающаяся сообщением: «Запись не верна! Не заполнен счет кредита (Регистр бухгалтерии: Журнал проводок)». Это происходит из-за того, что управленческий регистр бухгалтерии требует четкого указания корреспондирующего счета для формирования двойной записи.

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

Разбор причины ошибки: почему 1С требует счет кредита?

Проанализируем ситуацию: документ Оприходование запасов предназначен для отражения излишков товаров, выявленных в результате инвентаризации или иных событий. С точки зрения учета, это означает увеличение активов (дебет счета учета запасов, например, 10 «Запасы» или 41 «Товары») и одновременное признание прочего дохода (кредит счета доходов).

Если при ручном создании документа в интерфейсе программа может подставить значения по умолчанию, то при программном создании объекта Документы.ОприходованиеЗапасов.СоздатьДокумент() многие системные механизмы автозаполнения не срабатывают. Ошибка «Не заполнен счет кредита» означает, что система не понимает, на какой счет «положить» доходную часть операции.

Шаг 1: Исправление хозяйственной операции

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


ДокОприходование.ХозяйственнаяОперация = Справочники.ХозяйственныеОперации.ПоступлениеОтПоставщика;

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

Правильное решение: Необходимо использовать операцию, соответствующую смыслу документа (обычно это «Оприходование»). Чтобы не ошибиться с точным наименованием в коде, лучше использовать поиск по предопределенным данным или стандартным значениям конфигурации.

Шаг 2: Заполнение корреспондирующего счета (счета учета доходов)

Для устранения основной ошибки нам нужно явно указать счет, который будет выступать кредитом в проводке. В 1С:УНФ за это отвечает реквизит шапки СчетУчета (в некоторых версиях или формах он может называться «Корреспонденция»).

Проанализируем, какой счет выбрать. Обычно это счет управленческого плана счетов 91 «Прочие доходы» или специализированный счет для излишков. Рассмотрим пример программного заполнения этого поля:


// Находим нужный счет в плане счетов "Управленческий"
СчетДоходов = ПланыСчетов.Управленческий.НайтиПоКоду("91"); 
// Либо через НайтиПоНаименованию("Прочие доходы")
ДокОприходование.СчетУчета = СчетДоходов;

Без этого реквизита механизм проведения в УНФ не сможет сформировать запись в регистре бухгалтерии ЖурналПроводок, что и вызывает фатальную ошибку.

Шаг 3: Работа со Статьями доходов (актуально для УНФ 3.0)

В современных версиях программы (начиная с 3.0 и выше) счета учета часто тесно связаны со Статьями доходов. Рассмотрим ситуацию: если вы заполнили СчетУчета, но ошибка сохраняется, проверьте наличие реквизита СтатьяДоходов.

Рекомендуем следующий алгоритм заполнения:

  1. Создайте или найдите статью доходов с типом «Прочие доходы».
  2. Укажите её в документе.
  3. Вызовите стандартный метод Заполнить(), который инициализирует связанные параметры.

Шаг 4: Инициализация документа методом Заполнить()

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

Посмотрим на правильную структуру кода:


ДокОприходование = Документы.ОприходованиеЗапасов.СоздатьДокумент();
// Сначала вызываем стандартное заполнение
ДокОприходование.Заполнить(); 

// Затем переопределяем нужные нам поля
ДокОприходование.Дата = ТекущаяДата();
ДокОприходование.Организация = Справочники.Организации.НайтиПоНаименованию("Наша Компания");
ДокОприходование.СтруктурнаяЕдиница = СкладОбъект;
// ... заполнение табличной части Запасы ...

Полный пример исправленного кода

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


ДокОприходование = Документы.ОприходованиеЗапасов.СоздатьДокумент();
ДокОприходование.Дата = ТекущаяДата();
ДокОприходование.Организация = Организация;
ДокОприходование.СтруктурнаяЕдиница = ВиртуальныйСклад;

// Указываем корректную хозяйственную операцию (проверьте точное имя в вашей базе)
ДокОприходование.ХозяйственнаяОперация = Справочники.ХозяйственныеОперации.Оприходование;

// ОБЯЗАТЕЛЬНО: заполняем счет кредита (счет доходов)
ДокОприходование.СчетУчета = ПланыСчетов.Управленческий.НайтиПоКоду("91"); 

// Заполнение табличной части
НоваяСтрока = ДокОприходование.Запасы.Добавить();
НоваяСтрока.Номенклатура = Стр.Номенклатура2;
НоваяСтрока.Количество = Стр.Количество;
НоваяСтрока.Цена = Стр.ЦенаРозничная;
НоваяСтрока.Сумма = Стр.Количество * Стр.ЦенаРозничная;

// Важно убедиться, что счета учета запасов заполнены в самой номенклатуре
// Если они не заполнены там, их придется прописывать в строке ТЧ (поле СчетУчета)

Попытка
    ДокОприходование.Записать(РежимЗаписиДокумента.Проведение);
    Сообщить("Документ успешно проведен: " + ДокОприходование.Ссылка);
Исключение
    Сообщить("Ошибка проведения: " + ОписаниеОшибки());
КонецПопытки;

Дополнительные советы по отладке

Если после внесения правок документ все равно выдает ошибки, проанализируем следующие моменты:

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

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

← На главную