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