Повторная печать кодов маркировки в УТ 11.4.11.84 работает без дополнений. Необходимо пользователю включить роль "ПовторнаяПечатьКодовМаркировкиИСМП". После этого в документе "Заказ на эмиссию кодов маркировки СУЗ ИСМП" будет активна команда "Сбросить признак печати". Вызов команды сбрасывает признак печати и дает еще один раз распечатать коды. Сбрасывать можно неограниченное количество раз.
В моем расширении достаточно очистить весь текст в модуле менеджера регистра сведений "ПулКодовМаркировкиСУЗ", в форме "ФормаПечати" заменить процедуру на:
Процедура МО_ЗаполнитьДанныеФормы(Отказ)
ЭтоЗаказНаЭмиссию = ТипЗнч(Документ) = Тип("ДокументСсылка.ЗаказНаЭмиссиюКодовМаркировкиСУЗ");
Если НЕ ТолькоАгрегированныеКоды Тогда
ТекстЗапроса = "
|ВЫБРАТЬ
| ПулКодовМаркировки.ВидПродукции КАК ВидПродукции,
| ПулКодовМаркировки.Номенклатура КАК Номенклатура,
| ПулКодовМаркировки.Характеристика КАК Характеристика,
| ПулКодовМаркировки.Шаблон КАК Шаблон,
| ПулКодовМаркировки.СпособВводаВОборот КАК СпособВводаВОборот,
| КОЛИЧЕСТВО(ПулКодовМаркировки.КодМаркировки) КАК Количество,
| СУММА(ВЫБОР
| КОГДА ПулКодовМаркировки.ДатаПечатиУниверсальная = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ) КАК КоличествоПечать,
| &ПустойШаблонЭтикетки КАК ШаблонПотребительскойЭтикетки,
| ЕСТЬNULL(КэшОписанияОстатков.Представление, """") КАК ПредставлениеНоменклатуры
|ИЗ
| РегистрСведений.ПулКодовМаркировкиСУЗ КАК ПулКодовМаркировки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КэшОписанияОстатковИСМП КАК КэшОписанияОстатков
| ПО КэшОписанияОстатков.GTIN = ПулКодовМаркировки.GTIN
| И ПулКодовМаркировки.Номенклатура = &ПустаяНоменклатура
|ГДЕ
| ПулКодовМаркировки." + ?(ЭтоЗаказНаЭмиссию, "ЗаказНаЭмиссию", "ДокументОснование") + " = &Документ
| И ПулКодовМаркировки.ШтрихкодУпаковки = ЗНАЧЕНИЕ(Справочник.ШтрихкодыУпаковокТоваров.ПустаяСсылка)
| И ПулКодовМаркировки.ДатаПечатиУниверсальная = ДАТАВРЕМЯ(1, 1, 1)
|
|СГРУППИРОВАТЬ ПО
| ПулКодовМаркировки.ВидПродукции,
| ПулКодовМаркировки.Номенклатура,
| ПулКодовМаркировки.Характеристика,
| ПулКодовМаркировки.Шаблон,
| ПулКодовМаркировки.СпособВводаВОборот,
| ЕСТЬNULL(КэшОписанияОстатков.Представление, """")
|";
#Вставка
ТекстЗапроса = ТекстЗапроса + "Упорядочить ПО ПулКодовМаркировки.Номенклатура, ПулКодовМаркировки.Характеристика";
#КонецВставки
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Документ", Документ);
Запрос.УстановитьПараметр("ПустаяНоменклатура", ИнтеграцияИС.ПустоеЗначениеОпределяемогоТипа("Номенклатура"));
Запрос.УстановитьПараметр(
"ПустойШаблонЭтикетки",
ИнтеграцияИС.ПустоеЗначениеОпределяемогоТипа("ШаблонЭтикеткиИС"));
ТаблицаСвободныхКодов = Запрос.Выполнить().Выгрузить();
ТаблицаСвободныхКодов.Колонки.Добавить("Содержимое", ОбщегоНазначения.ОписаниеТипаСтрока(500));
Для Каждого СтрокаТаблицы Из ТаблицаСвободныхКодов Цикл
ПредставлениеНоменклатуры = ИнтеграцияИСМПКлиентСервер.ПредставлениеGTINОстаткиПоВидуПродукции(
СтрокаТаблицы.ПредставлениеНоменклатуры, СтрокаТаблицы.ВидПродукции);
СтрокаТаблицы.Содержимое = ИнтеграцияИС.ПредставлениеНоменклатуры(
СтрокаТаблицы.Номенклатура, СтрокаТаблицы.Характеристика,,, ПредставлениеНоменклатуры);
КонецЦикла;
СписокКодовМаркировки.Загрузить(ТаблицаСвободныхКодов);
КонецЕсли;
Если НЕ ТолькоСвободныеКоды Тогда
ДеревоКодов = РеквизитФормыВЗначение("ДеревоАгрегированныхКодов", Тип("ДеревоЗначений"));
ДеревоКодов.Строки.Очистить();
РегистрыСведений.ПулКодовМаркировкиСУЗ.ЗаполнитьДеревоСуществующихУпаковокПоДокументу(
ДеревоКодов, Документ,, Истина);
ЗначениеВРеквизитФормы(ДеревоКодов, "ДеревоАгрегированныхКодов");
КонецЕсли;
ЕстьСвободныеКоды = СписокКодовМаркировки.Количество() > 0;
ЕстьАгрегированныеКоды = ДеревоАгрегированныхКодов.ПолучитьЭлементы().Количество() > 0;
Если Отказ <> Неопределено
И НЕ ЕстьСвободныеКоды
И НЕ ЕстьАгрегированныеКоды Тогда
ТекстОшибки = НСтр("ru = 'По документу ""%1"" нет кодов маркировки для печати.'");
ТекстОшибки = СтрШаблон(ТекстОшибки, Параметры.Документ);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,,,,Отказ);
КонецЕсли;
КонецПроцедуры
Показать
По сути у моего расширения остается лишь вспомогательная функция, заполняющая шаблон этикеток и другие параметры.