При внедрении и администрировании систем 1С:Управление торговлей (ред. 11.5), 1С:Комплексная автоматизация (ред. 2) или 1С:ERP Управление предприятием пользователи часто сталкиваются с неочевидным поведением программы при оформлении инвентаризации. Склад настроен как «обычный» (неордерный), но на нем ведется полноценный серийный учет. При попытке списать недостачу или оприходовать излишки система внезапно требует создать складские ордера на отражение излишков и недостач. Хуже того, эти ордера не заполняются автоматически, и пользователям приходится вручную переносить огромные объемы данных, включая сложные серийные номера.
В этой статье мы подробно разберем, почему возникает такая ситуация, как устроена логика работы системы с сериями на неордерных складах и какими способами можно автоматизировать заполнение серий в складских ордерах.
---
Для начала проанализируем настройки программы и выясним первопричину. В системе 1С существует жесткое архитектурное правило: если на складе ведется полноценный учет остатков по сериям (с политикой учета, отличной от справочной), использование ордерной схемы при отражении излишков, недостач и порчи является обязательным.
Даже если в карточке склада полностью отключена ордерная схема для стандартных операций поступления и отгрузки, программа потребует установить флаг «при отражении излишков, недостач и порчи» на вкладке «Ордерная схема и структура». Без этой настройки система просто не позволит назначить для склада политику учета серий с типом «Управление остатками серий» или «Авторасчет по FEFO».
Связано это с тем, что финансовый и складской учет в ERP-решениях 1С разделен на уровне регистров накопления:
Товары на складах отвечает за физическое наличие товаров на конкретных складских ячейках и полках (именно здесь контролируются остатки серий).Товары организаций отвечает за финансовый и налоговый учет товаров, принадлежащих конкретному юридическому лицу.Когда мы списываем или приходуем серийный товар, система должна сделать движения по обоим регистрам. На обычном складе без серий это происходит одним финансовым документом (актом). Но при жестком серийном учете программа разделяет эти операции, превращая склад в «частично ордерный» исключительно под нужды инвентаризации.
---
Разберем ситуацию, когда пользователь сначала создает финансовый документ Списание недостач товаров или Оприходование излишков товаров, а затем пытается создать на их основании складские ордера. В этот момент он обнаруживает, что ордера создаются пустыми, а серии приходится заполнять вручную.
Разработчики 1С заложили в систему строгую последовательность документооборота «от факта к учету»:
Ордер на отражение излишков товаров или Ордер на отражение недостач товаров. На этом этапе в ордер вносятся конкретные серии, обнаруженные «глазами» или ТСД. Эти документы выравнивают физические остатки в регистре Товары на складах.Товары к оформлению излишков и недостач данных система автоматически генерирует финансовые акты списания и оприходования, наследуя из ордеров все данные, включая серии.Если нарушить эту методологию и пойти в обратную сторону (сначала создать финансовый акт, а потом пытаться сделать ордер), система воспримет это как отклонение. Механизм автозаполнения ордера на основании финансового акта в типовой конфигурации не предусмотрен, так как программа считает, что финансовый работник не может знать фактические серии, находящиеся на складе.
Рассмотрим, как решить эту проблему без программирования и с помощью доработок.
---
Если вы хотите избежать доработки конфигурации и ручного ввода серий, необходимо организовать процесс инвентаризации строго по рекомендованному 1С сценарию. В этом случае все серии будут наследоваться автоматически.
Разберем этот процесс по шагам:
Пересчет товаров (раздел Склад и доставка -> Избытки, недостачи, порча -> Пересчеты товаров).Ордер на отражение излишков товаровОрдер на отражение недостач товаровСписание недостач товаровОприходование излишков товаровПри таком сценарии серии из Пересчета товаров автоматически и без потерь перенесутся как в складские ордера, так и в финансовые акты. Ручной ввод полностью исключается.
---
Бывают ситуации, когда бизнес-процесс компании не позволяет использовать документы пересчета товаров, а акты списания/оприходования приходят из внешних систем (например, из WMS или через интеграцию с личными кабинетами маркетплейсов). В этом случае финансовые акты уже созданы, а ордера нужно оперативно заполнить по ним.
Для автоматизации этой задачи можно написать небольшую внешнюю обработку заполнения табличной части для документов ОрдерНаОтражениеИзлишковТоваров и ОрдерНаОтражениеНедостачТоваров.
Проанализируем логику работы такой обработки. Программа должна прочитать данные из регистра накопления Товары к оформлению излишков и недостач (куда попали товары после проведения финансового акта) или напрямую из связанного документа-основания, а затем заполнить табличную часть ордера.
Ниже приведем пример упрощенного алгоритма на языке 1С для интеграции в модуль внешней обработки заполнения табличной части:
// Процедура заполняет табличную часть "Товары" складского ордера на отражение недостач
Процедура ЗаполнитьОрдерПоФинансовымДокументам(ДокументОбъект) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыКОформлению.Номенклатура КАК Номенклатура,
| ТоварыКОформлению.Характеристика КАК Характеристика,
| ТоварыКОформлению.Назначение КАК Назначение,
| ТоварыКОформлению.Количество КАК Количество,
| ТоварыКОформлению.Серия КАК Серия
|ИЗ
| РегистрНакопления.ТоварыКОформлениюИзлишковНедостач КАК ТоварыКОформлению
|ГДЕ
| ТоварыКОформлению.Склад = &Склад
| И ТоварыКОформлению.ДокументОформления = &ДокументОснование";
Запрос.УстановитьПараметр("Склад", ДокументОбъект.Склад);
// Предполагается, что документ-основание передан в реквизит ордера
Запрос.УстановитьПараметр("ДокументОснование", ДокументОбъект.ДокументОснование);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ДокументОбъект.Товары.Очистить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ДокументОбъект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
// Если серия в регистре не заполнена, но на остатках склада по этой номенклатуре
// числится ровно одна серия, мы можем автоматически подставить ее для удобства пользователя
Если Не ЗначениеЗаполнено(Выборка.Серия) Тогда
НоваяСтрока.Серия = ПолучитьЕдинственнуюСериюНаОстатках(Выборка.Номенклатура, ДокументОбъект.Склад);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Использование подобной заполнялки решает проблему ручного труда на 95-100%, особенно в тех случаях, когда у списываемого товара на остатках числится всего одна уникальная серия и система может однозначно ее идентифицировать.
---
Рассмотрим еще один альтернативный вариант. Если для вашей компании учет серий при инвентаризации не является критически важным, и вы не хотите использовать ордера, можно изменить политику учета серий.
Для этого выполните следующие действия:
Важное предупреждение: При таком подходе система перестанет контролировать остатки в разрезе серий при проведении складских операций. Серии в документах списания и оприходования либо станут недоступны для ввода, либо будут носить исключительно информационный характер. Этот вариант категорически не подходит для отраслей с жестким контролем сроков годности (фармацевтика, продукты питания) или серийных номеров техники.
---
Подводя итоги нашего анализа, дадим несколько практических рекомендаций:
Пересчет товаров. Это наиболее логичный и автоматизированный путь.