Как добавить выбор склада в табличную часть документа Поступление товаров и услуг в 1С:Бухгалтерия 2.0

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

В типовом решении 1С:Бухгалтерия предприятия 2.0 (на платформе 8.2/8.3 с обычными формами) склад указывается в шапке документа. Это означает, что все товары по одной накладной должны приходоваться на одно место хранения. Однако на практике часто возникает необходимость распределить товары из одной поставки по разным складам. Разберем, как реализовать эту возможность, какие существуют альтернативы и с какими техническими сложностями придется столкнуться.

Почему это нельзя сделать в настройках

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

Вариант 1: Организационное решение (без программирования)

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

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

Вариант 2: Доработка конфигурации (внесение склада в табличную часть)

Если бизнес-процесс требует наличия склада именно в строках одного документа, рассмотрим шаги по реализации этой задачи. Нам потребуется изменить объект Документ.ПоступлениеТоваровУслуг.

Шаг 1. Добавление реквизита. В табличную часть Товары (а также, при необходимости, Оборудование и Тара) нужно добавить новый реквизит Склад с типом ссылки на справочник Склады.

Шаг 2. Модификация формы. Необходимо вынести новую колонку на форму документа. Проанализируем ситуацию: если склад в строке заполнен, он должен иметь приоритет перед складом в шапке. Рекомендуется добавить обработчик события ПриИзменении для колонки склада в табличной части, а также предусмотреть механизм автоматического заполнения склада в строках значением из шапки при добавлении новых строк.

Шаг 3. Изменение модуля проведения. Это самый ответственный этап. Проанализируем, как формируются проводки. Типовой код берет значение субконто Склады из реквизита шапки документа. Нам необходимо переписать цикл обработки табличной части в процедуре ДвиженияПоРегистрам. Рассмотрим пример логики:


Для Каждого СтрокаТЧ Из Товары Цикл
    // ... стандартный код подготовки данных ...
    // Вместо использования СкладШапки, берем значение из строки
    СкладДляПроводки = ?(ЗначениеЗаполнено(СтрокаТЧ.Склад), СтрокаТЧ.Склад, СкладШапки);
    
    // Формирование проводки по счету (например, 10 или 41)
    Движение = Движения.Хозрасчетный.Добавить();
    Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады] = СкладДляПроводки;
    // ... остальные параметры проводки ...
КонецЦикла;

Критические точки и риски доработки

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

  1. Подсистема НДС. Документ делает записи в регистры накопления, такие как НДС предъявленный. В этих регистрах также есть измерение Склад. Если не изменить логику их заполнения в модуле объекта, возникнут расхождения между бухгалтерским учетом и данными для Книги покупок.
  2. Расчет себестоимости. Если в учетной политике установлено ведение учета «По средней» в разрезе складов, алгоритм проведения должен корректно рассчитывать остатки и стоимость для каждого склада отдельно внутри одного документа.
  3. Ввод на основании. Посмотрим на цепочку документов: при создании ВозвратТоваровПоставщику или СчетФактураПолученный на основании нашего поступления, типовые механизмы не увидят склады из строк. Потребуется доработка правил заполнения всех зависимых объектов.
  4. Печатные формы. Стандартные формы (М-4, ТОРГ-12) берут склад из шапки. Вам придется модифицировать макеты или программные модули формирования печати, чтобы данные группировались по складам или выводились корректно.

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

Рекомендация

Если склад в строках нужен только для аналитики (информационно) и не должен влиять на проводки, используйте механизм дополнительных реквизитов для строк табличной части. Если же цель — именно раздельное движение по счетам учета, оцените возможность внедрения виртуального «Центрального склада», с которого товар будет распределяться по реальным точкам документом ПеремещениеТоваров. Это сохранит чистоту конфигурации и обеспечит корректность учета без дорогостоящей разработки.

← На главную