Как программно заполнить счета учета и реквизиты в документе «Реализация товаров и услуг» в 1С:Бухгалтерия 2.0?

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

При автоматизации рутинных задач в 1С часто возникает необходимость создания документов через программный код. Одной из частых проблем, с которой сталкиваются начинающие разработчики в конфигурации «Бухгалтерия предприятия 2.0», является некорректное заполнение счетов учета (БУ, НУ) и налоговых реквизитов в табличной части Товары. Простой записи номенклатуры и количества недостаточно для того, чтобы документ стал готов к проведению. Рассмотрим, как решить эту задачу правильно, опираясь на механизмы типовой конфигурации.

Почему не заполняются счета автоматически?

В типовых конфигурациях 1С, таких как «Бухгалтерия предприятия 2.0», логика заполнения счетов учета не «зашита» в реквизиты напрямую. Она вынесена в отдельные процедуры, которые обращаются к регистрам сведений (например, СчетаУчетаНоменклатуры). Когда вы добавляете товары вручную через интерфейс, вызываются процедуры модуля формы. При программном создании документа эти события не происходят, поэтому счета остаются пустыми, а документ — неработоспособным.

Решение: использование типовых процедур модуля

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

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


// Предположим, что НовДок — это ваш созданный документ
Для Каждого СтрокаТЧ Из НовДок.Товары Цикл
    // Заполнение ставки НДС
    ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТЧ, НовДок);
    
    // Заполнение ГТД и страны происхождения, если это необходимо
    ОбработкаТабличныхЧастей.ЗаполнитьНомерГТДИСтрануПроисхождения(СтрокаТЧ, Ложь, НовДок.Организация, НовДок.Дата);
    
    // Заполнение кода ТНВЭД
    ОбработкаТабличныхЧастей.ЗаполнитьКодТНВЭД(СтрокаТЧ, НовДок.Дата);
    
    // Самое важное: заполнение счетов учета БУ и НУ
    // Параметр "Товары" указывает, что заполняем именно эту табличную часть
    ЗаполнитьСчетаУчетаВСтрокеТабЧасти(СтрокаТЧ, "Товары", Истина);
    
    // Итоговые расчеты сумм
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТЧ, НовДок);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТЧ, НовДок);
КонецЦикла;

Разбор ключевых методов

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

Практические советы по отладке

Если вы сомневаетесь, какие именно параметры передавать в функции, воспользуйтесь проверенным методом:

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

Помните, что при программном создании документов в БП 2.0 крайне важно соблюдать последовательность: сначала заполнение первичных данных (номенклатура, количество), затем вызов процедур по заполнению счетов и налогов, и в самом конце — расчет итоговых сумм и запись объекта.

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

← На главную