При переходе с редакции 1С:ERP 2.4 на 2.5 многие пользователи и технические специалисты сталкиваются с неприятной ситуацией: документы Списание из эксплуатации, созданные для позиций, переданных в использование несколько лет назад, перестают проводиться. Система выдает ошибку, требуя заполнения поля Инвентарный номер, хотя на момент передачи ТМЦ (например, в 2019 году) это поле было необязательным или вовсе отсутствовало в логике учета. Разберем детально, почему так происходит и какие существуют пути решения данной проблемы.
Для начала проанализируем ситуацию с точки зрения архитектуры данных. В редакции 2.4 учет ТМЦ в эксплуатации зачастую велся на оборотном регистре накопления ТМЦВЭксплуатации. В этом регистре измерение ИнвентарныйНомер не всегда было ключевым или обязательным для формирования остатков. Однако в редакции 2.5 методология учета существенно изменилась. Теперь этот регистр стал остаточным, а Инвентарный номер — обязательным измерением (дименсией), по которому система контролирует наличие остатков на складах эксплуатации.
При обновлении конфигурации данные переносятся в новую структуру. Если старые записи в эксплуатации не имели инвентарных номеров, в регистре 2.5 они «зависают» с пустым значением измерения. Однако логика документа Списание из эксплуатации в 2.5 жестко настроена на проверку заполнения этого реквизита в табличной части, что создает блокировку: в регистре остаток есть (на пустой ссылке), а документ не дает выбрать «пустоту» или провести строку без номера.
Это наиболее корректный метод с точки зрения сохранения целостности типовой конфигурации. Рассмотрим алгоритм действий по шагам:
Корректировка регистров.Регистр накопления: ТМЦ в эксплуатации.Инвентарный номер пустым.Инвентарный номер выберем заранее созданный (пусть даже фиктивный) элемент справочника Инвентарные номера.Если позиций без номеров слишком много, корректировка вручную займет вечность. Проанализируем возможность автоматизации. В системе 1С:ERP существует стандартная обработка по генерации инвентарных номеров. Мы можем воспользоваться ею или написать небольшой скрипт (внешнюю обработку), который:
ТМЦВЭксплуатации с пустой ссылкой в измерении ИнвентарныйНомер.Пример фрагмента кода для программного создания инвентарного номера:
НовыйНомер = Справочники.ИнвентарныеНомераТМЦ.СоздатьЭлемент();
НовыйНомер.Наименование = "Инв_номер_фиктивный_" + Строка(НоменклатураСсылка.Артикул);
НовыйНомер.Номенклатура = НоменклатураСсылка;
НовыйНомер.Организация = ОрганизацияСсылка;
НовыйНомер.Записать();
Как отмечают участники обсуждения, одним из быстрых способов является временное снятие проверки заполнения реквизита в расширении. Это «костыль», но он эффективен, если вам нужно срочно закрыть период. Рассмотрим, как это реализовать:
В расширении необходимо найти форму документа СписаниеИзЭксплуатации и в процедуре ПередЗаписьюНаСервере или через изменение свойств реквизита табличной части ИнвентарныйНомер установить ПроверкаЗаполнения = ВыдаватьОшибку.НеПроверять.
Важный нюанс: если вы просто отключите проверку в форме, документ может не провестись по регистрам, так как механизм проведения 1С:ERP 2.5 все равно будет искать остатки. Если в регистре остаток числится на «пустой ссылке», то и в документе должна быть «пустая ссылка».
Посмотрим на пример программного проведения через консоль кода для экстренных случаев:
ОбъектДок = ДокументСсылка.ПолучитьОбъект();
Для Каждого СтрокаТЧ Из ОбъектДок.Товары Цикл
// Принудительно очищаем или заполняем пустой ссылкой нужного типа
СтрокаТЧ.ИнвентарныйНомер = Справочники.ИнвентарныеНомераТМЦ.ПустаяСсылка();
КонецЦикла;
ОбъектДок.ОбменДанными.Загрузка = Истина; // Отключаем проверки
ОбъектДок.Записать(РежимЗаписиДокумента.Проведение);
Иногда проблема кроется в настройках системы. Разберем настройки справочника Виды номенклатуры. Если в виде номенклатуры установлен флаг Учет по инвентарным номерам, система будет требовать их во всех документах движения.
Попробуем следующий алгоритм:
Виде номенклатуры.Внимание: этот метод может не сработать, если в регистре накопления уже сформированы остатки с разрезом по номерам, так как изменение настроек вида номенклатуры может потребовать пересчета итогов или привести к несоответствию аналитики.
Проанализировав все варианты, мы рекомендуем Способ 1 (через корректировку регистров) как самый безопасный для базы данных. Он позволяет избежать накопления «хвостов» с неопределенными значениями, которые в будущем могут вызвать ошибки при расчете себестоимости или формировании отчетности «Ведомость ТМЦ в эксплуатации».
Если же объем данных исчисляется тысячами строк, используйте Способ 2 с автоматизированным созданием карточек. Это приведет ваш учет в соответствие с новой методологией 1С:ERP 2.5 и позволит в дальнейшем работать без «хаков» и модификаций конфигурации.