В процессе ведения складского и торгового учета нередко возникает ситуация, когда требуется скорректировать коэффициент пересчета единицы измерения или упаковки номенклатуры (например, при фасовке товара или изменении параметров упаковки поставщиком). При попытке записать измененную карточку система выдает предупреждение о том, что упаковка или номенклатура уже участвует в товародвижении, и блокирует редактирование коэффициента. Даже отмена проведения всех связанных документов зачастую не позволяет сохранить изменения.
Разберем детально, почему типовые конфигурации 1С устанавливают такой запрет, какие риски несет принудительная правка и как правильно решить данную задачу на практике.
Проанализируем алгоритм контроля, заложенный разработчиками типовых конфигураций. Когда мы пытаемся записать изменения в карточке упаковки или единицы измерения, система инициирует проверку на наличие ссылок в информационной базе.
Эта проверка срабатывает даже при отмене проведения документов по следующим причинам:
ШтрихкодыНоменклатуры, документах установки цен номенклатуры, индивидуальных прайс-листах, ресурсных спецификациях, планах сборки/разборки или шаблонах печати ценников.Посмотрим на типовую ситуацию: даже если распровести все складские накладные, факт привязки штрихкода к упаковке или наличие этой упаковки в непроведенном заказе покупателя продолжит блокировать сохранение нового коэффициента.
Прежде чем пытаться обойти системные блокировки, рассмотрим последствия, к которым приводит смена коэффициента задним числом:
КоличествоУпаковок * Коэффициент != Количество.Если поставщик изменил комплектацию товара (например, в коробку теперь помещается не 10 штук, а 12), физически речь идет о новой единице складского учета. Изменять старый коэффициент в этом случае категорически запрещено правилами бухгалтерского и управленческого учета.
Разберем правильный порядок действий по шагам:
ШтрихкодыНоменклатуры уже для созданной упаковки.Данный подход гарантирует полную сохранность исторических данных, исключает риск расхождения взаиморасчетов и складских остатков.
Бывают случаи, когда коэффициент был внесен ошибочно при первичном заведении номенклатуры, документов по ней оформлено совсем немного, и создавать дублирующие упаковки нецелесообразно. Чтобы штатный механизм позволил изменить реквизит, нам необходимо полностью освободить упаковку от любых ссылок.
Выполним следующую последовательность действий:
Если документов много, а пересоздавать упаковку невозможно по регламентным соображениям, разработчик может перезаписать элемент справочника программно, отключив выполнение встроенной бизнес-логики.
Для этого используется режим загрузки данных, который отключает системные проверки в модуле объекта:
// Создадим или найдем объект для изменения
ОбъектУпаковка = СсылкаНаУпаковку.ПолучитьОбъект();
// Включаем флаг подавления обработчиков событий
ОбъектУпаковка.ОбменДанными.Загрузка = Истина;
// Устанавливаем требуемый коэффициент
ОбъектУпаковка.Коэффициент = НовыйКоэффициент;
// Записываем объект без вызова типовых проверок товародвижения
ОбъектУпаковка.Записать();
Аналогичного эффекта можно добиться встроенной обработкой «Групповое изменение реквизитов». В меню «Дополнительные параметры» обработки необходимо активировать специальный режим разработчика и включить опцию отключения выполнения проверок при записи.
Важное предупреждение: при использовании программного метода разработчик берет на себя полную ответственность за последствия. После изменения коэффициента данным способом потребуется написать вспомогательный алгоритм для пакетного пересчета строк во всех документах, где эта упаковка уже фигурировала, иначе учетные данные окажутся рассинхронизированными.