Обработка формирования Ценников для весового товара в 1С: РОЗНИЦА 2.2
Данная обработка, подключается как внешняя обработка.
Тестировалась на платформе 1С:Предприятие 8.3 (8.3.10.2753)
Конфигурация 1С Розница, редакция 2.2 (2.2.9.20)
При запуске есть возможность выбрать Весовой товар.
В табличной части заполняется список весового товара в граммах.
Автоматически рассчитывается цена и штрих код.
Для правильного отображения цены, не забудьте для Товара установить через документ "Установка цен номенклатуры" Цену за 1 кг.
На закладке "Ценники для печати" формируются ценники, с возможность печати на принтер.
&НаСервере
Функция ПолучитьКоличествоМиллиметровВПикселе()
Эталон = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("Эталон");
КоличествоМиллиметровВПикселе = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100;
Возврат КоличествоМиллиметровВПикселе;
КонецФункции
&НаСервере
Процедура СформироватьЦенники()
КоличествоМиллиметровВПикселе = ПолучитьКоличествоМиллиметровВПикселе();
ВывелиХотяБыОдинШтрихКод=Ложь;
ВсегоКолонок = Колонок;
ВсегоСтрок = 4;
ТекКолонка = 1;
ТекСтрока = 1;
Таб = ТабличныйДокумент1; Таб.Очистить();
Таб.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЦЕННИК";
ЭтотОбъектОбработки=РеквизитФормыВЗначение("Объект");
Макет = ЭтотОбъектОбработки.ПолучитьМакет("Макет");
СтранаПроисхождения = ПолучитьЗначениеУОбъекта(Объект.Номенклатура,"СтранаПроисхождения");
Товар=Объект.Номенклатура;
ТабличноеПоле1 = Объект.Товары;
Н=0;
Для Каждого СтрокаИзСписка Из Объект.Товары Цикл
Если СтрокаИзСписка.Вес_В_Граммах=0 Тогда
Продолжить;
КонецЕсли;
Н=Н+1;
ШК=СтрокаИзСписка.ШтрихКод;
ОбластьЗначение = Макет.ПолучитьОбласть("ВертТело|ГорТело");
ОбластьЗначениеМ = Макет.ПолучитьОбласть("ВертТело|Гор_М_Тело");
ОбластьЗначениеМпусто = Макет.ПолучитьОбласть("ВертТело|Гор_М_ТелоПусто");
//************************************
Попытка
РисунокШК = ОбластьЗначение.Рисунки.ШтрихКод;
Если РисунокШК <> Неопределено Тогда
Если ПустаяСтрока(ШК) Тогда
Таб.Рисунки.Удалить(РисунокШК);
Иначе
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", Окр(РисунокШК.Ширина / КоличествоМиллиметровВПикселе));
ПараметрыШтрихкода.Вставить("Высота", Окр(РисунокШК.Высота / КоличествоМиллиметровВПикселе));
ПараметрыШтрихкода.Вставить("Штрихкод", ШК);
ПараметрыШтрихкода.Вставить("ТипКода", 99);
ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
ПараметрыШтрихкода.Вставить("Штрихкод", ШК);
РисунокШК.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
КонецЕсли;
КонецЕсли;
Исключение // не установлен
Ошибка = ОписаниеОшибки();
Сообщить("Не удалось сформировать штрих-код! Подробнее: "+Ошибка);
КонецПопытки;
//*************************************
ОбластьЗначение.Параметры.НазваниеТовара = СокрЛП(Товар)+" "+СокрЛП(СтрокаИзСписка.Вес_В_Граммах)+"г";
ОбластьЗначение.Параметры.Цена = Формат(СтрокаИзСписка.Цена,"ЧГ=");
ОбластьЗначение.Параметры.СтранаПроисхождения = СтранаПроисхождения;
//~1:
Если ТекКолонка > ВсегоКолонок Тогда
ТекКолонка = 1;
ТекСтрока = ТекСтрока + 1;
КонецЕсли;
Если ТекСтрока > ВсегоСтрок Тогда
ТекСтрока = 1;
Таб.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
Если ТекКолонка = 1 Тогда
Таб.Вывести(ОбластьЗначение);
Иначе
Таб.Присоединить(ОбластьЗначение);
КонецЕсли;
ВывелиХотяБыОдинШтрихКод = Истина;
ТекКолонка = ТекКолонка + 1;
КонецЦикла;
Если ВывелиХотяБыОдинШтрихКод И ТекСтрока=1 Тогда
Для н=ТекКолонка по Колонок Цикл
Таб.Присоединить(ОбластьЗначениеМпусто);
КонецЦикла
КонецЕсли;
Таб.АвтоМасштаб=Истина;
Таб.Защита = Ложь;
Таб.ПолеСверху=7;
Таб.ПолеСнизу=7;
Таб.ПолеСлева=7;
Таб.ПолеСправа=7;
Таб.ТолькоПросмотр = Истина;
Таб.ОтображатьСетку = Ложь;
Таб.ОтображатьЗаголовки = Ложь;
КонецПроцедуры