В процессе работы с системой 1С:ERP пользователи часто сталкиваются с ситуацией, когда после кропотливого заполнения табличной части документа Приобретение товаров и услуг выясняется, что в шапке указан неверный склад. При попытке изменить значение в поле Склад система выдает предупреждение или автоматически очищает колонку Серии. Если в документе десятки позиций, ручное перенаполнение данных превращается в трудоемкую задачу. Рассмотрим подробнее, почему это происходит и какими способами можно сохранить данные.
Прежде чем приступать к исправлению, проанализируем внутреннюю логику конфигурации. В 1С:ERP (и аналогично в 1С:КА) учет серий строится на базе объекта ПолитикиУчетаСерий. Важной особенностью является то, что политика привязывается к связке Вид номенклатуры + Склад. Это означает, что для одного и того же товара на Складе №1 серии могут учитываться справочно, а на Складе №2 — по остаткам (FEFO).
Когда мы меняем склад в документе, система инициирует процедуру пересчета видимости и доступности полей. Она проверяет, нужны ли серии на новом складе. Поскольку контекст складского учета меняется, типовой алгоритм 1С считает наиболее безопасным очистить старые данные, чтобы избежать записи серий, которые могут не соответствовать политике нового склада (например, если на новом складе требуется указание срока годности, а на старом фиксировался только номер).
Проанализируем самый простой и быстрый способ, который доступен в современных версиях платформы 8.3. Этот метод не требует внесения изменений в конфигурацию и отлично подходит для разовых исправлений ошибок.
Ctrl + A).Ctrl + C).Ctrl + V.Важный момент: Платформа попытается сопоставить данные. Если настройки серий на новом складе позволяют принять скопированные данные, серии автоматически подставятся в соответствующие колонки. Это работает благодаря тому, что в буфере обмена 1С хранит полную структуру строки, включая скрытые идентификаторы серий.
Рассмотрим ситуацию, когда ошибки возникают часто или специфика бизнеса предполагает распределение одной поставки по разным местам хранения. В этом случае целесообразно изменить режим работы самого документа.
Приобретение товаров и услуг поле Склад переместится из шапки документа (закладка «Основное») непосредственно в табличную часть Товары.Разберем преимущество этого подхода: теперь изменение склада для конкретной строки не влияет на остальные позиции. Это минимизирует риск потери данных во всем документе при случайной ошибке в одной строке.
Если вышеописанные методы не подходят, и мы хотим радикально изменить поведение системы, воспользуемся механизмом расширений. Нам необходимо вмешаться в обработчик изменения реквизита Склад. Посмотрим на примерную логику, которую нужно реализовать в модуле формы документа.
Основная задача — временно сохранить таблицу серий перед стандартной обработкой изменения склада и восстановить ее после, если это технически возможно. Проанализируем пример кода для расширения:
&НаКлиенте
Процедура После_СкладПриИзменении(Элемент)
// Вызываем серверный метод для восстановления серий,
// если они были очищены типовым кодом, но политики совпадают
ВосстановитьСерииПослеСменыСкладаСервер();
КонецПроцедуры
&НаСервере
Процедура ВосстановитьСерииПослеСменыСкладаСервер()
// Логика проверки политик нового склада
// Если на новом складе серии требуются и структура совпадает,
// переносим данные из временной структуры обратно в Объект.Товары
КонецПроцедуры
Однако стоит предостеречь от простого "закомментирования" строк очистки в типовом коде. Рассмотрим риски: если программно оставить серию в документе, а политика нового склада не предполагает учет серий, документ может провестись некорректно, что приведет к "зависанию" остатков в регистре СерииТоваровНаСкладах без возможности их дальнейшего списания через складские акты.
Выясним ситуацию, когда товар уже принят на склад, документ проведен, и только спустя время обнаружилась ошибка. Вместо того чтобы править задним числом документ приобретения (что может "развалить" последовательность партионного учета), правильно будет создать документ Перемещение товаров.
Для упрощения работы пользователя можно создать простую обработку или расширение, которое будет формировать Перемещение товаров на основании Приобретения одной кнопкой. В этом случае все серии и партии будут перенесены корректно, а в системе сохранится прозрачная история движения товара.
Мы проанализировали несколько вариантов решения проблемы очистки серий. Подведем итог:
Политик учета серий между старым и новым складом.Серия в ERP — это не просто строковый реквизит, а ключ к записям во многих регистрах накопления, и его корректность напрямую влияет на расчет себестоимости и финансовый результат.