Причина в том, что запрос СКД в шаблоне этикеток остался прежним, с объектами, которых уже нет в конфигурации. Попытка редактировать шаблон, как макет, так и СКД, заканчивается всё той же ошибкой.
Если создать новый, пустой шаблон, то он печатается, т.к. конфигурация генерирует правильный запрос в СКД. Очевидное решение - перенести запрос из нового шаблона в старые. Но, как упоминалось, возможность редактирования старых этикеток закрыта из-за ошибки.
Для решения задачи была создана простая обработка КопированиеШаблона.epf, которая позволяет переносить макеты и СКД между шаблонами.
- Кнопка "Копия СКД" переносит запрос из источника в приемник. В качестве источник используется новый шаблон с правильным запросом.
- Кнопка "Копия шаблона" переносит макет из источника в приемник. Это может пригодиться, если вы хотите создать несколько похожих этикеток. Или посмотреть в тестовом шаблоне, как выглядел макет старой этикетки.
- Кнопка "Поменять источник приемник" меняет местами шаблоны.
Обработку можно применять при любом обновлении, если при этом запрос СКД становится неправильным.
Также обработку можно использовать как образец для создания других простых обработок под управляемыми формами 8.3, когда надо перекинуть значение между записями одного справочника, а в режиме "Предприятие" это сделать нельзя.
Информация для специалистов:
Шаблоны этикеток хранятся в справочнике "ХранилищеШаблонов".
В записи этого справочника СКД и макет хранятся в реквизитах с типом "Хранилище значений".
Ключевая процедура переноса СКД:
&НаСервереБезКонтекста
Процедура КопияСКДНаСервере(ШаблонИсточник, ШаблонПриемник)
ОбъектШаблонПриемник = ШаблонПриемник.ПолучитьОбъект();
ОбъектШаблонПриемник.СхемаКомпоновкиДанных = Новый ХранилищеЗначения(ШаблонИсточник.СхемаКомпоновкиДанных.Получить());
ОбъектШаблонПриемник.Записать();
КонецПроцедуры