#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Элементы.Назначение.СписокВыбора.Добавить(Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляТоваров);
Элементы.Назначение.СписокВыбора.Добавить(Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЦенникДляТоваров);
Если ПолучитьФункциональнуюОпцию("ИспользоватьАдресноеХранение", Новый Структура)
Или ПолучитьФункциональнуюОпцию("ИспользоватьАдресноеХранениеСправочно", Новый Структура) Тогда
Элементы.Назначение.СписокВыбора.Добавить(Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляСкладскихЯчеек);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеДоставкой") Тогда
Элементы.Назначение.СписокВыбора.Добавить(Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляДоставки);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатуры") Тогда
Элементы.Назначение.СписокВыбора.Добавить(Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаСерииНоменклатуры);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьУпаковочныеЛисты") Тогда
Элементы.Назначение.СписокВыбора.Добавить(Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУпаковочныхЛистов);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ЗначениеКопирования = Неопределено;
Параметры.Свойство("ЗначениеКопирования", ЗначениеКопирования);
Если Не ЗначениеЗаполнено(ЗначениеКопирования) Тогда
ИмяМакета = Параметры.ИмяМакета;
Если ЗначениеЗаполнено(Параметры.Назначение) Тогда
Объект.Назначение = Параметры.Назначение;
КонецЕсли;
Если ЗначениеЗаполнено(Параметры.Высота) Тогда
Объект.Высота = Параметры.Высота;
КонецЕсли;
Если Параметры.Ширина > 0 Тогда
Объект.Ширина = Параметры.Ширина;
КонецЕсли;
Если ЗначениеЗаполнено(Параметры.Наименование) Тогда
Объект.Наименование = Параметры.Наименование;
КонецЕсли;
УровеньЧеткости = ?(УровеньЧеткости = 0, 1, УровеньЧеткости);
Если Не ЗначениеЗаполнено(ИмяМакета) Тогда
УстановитьРазмер(Объект.Ширина, Объект.Высота, Объект.РазмерЯчейки);
КонецЕсли;
ЗаполнитьДоступныеПоля();
НастроитьШаблон();
Иначе
ЗаполнитьДоступныеПоля();
ЗагрузитьШаблон();
КонецЕсли;
КонецЕсли;
ТекущийРазмер = ТекущийРазмерСтраницы(ЭтаФорма);
РазмерСтраницы = ТекущийРазмер;
ОбновитьЗаголовок(ЭтаФорма);
НазначениеПриИзмененииСервер(Ложь);
Коды = ПолучитьКоды();
Для Каждого СтрокаТЧ Из Коды Цикл
НовыйТипКода = ТипыШтрихкодов.Добавить();
НовыйТипКода.ТипКода = СтрокаТЧ.ТипКода;
НовыйТипКода.ТипШтрихкода = СтрокаТЧ.ТипШтрихкода;
СписокТипКода.Добавить(СтрокаТЧ.ТипШтрихкода, СтрокаТЧ.Наименование);
КонецЦикла;
СписокМонохромныйШрифт.Добавить(Истина, НСтр("ru = 'Монохромный'"));
СписокМонохромныйШрифт.Добавить(Ложь, НСтр("ru = 'Градации серого'"));
СписокУголПоворота.Добавить(0, НСтр("ru = '0°'"));
СписокУголПоворота.Добавить(90, НСтр("ru = '90°'"));
СписокУголПоворота.Добавить(180, НСтр("ru = '180°'"));
СписокУголПоворота.Добавить(270, НСтр("ru = '270°'"));
СписокGS1DatabarКоличествоСтрок.Добавить(100, НСтр("ru = 'Приоритет модуля и числа строк (max)'"));
СписокGS1DatabarКоличествоСтрок.Добавить(101, НСтр("ru = 'Приоритет модуля и числа строк (min)'"));
СписокGS1DatabarКоличествоСтрок.Добавить(102, НСтр("ru = 'Приоритет соотношения сторон'"));
СписокGS1DatabarКоличествоСтрок.Добавить(1, НСтр("ru = '1 строка'"));
СписокGS1DatabarКоличествоСтрок.Добавить(2, НСтр("ru = '2 строки'"));
СписокGS1DatabarКоличествоСтрок.Добавить(3, НСтр("ru = '3 строки'"));
СписокGS1DatabarКоличествоСтрок.Добавить(4, НСтр("ru = '4 строки'"));
СписокGS1DatabarКоличествоСтрок.Добавить(5, НСтр("ru = '5 строк'"));
СписокВариантМасштабирования.Добавить("РеальныйРазмер", НСтр("ru = 'Реальный размер'"));
СписокВариантМасштабирования.Добавить("МасштабироватьСохранятьПропорции", НСтр("ru = 'Масштабировать (сохранять пропорции)'"));
СписокВариантМасштабирования.Добавить("МасштабироватьНеСохранятьПропорции", НСтр("ru = 'Масштабировать (не сохранять пропорции)'"));
СписокВертикальноеВыравнивание.Добавить(1, НСтр("ru = 'По верхнему краю'"));
СписокВертикальноеВыравнивание.Добавить(2, НСтр("ru = 'По центру'"));
СписокВертикальноеВыравнивание.Добавить(3, НСтр("ru = 'По нижнему краю'"));
СписокУровеньЧеткости.Добавить(1, НСтр("ru = 'Стандартный'"));
СписокУровеньЧеткости.Добавить(2, НСтр("ru = 'Повышенный'"));
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
Элементы.Назначение.СписокВыбора.СортироватьПоПредставлению();
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("ОбновитьРазмещение", 1, Ложь);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_ШаблоныЭтикетокИЦенников", ПараметрыЗаписи, Объект.Ссылка);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ЗаполнитьДоступныеПоля();
ЗагрузитьШаблон();
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
РассчитатьМаксимальноеКоличествоНаСтранице();
Если НЕ ПроверитьУмещение() Тогда
Отказ = Истина;
Иначе
СтруктураМакетаШаблона = ПодготовитьСтруктуруМакетаШаблона();
ТекущийОбъект.Шаблон = Новый ХранилищеЗначения(СтруктураМакетаШаблона);
ТекущийОбъект.ТипШтрихкода = СтруктураМакетаШаблона.ТипШтрихкода;
КонецЕсли;
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
ОбновитьЗаголовок(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДоступныеПоляКомпоновкиДанныхПередРазворачиванием(Элемент, Строка, Отказ)
ТекущиеДанные = ДоступныеПоляКомпоновкиДанных.НайтиПоИдентификатору(Строка);
Если ТекущиеДанные.РазворачиватьДоРеквизитов
И НЕ ТекущиеДанные.ПодчиненныеСтрокиРазворачивались Тогда
РазвернутьПодчиненныеСтрокиДереваОперандов(Строка);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РазвернутьПодчиненныеСтрокиДереваОперандов(ИдентификаторТекущейСтрокиДереваОперандов)
РаботаСФормулами.РазвернутьСтрокуОперандаДереваФормы(ДоступныеПоляКомпоновкиДанных,
ИдентификаторТекущейСтрокиДереваОперандов);
КонецПроцедуры
&НаКлиенте
Процедура ДоступныеПоляВыбор(Элемент, ВыбраннаяСтрока, Поле,
СтандартнаяОбработка)
Если ЭтаФорма.ТолькоПросмотр Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ДоступныеПоляКомпоновкиДанных.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если НЕ ТекущиеДанные.РазрешаетсяВыборОперанда Тогда
Возврат;
КонецЕсли;
Модифицированность = Истина;
ВыборДоступногоПоля(ВыбраннаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ОтображатьТекстПриИзменении(Элемент)
Элементы.РазмерШрифта.Доступность = ОтображатьТекст;
КонецПроцедуры
&НаКлиенте
Процедура НазначениеПриИзменении(Элемент)
Если Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляСкладскихЯчеек")
ИЛИ Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаСерииНоменклатуры")
ИЛИ Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУпаковочныхЛистов") Тогда
ТипШтрихкода = ПредопределенноеЗначение("Перечисление.ТипыШтрихкодов.Code128");
ИначеЕсли Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляАкцизныхМарок") Тогда
ТипШтрихкода = ПредопределенноеЗначение("Перечисление.ТипыШтрихкодов.PDF417");
ИначеЕсли Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляШтрихкодовУпаковок") Тогда
ТипШтрихкода = ПредопределенноеЗначение("Перечисление.ТипыШтрихкодов.GS1_DataBarExpandedStacked");
ИначеЕсли Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаОбъектаЭксплуатацииЛента")
ИЛИ Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаОбъектаЭксплуатацииБумага")
ИЛИ Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУзлаОбъектаЭксплуатацииЛента")
ИЛИ Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУзлаОбъектаЭксплуатацииБумага")
ИЛИ Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииЛента")
ИЛИ Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииБумага") Тогда
ТипШтрихкода = ПредопределенноеЗначение("Перечисление.ТипыШтрихкодов.QR");
ИначеЕсли Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаКодМаркировкиИСМП") Тогда
ТипШтрихкода = ПредопределенноеЗначение("Перечисление.ТипыШтрихкодов.DataMatrix");
Иначе
ТипШтрихкода = ПредопределенноеЗначение("Перечисление.ТипыШтрихкодов.EAN13");
КонецЕсли;
Для Каждого СтрокаТипыШтрихкода Из ТипыШтрихкодов Цикл
Если СтрокаТипыШтрихкода.ТипШтрихкода = ТипШтрихкода Тогда
ТипКода = СтрокаТипыШтрихкода.ТипКода;
КонецЕсли;
КонецЦикла;
НазначениеПриИзмененииСервер();
ЗаполнитьТаблицуСвойств();
КонецПроцедуры
&НаКлиенте
Процедура ПолеТабличногоДокументаПриИзмененииСодержимогоОбласти(Элемент,
Область)
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ШиринаПриИзменении(Элемент)
УстановитьРазмер(Объект.Ширина, Объект.Высота, Объект.РазмерЯчейки);
КонецПроцедуры
&НаКлиенте
Процедура ВысотаПриИзменении(Элемент)
УстановитьРазмер(Объект.Ширина, Объект.Высота, Объект.РазмерЯчейки);
КонецПроцедуры
&НаКлиенте
Процедура РазмерЯчейкиПриИзменении(Элемент)
УстановитьРазмер(Объект.Ширина, Объект.Высота, Объект.РазмерЯчейки);
КонецПроцедуры
&НаКлиенте
Процедура НазначениеОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ДляЧегоПриИзменении(Элемент)
Если Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляШтрихкодовУпаковок") Тогда
Для Каждого Область Из ПолеТабличногоДокумента.Области Цикл
Имя = Область.Имя;
Если СтрНачинаетсяС(ВРег(Имя), ВРег("Штрихкод")) Тогда
Индекс = ЗаменитьРисунокШтрихкода(Имя);
ПолеТабличногоДокумента.Рисунки[Индекс].Имя = Имя;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСвойстваЯчеек
&НаКлиенте
Процедура СвойстваЯчеекЗначениеПриИзменении(Элемент)
ВыделеннаяОбласть = ПолеТабличногоДокумента.ТекущаяОбласть;
ТекущиеДанные = Элементы.СвойстваЯчеек.ТекущиеДанные;
Если ТипЗнч(ВыделеннаяОбласть) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
ВыделеннаяОбласть[ТекущиеДанные.ИмяСвойства] = ТекущиеДанные.Значение;
УстановитьТекущийЭлемент = Неопределено;
ИначеЕсли ТипЗнч(ВыделеннаяОбласть) = Тип("РисунокТабличногоДокумента") Тогда
Если ТекущиеДанные.ИмяСвойства = "ТипКода" Тогда
Для Каждого КлючИЗначение Из СписокТипКода Цикл
Представление = КлючИЗначение.Представление;
Если ТекущиеДанные.Значение = Представление Тогда
ТипШтрихкода = КлючИЗначение.Значение;
Для Каждого СтрокаТипыШтрихкода Из ТипыШтрихкодов Цикл
Если ТипШтрихкода = СтрокаТипыШтрихкода.ТипШтрихкода Тогда
ТипКода = СтрокаТипыШтрихкода.ТипКода;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ИначеЕсли ТекущиеДанные.ИмяСвойства = "РазмерШрифта" Тогда
РазмерШрифта = ТекущиеДанные.Значение;
ИначеЕсли ТекущиеДанные.ИмяСвойства = "УровеньЧеткости" Тогда
Для Каждого КлючИЗначение Из СписокУровеньЧеткости Цикл
Представление = КлючИЗначение.Представление;
Если ТекущиеДанные.Значение = Представление Тогда
УровеньЧеткости = КлючИЗначение.Значение;
КонецЕсли;
КонецЦикла;
ИначеЕсли ТекущиеДанные.ИмяСвойства = "ОтображатьТекст" Тогда
ОтображатьТекст = ТекущиеДанные.Значение;
ИначеЕсли ТекущиеДанные.ИмяСвойства = "GS1DatabarКоличествоСтрок" Тогда
Для Каждого КлючИЗначение Из СписокGS1DatabarКоличествоСтрок Цикл
Представление = КлючИЗначение.Представление;
Если ТекущиеДанные.Значение = Представление Тогда
GS1DatabarКоличествоСтрок = КлючИЗначение.Значение;
КонецЕсли;
КонецЦикла;
ИначеЕсли ТекущиеДанные.ИмяСвойства = "МонохромныйШрифт" Тогда
Для Каждого КлючИЗначение Из СписокМонохромныйШрифт Цикл
Представление = КлючИЗначение.Представление;
Если ТекущиеДанные.Значение = Представление Тогда
МонохромныйШрифт = КлючИЗначение.Значение;
КонецЕсли;
КонецЦикла;
ИначеЕсли ТекущиеДанные.ИмяСвойства = "УголПоворота" Тогда
Для Каждого КлючИЗначение Из СписокУголПоворота Цикл
Представление = КлючИЗначение.Представление;
Если ТекущиеДанные.Значение = Представление Тогда
УголПоворота = КлючИЗначение.Значение;
КонецЕсли;
КонецЦикла;
ИначеЕсли ТекущиеДанные.ИмяСвойства = "ВертикальноеВыравнивание" Тогда
Для Каждого КлючИЗначение Из СписокВертикальноеВыравнивание Цикл
Представление = КлючИЗначение.Представление;
Если ТекущиеДанные.Значение = Представление Тогда
ВертикальноеВыравнивание = КлючИЗначение.Значение;
КонецЕсли;
КонецЦикла;
ИначеЕсли ТекущиеДанные.ИмяСвойства = "ВариантМасштабирования" Тогда
Для Каждого КлючИЗначение Из СписокВариантМасштабирования Цикл
Представление = КлючИЗначение.Представление;
Если ТекущиеДанные.Значение = Представление Тогда
Если КлючИЗначение.Значение = "РеальныйРазмер" Тогда
Масштабировать = Ложь;
СохранятьПропорции = Истина;
ИначеЕсли КлючИЗначение.Значение = "МасштабироватьСохранятьПропорции" Тогда
Масштабировать = Истина;
СохранятьПропорции = Истина;
ИначеЕсли КлючИЗначение.Значение = "МасштабироватьНеСохранятьПропорции" Тогда
Масштабировать = Истина;
СохранятьПропорции = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе
ВыделеннаяОбласть[ТекущиеДанные.ИмяСвойства] = ТекущиеДанные.Значение;
КонецЕсли;
Имя = ВыделеннаяОбласть.Имя;
Если СтрНачинаетсяС(ВРег(Имя), ВРег("Штрихкод")) Тогда
Индекс = ЗаменитьРисунокШтрихкода(Имя);
ПолеТабличногоДокумента.Рисунки[Индекс].Имя = Имя;
КонецЕсли;
ПодключитьОбработчикОжидания("ЗаполнитьТаблицуСвойств", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СвойстваЯчеекЗначениеНачалоВыбора(Элемент, ДанныеВыбора,
СтандартнаяОбработка)
ВыделеннаяОбласть = ПолеТабличногоДокумента.ТекущаяОбласть;
ТекущиеДанные = Элементы.СвойстваЯчеек.ТекущиеДанные;
Если ТипЗнч(ВыделеннаяОбласть) = Тип("РисунокТабличногоДокумента") Тогда
Если СтрНайти(ТекущиеДанные.ИмяСвойства, "Линия") > 0 Тогда
СтандартнаяОбработка = Ложь;
НастроитьЛинию(ВыделеннаяОбласть, ТекущиеДанные);
КонецЕсли;
ИначеЕсли ТипЗнч(ВыделеннаяОбласть) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
Если СтрНайти(ТекущиеДанные.ИмяСвойства, "Граница") > 0 Тогда
СтандартнаяОбработка = Ложь;
НастроитьЛинию(ВыделеннаяОбласть, ТекущиеДанные);
КонецЕсли;
Если СтрНайти(ТекущиеДанные.ИмяСвойства, "Формат") > 0 Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
Если СтрНайти(ТекущиеДанные.ИмяСвойства, "Заполнение") > 0 Тогда
СтандартнаяОбработка = Ложь;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(ТипЗаполненияОбластиТабличногоДокумента.Параметр);
СписокЗначений.Добавить(ТипЗаполненияОбластиТабличногоДокумента.Текст);
СписокЗначений.Добавить(ТипЗаполненияОбластиТабличногоДокумента.Шаблон);
ПоказатьВыборИзСписка(Новый ОписаниеОповещения("СвойстваЯчеекЗначениеНачалоВыбораЗавершение", ЭтотОбъект, Новый Структура("ВыделеннаяОбласть, ТекущиеДанные", ВыделеннаяОбласть, ТекущиеДанные)), СписокЗначений, Элементы.СвойстваЯчеекЗначение);
КонецЕсли;
Если СтрНайти(ТекущиеДанные.ИмяСвойства, "Формат") > 0 Тогда
Конструктор = Новый КонструкторФорматнойСтроки;
Конструктор.Показать(Новый ОписаниеОповещения("СвойстваЯчеекЗначениеНачалоВыбораКонструкторЗавершение", ЭтотОбъект, Новый Структура("ВыделеннаяОбласть, Конструктор, ТекущиеДанные", ВыделеннаяОбласть, Конструктор, ТекущиеДанные)));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СвойстваЯчеекЗначениеНачалоВыбораКонструкторЗавершение(Текст,
ДополнительныеПараметры) Экспорт
ВыделеннаяОбласть = ДополнительныеПараметры.ВыделеннаяОбласть;
Конструктор = ДополнительныеПараметры.Конструктор;
ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные;
Если Текст <> Неопределено Тогда
ТекущиеДанные.Значение = Конструктор.Текст;
ВыделеннаяОбласть.Формат = Конструктор.Текст;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СвойстваЯчеекЗначениеНачалоВыбораЗавершение(ВыбранныйЭлемент,
ДополнительныеПараметры) Экспорт
ВыделеннаяОбласть = ДополнительныеПараметры.ВыделеннаяОбласть;
ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные;
ЭлементСписка = ВыбранныйЭлемент;
Если ЭлементСписка <> Неопределено Тогда
ТекущиеДанные.Значение = Строка(ЭлементСписка.Значение);
ВыделеннаяОбласть.Заполнение = ЭлементСписка.Значение;
КонецЕсли;
ЗаполнитьТаблицуСвойств();
КонецПроцедуры
&НаКлиенте
Процедура СвойстваЯчеекПриАктивизацииСтроки(Элемент)
ТекущиеДанные = Элементы.СвойстваЯчеек.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Элементы.СвойстваЯчеекЗначение.СписокВыбора.Очистить();
ЭтоСтрокаСТипомКода = СтрНайти(ТекущиеДанные.ИмяСвойства, "ТипКода") > 0;
ЭтоСтрокаСТипомШрифта = СтрНайти(ТекущиеДанные.ИмяСвойства, "МонохромныйШрифт") > 0;
ЭтоСтрокаГраница = СтрНайти(ТекущиеДанные.ИмяСвойства, "Граница") > 0;
ЭтоСтрокаЛиния = СтрНайти(ТекущиеДанные.ИмяСвойства, "Линия") > 0;
ЭтоУголПоворота = СтрНайти(ТекущиеДанные.ИмяСвойства, "УголПоворота") > 0;
ЭтоGS1DatabarКоличествоСтрок = СтрНайти(ТекущиеДанные.ИмяСвойства, "GS1DatabarКоличествоСтрок") > 0;
ЭтоВариантМасштабирования = СтрНайти(ТекущиеДанные.ИмяСвойства, "ВариантМасштабирования") > 0;
ЭтоВертикальноеВыравнивание = СтрНайти(ТекущиеДанные.ИмяСвойства, "ВертикальноеВыравнивание") > 0;
ЭтоВариантУровняЧеткости = СтрНайти(ТекущиеДанные.ИмяСвойства, "УровеньЧеткости") > 0;
Если ЭтоСтрокаСТипомКода Тогда
Для Каждого ЭлементСписка Из СписокТипКода Цикл
Элементы.СвойстваЯчеекЗначение.СписокВыбора.Добавить(ЭлементСписка.Представление);
КонецЦикла;
Элементы.СвойстваЯчеекЗначение.РежимВыбораИзСписка = Истина;
Элементы.СвойстваЯчеекЗначение.КнопкаСпискаВыбора = Ложь;
ИначеЕсли ЭтоСтрокаСТипомШрифта Тогда
Для Каждого ЭлементСписка Из СписокМонохромныйШрифт Цикл
Элементы.СвойстваЯчеекЗначение.СписокВыбора.Добавить(ЭлементСписка.Представление);
КонецЦикла;
Элементы.СвойстваЯчеекЗначение.РежимВыбораИзСписка = Истина;
Элементы.СвойстваЯчеекЗначение.КнопкаСпискаВыбора = Ложь;
ИначеЕсли ЭтоУголПоворота Тогда
Для Каждого ЭлементСписка Из СписокУголПоворота Цикл
Элементы.СвойстваЯчеекЗначение.СписокВыбора.Добавить(ЭлементСписка.Представление);
КонецЦикла;
Элементы.СвойстваЯчеекЗначение.РежимВыбораИзСписка = Истина;
Элементы.СвойстваЯчеекЗначение.КнопкаСпискаВыбора = Ложь;
ИначеЕсли ЭтоGS1DatabarКоличествоСтрок Тогда
Для Каждого ЭлементСписка Из СписокGS1DatabarКоличествоСтрок Цикл
Элементы.СвойстваЯчеекЗначение.СписокВыбора.Добавить(ЭлементСписка.Представление);
КонецЦикла;
Элементы.СвойстваЯчеекЗначение.РежимВыбораИзСписка = Истина;
Элементы.СвойстваЯчеекЗначение.КнопкаСпискаВыбора = Ложь;
ИначеЕсли ЭтоВариантМасштабирования Тогда
Для Каждого ЭлементСписка Из СписокВариантМасштабирования Цикл
Элементы.СвойстваЯчеекЗначение.СписокВыбора.Добавить(ЭлементСписка.Представление);
КонецЦикла;
Элементы.СвойстваЯчеекЗначение.РежимВыбораИзСписка = Истина;
Элементы.СвойстваЯчеекЗначение.КнопкаСпискаВыбора = Ложь;
ИначеЕсли ЭтоВертикальноеВыравнивание Тогда
Для Каждого ЭлементСписка Из СписокВертикальноеВыравнивание Цикл
Элементы.СвойстваЯчеекЗначение.СписокВыбора.Добавить(ЭлементСписка.Представление);
КонецЦикла;
Элементы.СвойстваЯчеекЗначение.РежимВыбораИзСписка = Истина;
Элементы.СвойстваЯчеекЗначение.КнопкаСпискаВыбора = Ложь;
ИначеЕсли ЭтоВариантУровняЧеткости Тогда
Для Каждого ЭлементСписка Из СписокУровеньЧеткости Цикл
Элементы.СвойстваЯчеекЗначение.СписокВыбора.Добавить(ЭлементСписка.Представление);
КонецЦикла;
Элементы.СвойстваЯчеекЗначение.РежимВыбораИзСписка = Истина;
Элементы.СвойстваЯчеекЗначение.КнопкаСпискаВыбора = Ложь;
Иначе
Элементы.СвойстваЯчеекЗначение.РежимВыбораИзСписка = Ложь;
Элементы.СвойстваЯчеекЗначение.КнопкаСпискаВыбора = Ложь;
КонецЕсли;
Элементы.СвойстваЯчеекЗначение.РедактированиеТекста = Не (ЭтоСтрокаГраница
Или ЭтоСтрокаСТипомКода Или ЭтоСтрокаСТипомШрифта
Или ЭтоGS1DatabarКоличествоСтрок Или ЭтоУголПоворота
Или ЭтоВариантМасштабирования Или ЭтоВертикальноеВыравнивание
Или ЭтоСтрокаЛиния);
КонецПроцедуры
&НаКлиенте
Процедура СвойстваЯчеекПередНачаломДобавления(Элемент, Отказ, Копирование,
Родитель, Группа, Параметр)
Отказ = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Объединить(Команда)
Если ПолеТабличногоДокумента.ВыделенныеОбласти.Количество() = 1
И ТипЗнч(ПолеТабличногоДокумента.ВыделенныеОбласти[0]) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
ТекущаяОбласть = ПолеТабличногоДокумента.ТекущаяОбласть;
ОбъединитьОбласть(ТекущаяОбласть.Имя);
Иначе
ОчиститьСообщения();
ТекстСообщения = НСтр("ru = 'Некорректная область'");
Поле = "ПолеТабличногоДокумента";
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, Поле);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Разъединить(Команда)
Если ПолеТабличногоДокумента.ВыделенныеОбласти.Количество() = 1
И ТипЗнч(ПолеТабличногоДокумента.ВыделенныеОбласти[0]) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
ТекущаяОбласть = ПолеТабличногоДокумента.ТекущаяОбласть;
РазъединитьОбласть(ТекущаяОбласть.Имя);
Иначе
ОчиститьСообщения();
ТекстСообщения = НСтр("ru = 'Некорректная область'");
Поле = "ПолеТабличногоДокумента";
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, Поле);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Выбрать(Команда)
ТекущаяСтрока = Элементы.ДоступныеПоляКомпоновкиДанных.ТекущаяСтрока;
Если ТекущаяСтрока <> Неопределено Тогда
ВыборДоступногоПоля(ТекущаяСтрока);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьОбластьПечати(Команда)
Если (ПолеТабличногоДокумента.ВыделенныеОбласти[0].Лево <> 0
И ПолеТабличногоДокумента.ВыделенныеОбласти[0].Верх <> 0)
И ПолеТабличногоДокумента.ВыделенныеОбласти.Количество() = 1
И ТипЗнч(ПолеТабличногоДокумента.ВыделенныеОбласти[0]) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
УстановитьОбластьПечатиНаСервере(ПолеТабличногоДокумента.ВыделенныеОбласти[0].Имя);
Иначе
ОчиститьСообщения();
ТекстСообщения = НСтр("ru = 'Некорректная область печати'");
Поле = "ПолеТабличногоДокумента";
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, Поле);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НапечататьОбразец(Команда)
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.ДляЧего) Тогда
ТекстСообщения = НСтр("ru = 'Не заполнено поле ""Для чего""'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "Объект.ДляЧего");
Возврат;
КонецЕсли;
ПараметрКоманды = Новый Массив;
ПараметрКоманды.Добавить(ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка"));
Если Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЦенникДляТоваров") Тогда
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Обработка.ПечатьЭтикетокИЦенников", "ЦенникТовары", ПараметрКоманды, Неопределено, ПолучитьПараметрыДляПечатиОбразцаЦенникаТовара());
ИначеЕсли Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляТоваров") Тогда
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Обработка.ПечатьЭтикетокИЦенников", "ЭтикеткаТовары", ПараметрКоманды, Неопределено, ПолучитьПараметрыДляПечатиОбразцаЭтикеткиТовара());
ИначеЕсли Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляСкладскихЯчеек") Тогда
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Обработка.ПечатьЭтикетокИЦенников", "ЭтикеткаСкладскиеЯчейки", ПараметрКоманды, Неопределено, ПолучитьПараметрыДляПечатиОбразцаЭтикеткиСкладскойЯчейки());
ИначеЕсли Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляДоставки") Тогда
ПараметрыПечати = ПолучитьПараметрыДляПечатиОбразцаЭтикеткиДоставки();
Если ПараметрыПечати.ЕстьЭтикеткиДляПечати Тогда
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Обработка.ПечатьЭтикетокИЦенников", "ЭтикеткаДоставки", ПараметрКоманды, Неопределено, ПараметрыПечати);
ИначеЕсли ПараметрыПечати.ДоставкаНаНашСклад Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Печать этикетки доступна только для доставки с нашего склада.'"));
Иначе
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Печатная форма недоступна.'"));
Если ПараметрыПечати.МассивСсылокСОшибками.Количество() > 0 Тогда
ТекстСообщения = НСтр("ru = 'Не настроен общий шаблон этикетки доставки. Обратитесь к администратору.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецЕсли;
ИначеЕсли Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаСерииНоменклатуры") Тогда
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Обработка.ПечатьЭтикетокИЦенников", "ЭтикеткаСерииНоменклатуры", ПараметрКоманды, Неопределено, ПолучитьПараметрыДляПечатиОбразцаЭтикеткиСерииНоменклатуры());
ИначеЕсли Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУпаковочныхЛистов") Тогда
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Обработка.ПечатьЭтикетокИЦенников", "ЭтикеткаУпаковочныеЛисты", ПараметрКоманды, Неопределено, ПолучитьПараметрыДляПечатиОбразцаЭтикеткиУпаковочныеЛисты());
ИначеЕсли Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииЛента")
ИЛИ Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииБумага") Тогда
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(
"Обработка.ПечатьЭтикетокИЦенников",
"ЭтикеткаТМЦВЭксплуатации",
ПараметрКоманды,
Неопределено,
ПолучитьПараметрыДляПечатиОбразцаЭтикеткиТМЦВЭксплуатации());
Иначе
ПараметрыДляПечатиОбразца = ПараметрыДляПечатиОбразца();
ПечатьЭтикетокИЦенниковЛокализацияКлиент.НапечататьОбразец(ПараметрыДляПечатиОбразца, ПараметрКоманды, Объект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыравниваниеВертикальноеВерх(Команда)
Если ТипЗнч(ПолеТабличногоДокумента.ТекущаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
ТекстСообщения = НСтр("ru = 'Операция может быть выполнена только над ячейкой табличного документа'");
ПоказатьПредупреждение(Неопределено, ТекстСообщения);
Возврат;
КонецЕсли;
ПолеТабличногоДокумента.ТекущаяОбласть.ВертикальноеПоложение = ВертикальноеПоложение.Верх;
КонецПроцедуры
&НаКлиенте
Процедура ВыравниваниеВертикальноеЦентр(Команда)
Если ТипЗнч(ПолеТабличногоДокумента.ТекущаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
ТекстСообщения = НСтр("ru = 'Операция может быть выполнена только над ячейкой табличного документа'");
ПоказатьПредупреждение(Неопределено, ТекстСообщения);
Возврат;
КонецЕсли;
ПолеТабличногоДокумента.ТекущаяОбласть.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
КонецПроцедуры
&НаКлиенте
Процедура ВыравниваниеВертикальноеНиз(Команда)
Если ТипЗнч(ПолеТабличногоДокумента.ТекущаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
ТекстСообщения = НСтр("ru = 'Операция может быть выполнена только над ячейкой табличного документа'");
ПоказатьПредупреждение(Неопределено, ТекстСообщения);
Возврат;
КонецЕсли;
ПолеТабличногоДокумента.ТекущаяОбласть.ВертикальноеПоложение = ВертикальноеПоложение.Низ;
КонецПроцедуры
&НаКлиенте
Процедура ВыравниваниеГоризонтальноеЛево(Команда)
Если ТипЗнч(ПолеТабличногоДокумента.ТекущаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
ТекстСообщения = НСтр("ru = 'Операция может быть выполнена только над ячейкой табличного документа'");
ПоказатьПредупреждение(Неопределено, ТекстСообщения);
Возврат;
КонецЕсли;
ПолеТабличногоДокумента.ТекущаяОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево;
КонецПроцедуры
&НаКлиенте
Процедура ВыравниваниеГоризонтальноеЦентр(Команда)
Если ТипЗнч(ПолеТабличногоДокумента.ТекущаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
ТекстСообщения = НСтр("ru = 'Операция может быть выполнена только над ячейкой табличного документа'");
ПоказатьПредупреждение(Неопределено, ТекстСообщения);
Возврат;
КонецЕсли;
ПолеТабличногоДокумента.ТекущаяОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецПроцедуры
&НаКлиенте
Процедура ВыравниваниеГоризонтальноеПраво(Команда)
Если ТипЗнч(ПолеТабличногоДокумента.ТекущаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
ТекстСообщения = НСтр("ru = 'Операция может быть выполнена только над ячейкой табличного документа'");
ПоказатьПредупреждение(Неопределено, ТекстСообщения);
Возврат;
КонецЕсли;
ПолеТабличногоДокумента.ТекущаяОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
КонецПроцедуры
&НаКлиенте
Процедура Назначить(Команда)
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.ДляЧего) Тогда
ТекстСообщения = НСтр("ru = 'Поле ""Для чего"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,,"Объект.ДляЧего");
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ТекстВопроса = НСтр("ru = 'Перед выполнением операции элемент необходимо записать. Выполнить запись элемента и продолжить?'");
ОписаниеОповещения = Новый ОписаниеОповещения("НазначитьЗавершение", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
НазначитьФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура НазначитьЗавершение(РезультатВопроса,
ДополнительныеПараметры) Экспорт
КодОтвета = РезультатВопроса;
Если КодОтвета <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Если ПроверитьЗаполнение() Тогда
Если Не Записать() Тогда
Возврат;
КонецЕсли;
Иначе
Возврат;
КонецЕсли;
НазначитьФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура НазначитьФрагмент()
Если Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУпаковочныхЛистов") Тогда
НазначитьШаблонЭтикеткиУпаковочногоЛистаОсновным(Объект.Ссылка);
Иначе
ПараметрыОткрываемойФормы = Новый Структура("Назначение, ДляЧего, Шаблон", Объект.Назначение, Объект.ДляЧего, Объект.Ссылка);
ОткрытьФорму("Справочник.ШаблоныЭтикетокИЦенников.Форма.ФормаНазначенияШаблонов", ПараметрыОткрываемойФормы);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьШаблон(Команда)
ОткрытьФорму("Справочник.ШаблоныЭтикетокИЦенников.Форма.ФормаВыбораШаблона", Новый Структура("Назначение", Объект.Назначение), ЭтотОбъект, , , , Новый ОписаниеОповещения("ВыбратьШаблонЗавершение", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьШаблонЗавершение(ИмяШаблона, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ИмяШаблона) Тогда
ТекстВопроса = НСтр("ru = 'Редактируемый шаблон будет заменен на шаблон по умолчанию, продолжить?'");
ДопПараметры = Новый Структура("ИмяШаблона", ИмяШаблона);
ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьШаблонВопросЗавершение", ЭтотОбъект, ДопПараметры);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьШаблонВопросЗавершение(РезультатВопроса,
ДополнительныеПараметры) Экспорт
ИмяШаблона = ДополнительныеПараметры.ИмяШаблона;
Результат = РезультатВопроса;
Если Результат = КодВозвратаДиалога.Да Тогда
УстановитьШаблонПоУмолчанию(ИмяШаблона);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СвойстваЯчеек.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СвойстваЯчеек.ИмяСвойства");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = НСтр("ru = 'Разделитель'");
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ReportHeaderBackColor);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СвойстваЯчеекЗначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СвойстваЯчеек.ИмяСвойства");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = НСтр("ru = 'Разделитель'");
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СвойстваЯчеекЗначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СвойстваЯчеек.ТолькоПросмотр");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СвойстваЯчеекЗначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СвойстваЯчеек.ТолькоПросмотр");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<Не доступно>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
КонецПроцедуры
&НаСервере
Функция ПараметрыДляПечатиОбразца()
ПараметрыПечати = ПечатьЭтикетокИЦенниковЛокализация.ПолучитьПараметрыДляПечатиОбразца(
ЭтотОбъект, Объект.Назначение, ТипКода, Объект);
Возврат ДополнитьПараметрыДляПечатиОбразца(ПараметрыПечати);
КонецФункции
#Область Прочее
&НаСервереБезКонтекста
Функция ПолучитьКоды()
Возврат Справочники.ШаблоныЭтикетокИЦенников.ПолучитьОбразцыШтрихкодов();
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИмяПараметраШтрихкод()
Возврат "Штрихкод";
КонецФункции
&НаКлиенте
Функция ИмяПараметраКодАкцизнойМарки()
Возврат "КодАкцизнойМарки";
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИмяПараметраВалютаЦены()
Возврат "ВидЦены.ВалютаЦены";
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция РазмерСтраницы(ПолеТабличногоДокумента)
ВысотаСтраницы = ПолеТабличногоДокумента.ВысотаСтраницы;
ШиринаСтраницы = ПолеТабличногоДокумента.ШиринаСтраницы;
Наименование = Строка(ШиринаСтраницы) + "х" + Строка(ВысотаСтраницы);
Если ШиринаСтраницы = 210 И ВысотаСтраницы = 297 Тогда
Наименование = "A4";
ИначеЕсли ШиринаСтраницы = 148 И ВысотаСтраницы = 210 Тогда
Наименование = "A5";
ИначеЕсли ШиринаСтраницы = 105 И ВысотаСтраницы = 148 Тогда
Наименование = "A6";
ИначеЕсли ШиринаСтраницы = 74 И ВысотаСтраницы = 105 Тогда
Наименование = "A7";
ИначеЕсли ШиринаСтраницы = 52 И ВысотаСтраницы = 74 Тогда
Наименование = "A8";
ИначеЕсли ШиринаСтраницы = 37 И ВысотаСтраницы = 52 Тогда
Наименование = "A9";
ИначеЕсли ШиринаСтраницы = 26 И ВысотаСтраницы = 37 Тогда
Наименование = "A10";
КонецЕсли;
Возврат Наименование;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьЗаголовок(Форма)
Наименование = Форма.Объект.Наименование;
Если Не ЗначениеЗаполнено(Форма.Объект.Ссылка) Тогда
Наименование = Наименование + ?(ЗначениеЗаполнено(Наименование), " ", "")
+ НСтр("ru = '(Создание)'");
КонецЕсли;
Форма.Автозаголовок = Ложь;
Если Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляТоваров") Тогда
Форма.Заголовок = НСтр("ru = 'Шаблон этикетки:'") + " " + Наименование;
ИначеЕсли Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЦенникДляТоваров") Тогда
Форма.Заголовок = НСтр("ru = 'Шаблон ценника:'") + " " + Наименование;
ИначеЕсли Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляСкладскихЯчеек") Тогда
Форма.Заголовок = НСтр("ru = 'Шаблон этикетки:'") + " " + Наименование;
ИначеЕсли Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляДоставки") Тогда
Форма.Заголовок = НСтр("ru = 'Шаблон этикетки:'") + " " + Наименование;
ИначеЕсли Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаСерииНоменклатуры") Тогда
Форма.Заголовок = НСтр("ru = 'Шаблон этикетки:'") + " " + Наименование;
ИначеЕсли Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУпаковочныхЛистов") Тогда
Форма.Заголовок = НСтр("ru = 'Шаблон этикетки:'") + " " + Наименование;
ИначеЕсли Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляАкцизныхМарок") Тогда
Форма.Заголовок = НСтр("ru = 'Шаблон этикетки:'") + " " + Наименование;
ИначеЕсли Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаОбъектаЭксплуатацииЛента")
ИЛИ Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаОбъектаЭксплуатацииБумага")
ИЛИ Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУзлаОбъектаЭксплуатацииБумага")
ИЛИ Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУзлаОбъектаЭксплуатацииЛента")
ИЛИ Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииЛента")
ИЛИ Форма.Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииБумага") Тогда
Форма.Заголовок = НСтр("ru = 'Шаблон этикетки:'") + " " + Наименование;
КонецЕсли;
ПечатьЭтикетокИЦенниковЛокализацияКлиентСервер.ОбновитьЗаголовокФормыШаблоныЭтикетокИЦенников(Форма, Наименование);
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьШаблон()
СтруктураШаблона = СтруктураШаблона();
Если СтруктураШаблона <> Неопределено Тогда
СтруктураМакетаШаблона = Справочники.ШаблоныЭтикетокИЦенников.ПодготовитьСтруктуруМакетаШаблона(Неопределено, Объект.Назначение);
СтруктураШаблона.Свойство("РедакторТабличныйДокумент", ПолеТабличногоДокумента);
Если СтруктураШаблона.Свойство("КоличествоПоВертикали") Тогда
КоличествоПоВертикали = СтруктураШаблона.КоличествоПоВертикали;
Иначе
КоличествоПоВертикали = СтруктураМакетаШаблона.КоличествоПоВертикали;
КонецЕсли;
Если СтруктураШаблона.Свойство("КоличествоПоГоризонтали") Тогда
КоличествоПоГоризонтали = СтруктураШаблона.КоличествоПоГоризонтали;
Иначе
КоличествоПоГоризонтали = СтруктураМакетаШаблона.КоличествоПоГоризонтали;
КонецЕсли;
Если СтруктураШаблона.Свойство("ТипКода") Тогда
ТипКода = СтруктураШаблона.ТипКода;
Иначе
ТипКода = СтруктураМакетаШаблона.ТипКода;
КонецЕсли;
Если СтруктураШаблона.Свойство("ТипШтрихкода") Тогда
ТипШтрихкода = СтруктураШаблона.ТипШтрихкода;
Иначе
ОбразцыШтрихкодов = ПолучитьКоды();
Для Каждого СтрокаТипыШтрихкода Из ОбразцыШтрихкодов Цикл
Если СтрокаТипыШтрихкода.ТипКода = ТипКода Тогда
ТипШтрихкода = СтрокаТипыШтрихкода.ТипШтрихкода;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если СтруктураШаблона.Свойство("РазмерШрифта") Тогда
РазмерШрифта = СтруктураШаблона.РазмерШрифта;
Иначе
РазмерШрифта = СтруктураМакетаШаблона.РазмерШрифта;
КонецЕсли;
Если СтруктураШаблона.Свойство("УровеньЧеткости") Тогда
УровеньЧеткости = СтруктураШаблона.УровеньЧеткости;
Иначе
УровеньЧеткости = СтруктураМакетаШаблона.УровеньЧеткости;
КонецЕсли;
Если СтруктураШаблона.Свойство("ОтображатьТекст") Тогда
ОтображатьТекст = СтруктураШаблона.ОтображатьТекст;
Иначе
ОтображатьТекст = СтруктураМакетаШаблона.ОтображатьТекст;
КонецЕсли;
Если СтруктураШаблона.Свойство("GS1DatabarКоличествоСтрок") Тогда
GS1DatabarКоличествоСтрок = СтруктураШаблона.GS1DatabarКоличествоСтрок;
Иначе
GS1DatabarКоличествоСтрок = СтруктураМакетаШаблона.GS1DatabarКоличествоСтрок;
КонецЕсли;
Если СтруктураШаблона.Свойство("МонохромныйШрифт") Тогда
МонохромныйШрифт = СтруктураШаблона.МонохромныйШрифт;
Иначе
МонохромныйШрифт = СтруктураМакетаШаблона.МонохромныйШрифт;
КонецЕсли;
Если СтруктураШаблона.Свойство("УголПоворота") Тогда
УголПоворота = СтруктураШаблона.УголПоворота;
Иначе
УголПоворота = СтруктураМакетаШаблона.УголПоворота;
КонецЕсли;
Если СтруктураШаблона.Свойство("Масштабировать") Тогда
Масштабировать = СтруктураШаблона.Масштабировать;
Иначе
Масштабировать = СтруктураМакетаШаблона.Масштабировать;
КонецЕсли;
Если СтруктураШаблона.Свойство("СохранятьПропорции") Тогда
СохранятьПропорции = СтруктураШаблона.СохранятьПропорции;
Иначе
СохранятьПропорции = СтруктураМакетаШаблона.СохранятьПропорции;
КонецЕсли;
Если СтруктураШаблона.Свойство("ВертикальноеВыравнивание") Тогда
ВертикальноеВыравнивание = СтруктураШаблона.ВертикальноеВыравнивание;
Иначе
ВертикальноеВыравнивание = СтруктураМакетаШаблона.ВертикальноеВыравнивание;
КонецЕсли;
Элементы.РазмерШрифта.Доступность = ОтображатьТекст;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РассчитатьМаксимальноеКоличествоНаСтранице()
МаксимальноеКоличество = МаксимальноеКоличествоЭтикетокНаСтранице();
КоличествоПоВертикали = МаксимальноеКоличество.ПоВертикали;
КоличествоПоГоризонтали = МаксимальноеКоличество.ПоГоризонтали;
ШаблонСтроки = НСтр("ru = 'На странице %1 помещается по вертикали: %2, по горизонтали: %3'");
ОписаниеРазмещенияДляЦенников = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонСтроки,
РазмерСтраницы(ПолеТабличногоДокумента),
КоличествоПоВертикали,
КоличествоПоГоризонтали);
КонецПроцедуры
&НаСервере
Процедура НазначениеПриИзмененииСервер(Знач ОчищатьНазначение = Истина)
ОбновитьЗаголовок(ЭтаФорма);
Элементы.ГруппаОписаниеРазмера.Видимость =
(Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЦенникДляТоваров")
ИЛИ Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаОбъектаЭксплуатацииБумага")
ИЛИ Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУзлаОбъектаЭксплуатацииБумага")
ИЛИ Объект.Назначение = ПредопределенноеЗначение("Перечисление.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииБумага"));
ЗаполнитьДоступныеПоля();
МассивТипов = Новый Массив;
Элементы.ДляЧего.ВыбиратьТип = Ложь;
Если Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляТоваров
ИЛИ Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЦенникДляТоваров Тогда
Если ОчищатьНазначение ИЛИ Объект.ДляЧего = Неопределено Тогда
Объект.ДляЧего = Справочники.Номенклатура.ПустаяСсылка();
КонецЕсли;
МассивТипов.Добавить(Тип("СправочникСсылка.Номенклатура"));
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляСкладскихЯчеек Тогда
Если ОчищатьНазначение ИЛИ Объект.ДляЧего = Неопределено Тогда
Объект.ДляЧего = Справочники.СкладскиеЯчейки.ПустаяСсылка();
КонецЕсли;
МассивТипов.Добавить(Тип("СправочникСсылка.СкладскиеЯчейки"));
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляДоставки Тогда
Элементы.ДляЧего.ВыбиратьТип = Истина;
Если ОчищатьНазначение Тогда
Объект.ДляЧего = Неопределено;
КонецЕсли;
МассивТипов.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг"));
МассивТипов.Добавить(Тип("ДокументСсылка.ПередачаТоваровХранителю"));
МассивТипов.Добавить(Тип("ДокументСсылка.ПеремещениеТоваров"));
МассивТипов.Добавить(Тип("ДокументСсылка.ОтгрузкаТоваровКлиенту"));
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаСерииНоменклатуры Тогда
Если ОчищатьНазначение ИЛИ Объект.ДляЧего = Неопределено Тогда
Объект.ДляЧего = Справочники.СерииНоменклатуры.ПустаяСсылка();
КонецЕсли;
МассивТипов.Добавить(Тип("СправочникСсылка.СерииНоменклатуры"));
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУпаковочныхЛистов Тогда
Если ОчищатьНазначение ИЛИ Объект.ДляЧего = Неопределено Тогда
Объект.ДляЧего = Документы.УпаковочныйЛист.ПустаяСсылка();
КонецЕсли;
МассивТипов.Добавить(Тип("ДокументСсылка.УпаковочныйЛист"));
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииЛента
ИЛИ Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииБумага Тогда
Если ОчищатьНазначение ИЛИ Объект.ДляЧего = Неопределено Тогда
Объект.ДляЧего = Справочники.ПартииТМЦВЭксплуатации.ПустаяСсылка();
КонецЕсли;
МассивТипов.Добавить(Тип("СправочникСсылка.ПартииТМЦВЭксплуатации"));
КонецЕсли;
ШаблоныЭтикетокИЦенниковЛокализация.ПриИзмененииНазначенияШаблонаВСправочникеШаблонов(
ЭтотОбъект, ОчищатьНазначение, МассивТипов);
Элементы.ДляЧего.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов);
Для Каждого Область Из ПолеТабличногоДокумента.Области Цикл
Если ТипЗнч(Область) <> Тип("РисунокТабличногоДокумента") Тогда
Имя = Область.Имя;
Если СтрНачинаетсяС(ВРег(Имя), ВРег("Штрихкод")) Тогда
Индекс = ЗаменитьРисунокШтрихкода(Имя);
ПолеТабличногоДокумента.Рисунки[Индекс].Имя = Имя;
КонецЕсли;
Иначе
КонецЕсли;
КонецЦикла;
РассчитатьМаксимальноеКоличествоНаСтранице();
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Назначение", Новый Структура("ОчищатьНазначение", ОчищатьНазначение));
КонецПроцедуры
&НаСервере
Процедура УстановитьШаблонПоУмолчанию(ИмяШаблона)
ШаблонПоУмолчанию = Справочники.ШаблоныЭтикетокИЦенников.ПолучитьМакет(ИмяШаблона);
ПолеТабличногоДокумента = ШаблонПоУмолчанию;
Если ИмяШаблона = "ШаблонЭтикеткиСкладскиеЯчейки" Тогда
ТипШтрихкода = Перечисления.ТипыШтрихкодов.Code128;
ОтображатьТекст = Ложь;
ИначеЕсли ИмяШаблона = "ШаблонЭтикеткиСерииНоменклатуры" Тогда
ТипШтрихкода = Перечисления.ТипыШтрихкодов.Code128;
ОтображатьТекст = Истина;
Иначе
Если Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляСкладскихЯчеек
ИЛИ Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаСерииНоменклатуры Тогда
ТипШтрихкода = Перечисления.ТипыШтрихкодов.Code128;
ОтображатьТекст = Истина;
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУпаковочныхЛистов Тогда
ТипШтрихкода = Перечисления.ТипыШтрихкодов.Code128;
ОтображатьТекст = Ложь;
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаОбъектаЭксплуатацииЛента
ИЛИ Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаОбъектаЭксплуатацииБумага
ИЛИ Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУзлаОбъектаЭксплуатацииЛента
ИЛИ Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУзлаОбъектаЭксплуатацииБумага
ИЛИ Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииЛента
ИЛИ Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииБумага Тогда
ТипШтрихкода = Перечисления.ТипыШтрихкодов.QR;
ОтображатьТекст = Ложь;
Иначе
ТипШтрихкода = Перечисления.ТипыШтрихкодов.EAN13;
ОтображатьТекст = Истина;
КонецЕсли;
КонецЕсли;
ШаблоныЭтикетокИЦенниковЛокализация.УстановитьШаблонПоУмолчанию(ЭтотОбъект, Объект, ИмяШаблона);
ОбразцыШтрихкодов = ПолучитьКоды();
Для Каждого СтрокаТипыШтрихкода Из ОбразцыШтрихкодов Цикл
Если СтрокаТипыШтрихкода.ТипШтрихкода = ТипШтрихкода Тогда
ТипКода = СтрокаТипыШтрихкода.ТипКода;
КонецЕсли;
КонецЦикла;
СтруктураМакетаШаблона = Справочники.ШаблоныЭтикетокИЦенников.ПодготовитьСтруктуруМакетаШаблона(Неопределено, Объект.Назначение);
РазмерШрифта = СтруктураМакетаШаблона.РазмерШрифта;
УровеньЧеткости = СтруктураМакетаШаблона.УровеньЧеткости;
GS1DatabarКоличествоСтрок = СтруктураМакетаШаблона.GS1DatabarКоличествоСтрок;
МонохромныйШрифт = СтруктураМакетаШаблона.МонохромныйШрифт;
УголПоворота = СтруктураМакетаШаблона.УголПоворота;
Масштабировать = СтруктураМакетаШаблона.Масштабировать;
СохранятьПропорции = СтруктураМакетаШаблона.СохранятьПропорции;
ВертикальноеВыравнивание = СтруктураМакетаШаблона.ВертикальноеВыравнивание;
МассивИмени = СтрРазделить(ИмяШаблона, "_");
Для Каждого Элемент Из МассивИмени Цикл
МассивРазмера = СтрРазделить(Элемент, "x");
Если МассивРазмера.Количество() = 2 Тогда
УстановитьРазмеры(МассивРазмера);
Прервать;
Иначе
МассивРазмера = СтрРазделить(Элемент, "х");
Если МассивРазмера.Количество() = 2 Тогда
УстановитьРазмеры(МассивРазмера);
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Для Каждого Область Из ПолеТабличногоДокумента.Области Цикл
Имя = Область.Имя;
Если СтрНачинаетсяС(ВРег(Имя), ВРег("Штрихкод")) Тогда
Индекс = ЗаменитьРисунокШтрихкода(Имя);
ПолеТабличногоДокумента.Рисунки[Индекс].Имя = Имя;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьРазмеры(МассивРазмера)
Попытка
Объект.Ширина = Число(МассивРазмера[0]);
Объект.Высота = Число(МассивРазмера[1]);
Исключение
КонецПопытки;
КонецПроцедуры
&НаСервере
Функция СтруктураШаблона()
СтруктураШаблона = Неопределено;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
СтруктураШаблона = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "Шаблон").Получить();
Иначе
ЗначениеКопирования = Неопределено;
Параметры.Свойство("ЗначениеКопирования", ЗначениеКопирования);
Если ЗначениеКопирования <> Неопределено Тогда
ЗначениеКопированияШаблон = ЗначениеКопирования.Шаблон;
СтруктураШаблона = ЗначениеКопированияШаблон.Получить();
КонецЕсли;
КонецЕсли;
Возврат СтруктураШаблона;
КонецФункции
&НаСервере
Функция ПодготовитьСтруктуруМакетаШаблона()
СтруктураМакетаШаблона = Справочники.ШаблоныЭтикетокИЦенников.ПодготовитьСтруктуруМакетаШаблона(ПолеТабличногоДокумента, Объект.Назначение);
СтруктураМакетаШаблона.ТипКода = ТипКода;
СтруктураМакетаШаблона.ТипШтрихкода = ТипШтрихкода;
СтруктураМакетаШаблона.РазмерШрифта = РазмерШрифта;
СтруктураМакетаШаблона.УровеньЧеткости = УровеньЧеткости;
СтруктураМакетаШаблона.GS1DatabarКоличествоСтрок = GS1DatabarКоличествоСтрок;
СтруктураМакетаШаблона.МонохромныйШрифт = МонохромныйШрифт;
СтруктураМакетаШаблона.УголПоворота = УголПоворота;
СтруктураМакетаШаблона.ОтображатьТекст = ОтображатьТекст;
СтруктураМакетаШаблона.Масштабировать = Масштабировать;
СтруктураМакетаШаблона.СохранятьПропорции = СохранятьПропорции;
СтруктураМакетаШаблона.ВертикальноеВыравнивание = ВертикальноеВыравнивание;
Возврат СтруктураМакетаШаблона;
КонецФункции
&НаСервере
Функция ПроверитьУмещение()
Ошибка = Ложь;
МаксимальноеКоличество = МаксимальноеКоличествоЭтикетокНаСтранице();
Если МаксимальноеКоличество.ПоГоризонтали > 0
И КоличествоПоГоризонтали > МаксимальноеКоличество.ПоГоризонтали Тогда
ТекстСообщения = НСтр("ru = 'Максимальное количество по горизонтали: %Количество%'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Количество%", МаксимальноеКоличество.ПоГоризонтали);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , "КоличествоПоГоризонтали", , Ошибка);
КонецЕсли;
Если МаксимальноеКоличество.ПоВертикали > 0
И КоличествоПоВертикали > МаксимальноеКоличество.ПоВертикали Тогда
ТекстСообщения = НСтр("ru = 'Максимальное количество по вертикали: %Количество%'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Количество%", МаксимальноеКоличество.ПоВертикали);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , "КоличествоПоВертикали", , Ошибка);
КонецЕсли;
Возврат НЕ Ошибка;
КонецФункции
&НаСервере
Функция МаксимальноеКоличествоЭтикетокНаСтранице()
Возврат Справочники.ШаблоныЭтикетокИЦенников.МаксимальноеКоличествоНаСтранице(ПолеТабличногоДокумента, Объект.Назначение);
КонецФункции
&НаСервере
Процедура УстановитьОбластьПечатиНаСервере(ИмяОбласти)
ВыделеннаяОбласть = ПолеТабличногоДокумента.Область(ИмяОбласти);
НетЛинии = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии, 0);
РедкийПунктир = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.РедкийПунктир, 1);
Если ПолеТабличногоДокумента.ОбластьПечати <> Неопределено Тогда
ПолеТабличногоДокумента.ОбластьПечати.Обвести(НетЛинии, НетЛинии, НетЛинии, НетЛинии);
КонецЕсли;
ПолеТабличногоДокумента.ОбластьПечати = ВыделеннаяОбласть;
ПолеТабличногоДокумента.ОбластьПечати.Обвести(РедкийПунктир, РедкийПунктир, РедкийПунктир, РедкийПунктир);
ПолеТабличногоДокумента.ОбластьПечати.АвтоВысотаСтроки = Ложь;
КонецПроцедуры
&НаСервере
Процедура УстановитьКартинкуШтрихкода(РисунокШтрихкода)
Эталон = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("Эталон");
КоличествоМиллиметровВПикселе = Эталон.Рисунки.Квадрат100Пикселей.Высота
/ 100;
Если Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляШтрихкодовУпаковок
И ЗначениеЗаполнено(Объект.ДляЧего) Тогда
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.ДляЧего, "ЗначениеШтрихкода, ТипШтрихкода");
Штрихкод = ЗначенияРеквизитов.ЗначениеШтрихкода;
КонецЕсли;
Если Не ЗначениеЗаполнено(Штрихкод) Тогда
ПримерШтрихкода = Неопределено;
Коды = ПолучитьКоды();
Для Каждого СтрокаТЧ Из Коды Цикл
Если СтрокаТЧ.ТипКода = ТипКода Тогда
ПримерШтрихкода = СтрокаТЧ;
Прервать;
КонецЕсли;
КонецЦикла;
Штрихкод = СокрЛП(ПримерШтрихкода.Пример);
КонецЕсли;
ЗначениеШтрихкодаДляКомпоненты = Штрихкод;
ПечатьЭтикетокИЦенниковЛокализация.МодификацияЗначенияШтрикодаКомпоненты(ЗначениеШтрихкодаДляКомпоненты, ТипКода);
ПараметрыШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
ПараметрыШтрихкода.Ширина = Окр(РисунокШтрихкода.Ширина
/ КоличествоМиллиметровВПикселе) * УровеньЧеткости;
ПараметрыШтрихкода.Высота = Окр(РисунокШтрихкода.Высота
/ КоличествоМиллиметровВПикселе) * УровеньЧеткости;
ПараметрыШтрихкода.Штрихкод = ЗначениеШтрихкодаДляКомпоненты;
ПараметрыШтрихкода.ТипВходныхДанных = 0;
ПараметрыШтрихкода.ТипКода = ТипКода;
ПараметрыШтрихкода.GS1DatabarКоличествоСтрок = GS1DatabarКоличествоСтрок;
ПараметрыШтрихкода.Вставить("МонохромныйШрифт", МонохромныйШрифт);
ПараметрыШтрихкода.УголПоворота = УголПоворота;
ПараметрыШтрихкода.ОтображатьТекст = ОтображатьТекст;
ПараметрыШтрихкода.РазмерШрифта = РазмерШрифта * УровеньЧеткости;
ПараметрыШтрихкода.Масштабировать = Масштабировать;
ПараметрыШтрихкода.СохранятьПропорции = СохранятьПропорции;
ПараметрыШтрихкода.ВертикальноеВыравнивание = ВертикальноеВыравнивание;
РезультатГенерацииШтрихкода = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
Если РезультатГенерацииШтрихкода.Картинка <> Неопределено Тогда
РисунокШтрихкода.Картинка = РезультатГенерацииШтрихкода.Картинка;
Иначе
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'При генерации картинки штрихкода произошла ошибка'"));
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВставитьРисунокШтрихкода(ИмяТекущейОбласти)
РисунокШтрихкода = ПолеТабличногоДокумента.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Индекс = ПолеТабличногоДокумента.Рисунки.Индекс(РисунокШтрихкода);
РисунокШтрихкода.Расположить(ПолеТабличногоДокумента.Область(ИмяТекущейОбласти));
РисунокШтрихкода.Имя = ИмяПараметраШтрихкод()
+ СтрЗаменить(Новый УникальныйИдентификатор, "-", "_");
РисунокШтрихкода.РазмерКартинки = РазмерКартинки.Растянуть;
РисунокШтрихкода.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии, 0);
УстановитьКартинкуШтрихкода(ПолеТабличногоДокумента.Рисунки[Индекс]);
Возврат Индекс;
КонецФункции
&НаСервере
Функция ВставитьРисунокЗнакВалюты(ИмяТекущейОбласти)
Рисунок = ПолеТабличногоДокумента.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Индекс = ПолеТабличногоДокумента.Рисунки.Индекс(Рисунок);
Рисунок.Расположить(ПолеТабличногоДокумента.Область(ИмяТекущейОбласти));
Рисунок.Имя = "ЗнакВалюты"
+ СтрЗаменить(Новый УникальныйИдентификатор, "-", "_");
Рисунок.ЦветФона = Новый Цвет;
Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
Рисунок.РазмерКартинки = РазмерКартинки.Пропорционально;
Рисунок.Картинка = Новый Картинка(Справочники.ШаблоныЭтикетокИЦенников.ПолучитьМакет("ЗнакВалюты643"), Истина);
Возврат Индекс;
КонецФункции
&НаСервере
Функция ЗаменитьРисунокШтрихкода(ИмяРисункаИлиРисунок)
РисунокШтрихкодаИсточник = Неопределено;
Если ТипЗнч(ИмяРисункаИлиРисунок) = Тип("Строка") Тогда
Для Каждого Рисунок Из ПолеТабличногоДокумента.Рисунки Цикл
Если Рисунок.Имя <> ИмяРисункаИлиРисунок Тогда
Продолжить;
КонецЕсли;
РисунокШтрихкодаИсточник = Рисунок;
Прервать;
КонецЦикла;
Иначе
РисунокШтрихкодаИсточник = ИмяРисункаИлиРисунок;
КонецЕсли;
РисунокШтрихкода = ПолеТабличногоДокумента.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
РисунокШтрихкода.Верх = РисунокШтрихкодаИсточник.Верх;
РисунокШтрихкода.Лево = РисунокШтрихкодаИсточник.Лево;
РисунокШтрихкода.Высота = РисунокШтрихкодаИсточник.Высота;
РисунокШтрихкода.Ширина = РисунокШтрихкодаИсточник.Ширина;
РисунокШтрихкода.Имя = РисунокШтрихкодаИсточник.Имя;
РисунокШтрихкода.Линия = РисунокШтрихкодаИсточник.Линия;
РисунокШтрихкода.РазмерКартинки = РисунокШтрихкодаИсточник.РазмерКартинки;
ПолеТабличногоДокумента.Рисунки.Удалить(РисунокШтрихкодаИсточник);
Индекс = ПолеТабличногоДокумента.Рисунки.Индекс(РисунокШтрихкода);
УстановитьКартинкуШтрихкода(ПолеТабличногоДокумента.Рисунки[Индекс]);
Возврат Индекс;
КонецФункции
&НаСервере
Процедура ОбъединитьОбласть(ИмяОбласти)
Область = ПолеТабличногоДокумента.Область(ИмяОбласти);
Область.Объединить();
КонецПроцедуры
&НаСервере
Процедура РазъединитьОбласть(ИмяОбласти)
Область = ПолеТабличногоДокумента.Область(ИмяОбласти);
Область.Разъединить();
КонецПроцедуры
&НаСервере
Процедура НастроитьШаблон()
Если ЗначениеЗаполнено(ИмяМакета) Тогда
УстановитьШаблонПоУмолчанию(ИмяМакета);
Иначе
ПолеТабличногоДокумента = Новый ТабличныйДокумент;
ПолеТабличногоДокумента.ОбластьПечати = ПолеТабличногоДокумента.Область("R2C2:R20C5");
РедкийПунктир = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.РедкийПунктир, 1);
ПолеТабличногоДокумента.ОбластьПечати.Обвести(РедкийПунктир, РедкийПунктир, РедкийПунктир, РедкийПунктир);
СтруктураМакетаШаблона = Справочники.ШаблоныЭтикетокИЦенников.ПодготовитьСтруктуруМакетаШаблона(Неопределено, Объект.Назначение);
КоличествоПоГоризонтали = СтруктураМакетаШаблона.КоличествоПоГоризонтали;
КоличествоПоВертикали = СтруктураМакетаШаблона.КоличествоПоВертикали;
ТипКода = СтруктураМакетаШаблона.ТипКода;
ТипШтрихкода = СтруктураМакетаШаблона.ТипШтрихкода;
ОтображатьТекст = СтруктураМакетаШаблона.ОтображатьТекст;
РазмерШрифта = СтруктураМакетаШаблона.РазмерШрифта;
УровеньЧеткости = СтруктураМакетаШаблона.УровеньЧеткости;
GS1DatabarКоличествоСтрок = СтруктураМакетаШаблона.GS1DatabarКоличествоСтрок;
МонохромныйШрифт = СтруктураМакетаШаблона.МонохромныйШрифт;
УголПоворота = СтруктураМакетаШаблона.УголПоворота;
Масштабировать = СтруктураМакетаШаблона.Масштабировать;
СохранятьПропорции = СтруктураМакетаШаблона.СохранятьПропорции;
ВертикальноеВыравнивание = СтруктураМакетаШаблона.ВертикальноеВыравнивание;
Элементы.ОтображатьТекст.Доступность = Истина;
Элементы.ТипКода.Доступность = Истина;
КонецЕсли;
Элементы.РазмерШрифта.Доступность = ОтображатьТекст;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоступныеПоля()
УстановитьПривилегированныйРежим(Истина);
СхемаКомпоновкиДанных = Неопределено;
ШаблоныЭтикетокИЦенниковЛокализация.ПриЗаполненииСхемыКомпоновкиДанных(СхемаКомпоновкиДанных, Объект.Назначение);
Если Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляСкладскихЯчеек Тогда
СхемаКомпоновкиДанных = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("ПоляШаблонаСкладскиеЯчейки");
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЦенникДляТоваров Тогда
СхемаКомпоновкиДанных = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("ПоляШаблонаТовары");
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляТоваров Тогда
СхемаКомпоновкиДанных = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("ПоляШаблонаТовары");
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляДоставки Тогда
СхемаКомпоновкиДанных = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("ПоляШаблонаДоставка");
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаСерииНоменклатуры Тогда
СхемаКомпоновкиДанных = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("ПоляШаблонаСерииНоменклатуры");
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУпаковочныхЛистов Тогда
СхемаКомпоновкиДанных = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("ПоляШаблонаУпаковочныеЛисты");
КонецЕсли;
ИменаПолей = Новый Массив;
ШаблоныЭтикетокИЦенниковЛокализация.ПриЗаполненииДоступныхПолейКомпоновкиДанных(ИменаПолей, Объект.Назначение);
Если Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляСкладскихЯчеек Тогда
ИменаПолей.Добавить("Штрихкод");
ИменаПолей.Добавить("Ячейка");
ИменаПолей.Добавить("Ячейка.Код");
ИменаПолей.Добавить("Ячейка.Родитель");
ИменаПолей.Добавить("Ячейка.Линия");
ИменаПолей.Добавить("Ячейка.Наименование");
ИменаПолей.Добавить("Ячейка.Позиция");
ИменаПолей.Добавить("Ячейка.ПорядокОбхода");
ИменаПолей.Добавить("Ячейка.РабочийУчасток");
ИменаПолей.Добавить("Ячейка.Секция");
ИменаПолей.Добавить("Ячейка.Владелец");
ИменаПолей.Добавить("Ячейка.Стеллаж");
ИменаПолей.Добавить("Ячейка.Ярус");
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЦенникДляТоваров
ИЛИ Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляТоваров Тогда
ИменаПолей.Добавить("Штрихкод");
ИменаПолей.Добавить("ВидЦены");
ИменаПолей.Добавить("ВидЦены.ВалютаЦены");
ИменаПолей.Добавить("ВидЦены.Наименование");
ИменаПолей.Добавить("ВидЦены.ЦенаВключаетНДС");
ИменаПолей.Добавить("Цена");
ИменаПолей.Добавить("ДатаПоследнегоИзмененияЦены");
ИменаПолей.Добавить("ВидЦеныДополнительно");
ИменаПолей.Добавить("ВидЦеныДополнительно.ВалютаЦены");
ИменаПолей.Добавить("ВидЦеныДополнительно.Наименование");
ИменаПолей.Добавить("ВидЦеныДополнительно.ЦенаВключаетНДС");
ИменаПолей.Добавить("ЦенаДополнительно");
ИменаПолей.Добавить("ДатаПоследнегоИзмененияЦеныДополнительно");
ИменаПолей.Добавить("Номенклатура.Артикул");
ИменаПолей.Добавить("Номенклатура.ВариантОформленияПродажи");
ИменаПолей.Добавить("Номенклатура.Вес");
ИменаПолей.Добавить("Номенклатура.ВестиУчетПоГТД");
ИменаПолей.Добавить("Номенклатура.ВидНоменклатуры");
ИменаПолей.Добавить("Номенклатура.Родитель");
ИменаПолей.Добавить("Номенклатура.ЕдиницаИзмерения");
ИменаПолей.Добавить("Номенклатура.Код");
ИменаПолей.Добавить("Номенклатура.КодДляПоиска");
ИменаПолей.Добавить("Номенклатура.Наименование");
ИменаПолей.Добавить("Номенклатура.НаименованиеПолное");
ИменаПолей.Добавить("Номенклатура.Объем");
ИменаПолей.Добавить("Номенклатура.Производитель");
ИменаПолей.Добавить("Номенклатура.Описание");
ИменаПолей.Добавить("Номенклатура.ТипНоменклатуры");
ИменаПолей.Добавить("Номенклатура,Свойства");
ИменаПолей.Добавить("Характеристика.Наименование");
ИменаПолей.Добавить("Характеристика.НаименованиеПолное");
ИменаПолей.Добавить("Характеристика.Владелец");
ИменаПолей.Добавить("Характеристика,Свойства");
ИменаПолей.Добавить("Весовой");
ИменаПолей.Добавить("КодПодключаемогоОборудованияOffline");
ИменаПолей.Добавить("PLU");
ИменаПолей.Добавить("Организация");
ИменаПолей.Добавить("ТекущееВремя");
ИменаПолей.Добавить("ТекущийПользователь");
ИменаПолей.Добавить("УпаковкаЕдиницаИзмерения");
ИменаПолей.Добавить("СтавкаНДС");
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаДляДоставки Тогда
ИменаПолей.Добавить("ВесНакладной");
ИменаПолей.Добавить("ЕдиницаИзмеренияВеса");
ИменаПолей.Добавить("ЕдиницаИзмеренияОбъема");
ИменаПолей.Добавить("КоличествоПозиций");
ИменаПолей.Добавить("ОбъемНакладной");
ИменаПолей.Добавить("Распоряжение,Свойства");
ИменаПолей.Добавить("Распоряжение.Автор");
ИменаПолей.Добавить("Распоряжение.АдресДоставки");
ИменаПолей.Добавить("Распоряжение.БанковскийСчетГрузоотправителя");
ИменаПолей.Добавить("Распоряжение.БанковскийСчетГрузополучателя");
ИменаПолей.Добавить("Распоряжение.БанковскийСчетКонтрагента");
ИменаПолей.Добавить("Распоряжение.БанковскийСчетОрганизации");
ИменаПолей.Добавить("Распоряжение.Валюта");
ИменаПолей.Добавить("Распоряжение.ВалютаВзаиморасчетов");
ИменаПолей.Добавить("Распоряжение.ВидЦены");
ИменаПолей.Добавить("Распоряжение.ВидыЗапасов");
ИменаПолей.Добавить("Распоряжение.Грузоотправитель");
ИменаПолей.Добавить("Распоряжение.Грузополучатель");
ИменаПолей.Добавить("Распоряжение.Дата");
ИменаПолей.Добавить("Распоряжение.ДоверенностьДата");
ИменаПолей.Добавить("Распоряжение.ДатаПлатежа");
ИменаПолей.Добавить("Распоряжение.Договор");
ИменаПолей.Добавить("Распоряжение.ОтпустилДолжность");
ИменаПолей.Добавить("Распоряжение.КартаЛояльности");
ИменаПолей.Добавить("Распоряжение.Касса");
ИменаПолей.Добавить("Распоряжение.ДоверенностьВыдана");
ИменаПолей.Добавить("Распоряжение.Партнер,Свойства");
ИменаПолей.Добавить("Распоряжение.Комментарий");
ИменаПолей.Добавить("Распоряжение.ДоверенностьЛицо");
ИменаПолей.Добавить("Распоряжение.Менеджер");
ИменаПолей.Добавить("Распоряжение.НалогообложениеНДС");
ИменаПолей.Добавить("Распоряжение.Номер");
ИменаПолей.Добавить("Распоряжение.ДоверенностьНомер");
ИменаПолей.Добавить("Распоряжение.ХозяйственнаяОперация");
ИменаПолей.Добавить("Распоряжение.Организация");
ИменаПолей.Добавить("Распоряжение.Основание");
ИменаПолей.Добавить("Распоряжение.Ответственный");
ИменаПолей.Добавить("Распоряжение.Отпустил");
ИменаПолей.Добавить("Распоряжение.Подразделение");
ИменаПолей.Добавить("Распоряжение.Склад");
ИменаПолей.Добавить("Распоряжение.СкладОтправитель");
ИменаПолей.Добавить("Распоряжение.СкладПолучатель");
ИменаПолей.Добавить("Распоряжение.Согласован");
ИменаПолей.Добавить("Распоряжение.Соглашение");
ИменаПолей.Добавить("Распоряжение.СуммаВзаиморасчетов");
ИменаПолей.Добавить("Распоряжение.СуммаДокумента");
ИменаПолей.Добавить("Распоряжение.ФормаОплаты");
ИменаПолей.Добавить("Распоряжение.ЦенаВключаетНДС");
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаСерииНоменклатуры Тогда
ИменаПолей.Добавить("Штрихкод");
ИменаПолей.Добавить("Серия.ВидНоменклатуры");
ИменаПолей.Добавить("Серия.ГоденДо");
ИменаПолей.Добавить("Серия.Наименование");
ИменаПолей.Добавить("Серия.Номер");
ИменаПолей.Добавить("Серия,Свойства");
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаУпаковочныхЛистов Тогда
ИменаПолей.Добавить("Штрихкод");
ИменаПолей.Добавить("Код");
ИменаПолей.Добавить("Основание");
ИменаПолей.Добавить("УпаковочныйЛист.Код");
ИменаПолей.Добавить("УпаковочныйЛист.СкладУпаковки");
ИменаПолей.Добавить("УпаковочныйЛист.Вид");
ИменаПолей.Добавить("УпаковочныйЛист.Упаковал");
ИменаПолей.Добавить("УпаковочныйЛист.Основание");
ИменаПолей.Добавить("УпаковочныйЛист.Комментарий");
ИменаПолей.Добавить("УпаковочныйЛист.ВсегоМест");
ИначеЕсли Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииЛента
ИЛИ Объект.Назначение = Перечисления.НазначенияШаблоновЭтикетокИЦенников.ЭтикеткаТМЦВЭксплуатацииБумага Тогда
ИменаПолей = Новый Массив;
ИменаПолей.Добавить("ИнвентарныйНомер");
ИменаПолей.Добавить("Номенклатура.Артикул");
ИменаПолей.Добавить("Номенклатура.ВариантОформленияПродажи");
ИменаПолей.Добавить("Номенклатура.Вес");
ИменаПолей.Добавить("Номенклатура.ВестиУчетПоГТД");
ИменаПолей.Добавить("Номенклатура.ВидНоменклатуры");
ИменаПолей.Добавить("Номенклатура.Родитель");
ИменаПолей.Добавить("Номенклатура.ЕдиницаИзмерения");
ИменаПолей.Добавить("Номенклатура.Код");
ИменаПолей.Добавить("Номенклатура.КодДляПоиска");
ИменаПолей.Добавить("Номенклатура.Наименование");
ИменаПолей.Добавить("Номенклатура.НаименованиеПолное");
ИменаПолей.Добавить("Номенклатура.Объем");
ИменаПолей.Добавить("Номенклатура.Производитель");
ИменаПолей.Добавить("Номенклатура.Описание");
ИменаПолей.Добавить("Номенклатура.ТипНоменклатуры");
ИменаПолей.Добавить("Номенклатура,Свойства");
ИменаПолей.Добавить("Характеристика.Наименование");
ИменаПолей.Добавить("Характеристика.НаименованиеПолное");
ИменаПолей.Добавить("Характеристика.Владелец");
ИменаПолей.Добавить("Характеристика,Свойства");
ИменаПолей.Добавить("Серия.Наименование");
ИменаПолей.Добавить("Серия.ГоденДо");
ИменаПолей.Добавить("Серия.Номер");
ИменаПолей.Добавить("Серия,Свойства");
ИменаПолей.Добавить("Партия.Наименование");
ИменаПолей.Добавить("Партия.КатегорияЭксплуатации");
ИменаПолей.Добавить("Партия.СрокЭксплуатации");
ИменаПолей.Добавить("Партия.ДатаНачалаЭксплуатации");
ИменаПолей.Добавить("Партия.ДатаЗавершенияЭксплуатации");
КонецЕсли;
ДеревоОперандов = РаботаСФормулами.ПолучитьПустоеДеревоОперандов();
Если НЕ СхемаКомпоновкиДанных = Неопределено Тогда
ОграниченияРазвертки = ОграниченияРазверткиПоИменамПолей(ИменаПолей, "");
РаботаСФормулами.ДобавитьВДеревоДоступныеПоляПоСхемеКомпоновки(ДеревоОперандов, СхемаКомпоновкиДанных, ОграниченияРазвертки);
РекурсивноРазвернутьСтрокиДереваСУчетомОграниченийПолей(ДеревоОперандов, ИменаПолей, "");
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
РаботаСФормулами.ЗагрузитьДеревоОперандовВДеревоФормы(ДоступныеПоляКомпоновкиДанных, ДеревоОперандов);
КонецПроцедуры
&НаСервере
Функция ОграниченияРазверткиПоИменамПолей(ИменаПолей, ПредыдущийНакопленныйУровеньПолей = "")
ОграниченияРазвертки = РаботаСФормулами.ОграниченияРазверткиОперандов();
ОграниченияРазвертки.ВыводимыеРеквизиты = "";
ОграниченияРазвертки.ВыводитьРеквизиты = Ложь;
ОграниченияРазвертки.ВыводитьХарактеристики = Ложь;
ВыводимыеПоля = Новый Массив;
Для Каждого СтруктураПоля Из ИменаПолей Цикл
Если ПредыдущийНакопленныйУровеньПолей = "" Тогда
ОставшаясяЧастьСтруктурыПоля = СтруктураПоля;
ИначеЕсли СтрНачинаетсяС(СтруктураПоля, ПредыдущийНакопленныйУровеньПолей)
И (Сред(СтруктураПоля, СтрДлина(ПредыдущийНакопленныйУровеньПолей) + 1, 1) = "."
ИЛИ Сред(СтруктураПоля, СтрДлина(ПредыдущийНакопленныйУровеньПолей) + 1, 1) = ",") Тогда
ОставшаясяЧастьСтруктурыПоля = Сред(СтруктураПоля, СтрДлина(ПредыдущийНакопленныйУровеньПолей) + 1);
Иначе
ОставшаясяЧастьСтруктурыПоля = "";
КонецЕсли;
Если НЕ ПустаяСтрока(ОставшаясяЧастьСтруктурыПоля) Тогда
ВключаяПустые = Истина;
ИменаПолейИДействия = СтрРазделить(ОставшаясяЧастьСтруктурыПоля, ",", ВключаяПустые);
ПеречисленияПолей = ИменаПолейИДействия[0];
ВключаяПустые = Ложь;
ИерархияПолей = СтрРазделить(ПеречисленияПолей, ".", ВключаяПустые);
Если ИерархияПолей.Количество() = 0
И ИменаПолейИДействия.Количество() = 2
И ИменаПолейИДействия[1] = "Свойства" Тогда
ОграниченияРазвертки.ВыводитьХарактеристики = Истина;
КонецЕсли;
КоличествоПолей = ИерархияПолей.Количество();
Если КоличествоПолей > 0 Тогда
Для СчетчикПолей = 1 По КоличествоПолей Цикл
ПолноеИмяПоля = "";
Для ВложенныйСчетчикПолей = 1 По СчетчикПолей Цикл
Поле = ИерархияПолей[ВложенныйСчетчикПолей - 1];
ПолноеИмяПоля = ПолноеИмяПоля + ?(ПолноеИмяПоля = "", "", ".") + Поле;
КонецЦикла;
Если ВыводимыеПоля.Найти(ПолноеИмяПоля) = Неопределено Тогда
ВыводимыеПоля.Добавить(ПолноеИмяПоля);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ОграниченияРазвертки.ВыводимыеРеквизиты = СтрСоединить(ВыводимыеПоля, ",");
Если ВыводимыеПоля.Количество() > 0 Тогда
ОграниченияРазвертки.ВыводитьРеквизиты = Истина;
КонецЕсли;
Возврат ОграниченияРазвертки;
КонецФункции
&НаСервере
Процедура РекурсивноРазвернутьСтрокиДереваСУчетомОграниченийПолей(ИсточникСтрок, ИменаПолей, Знач ПредыдущийНакопленныйУровень = "")
ТипыЭлементовДерева = РаботаСФормулами.ТипыЭлементовДереваОперандов();
Для Каждого СтрокаДерева Из ИсточникСтрок.Строки Цикл
ТекущийНакопленныйУровень = ПредыдущийНакопленныйУровень + ?(ПредыдущийНакопленныйУровень = "", "", ".") + СтрокаДерева.Идентификатор;
ОграниченияРазвертки = ОграниченияРазверткиПоИменамПолей(ИменаПолей, ТекущийНакопленныйУровень);
Если СтрокаДерева.ТипЭлементаДерева = ТипыЭлементовДерева.Группа
ИЛИ СтрокаДерева.ТипЭлементаДерева = ТипыЭлементовДерева.ГруппаСтрокВерхнегоУровня Тогда
Для каждого ПодчиненнаяСтрока Из СтрокаДерева.Строки Цикл
РекурсивноРазвернутьСтрокиДереваСУчетомОграниченийПолей(ПодчиненнаяСтрока, ИменаПолей, ТекущийНакопленныйУровень);
КонецЦикла;
Продолжить;
КонецЕсли;
Если ОграниченияРазвертки.ВыводитьРеквизиты
ИЛИ ОграниченияРазвертки.ВыводитьХарактеристики Тогда
Если ОграниченияРазвертки.ВыводитьХарактеристики
И ТипЗнч(Объект.ДляЧего) = Тип("СправочникСсылка.Номенклатура")
И ЗначениеЗаполнено(Объект.ДляЧего) Тогда
Если СтрокаДерева.Идентификатор = "Номенклатура" Тогда
Набор = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ДляЧего, "ВидНоменклатуры.НаборСвойств");
Если ЗначениеЗаполнено(Набор) Тогда
ОграниченияРазвертки.НаборыДополнительныхРеквизитов.Добавить(Набор);
Иначе
ОграниченияРазвертки.ВыводитьХарактеристики = Ложь;
КонецЕсли;
ИначеЕсли СтрокаДерева.Идентификатор = "Характеристика" Тогда
Набор = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ДляЧего, "ВидНоменклатуры.НаборСвойствХарактеристик");
Если ЗначениеЗаполнено(Набор) Тогда
ОграниченияРазвертки.НаборыДополнительныхРеквизитов.Добавить(Набор);
Иначе
ОграниченияРазвертки.ВыводитьХарактеристики = Ложь;
КонецЕсли;
ИначеЕсли СтрокаДерева.Идентификатор = "Серия" Тогда
Набор = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ДляЧего, "ВидНоменклатуры.НаборСвойствСерий");
Если ЗначениеЗаполнено(Набор) Тогда
ОграниченияРазвертки.НаборыДополнительныхРеквизитов.Добавить(Набор);
Иначе
ОграниченияРазвертки.ВыводитьХарактеристики = Ложь;
КонецЕсли;
КонецЕсли;
КонецЕсли;
РаботаСФормулами.РазвернутьСтрокуОперанда(СтрокаДерева, ОграниченияРазвертки);
РекурсивноРазвернутьСтрокиДереваСУчетомОграниченийПолей(СтрокаДерева, ИменаПолей, ТекущийНакопленныйУровень);
Иначе
СтрокаДерева.РазворачиватьДоРеквизитов = Ложь;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьРазмер(ШиринаОбластиВМиллиметрах,
ВысотаОбластиВМиллиметрах, РазмерЯчейкиВМиллиметрах)
ЭталонРазмеров = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("ЭталонРазмерыЯчеек");
Картинка = ЭталонРазмеров.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Картинка.Расположить(ЭталонРазмеров.Область("R1C1:R100C100"));
ВысотаКартинкиВМиллиметрах = Картинка.Высота;
ШиринаКартинкиВМиллиметрах = Картинка.Ширина;
ВысотаВМиллиметрахЯчейкиВысотой0_25 = ВысотаКартинкиВМиллиметрах / 100;
ШиринаВМиллиметрахЯчейкиШириной0_125 = (ШиринаКартинкиВМиллиметрах / 100)
/ 4;
МинимальныйШагУстановкиШирины = 0.125;
МинимальныйШагУстановкиВысоты = 0.25;
КоличествоШаговВМиллиметреПоВысоте = 0;
Пока КоличествоШаговВМиллиметреПоВысоте
* ВысотаВМиллиметрахЯчейкиВысотой0_25 < 1 Цикл
КоличествоШаговВМиллиметреПоВысоте = КоличествоШаговВМиллиметреПоВысоте + 1;
КонецЦикла;
КоличествоШаговВМиллиметреПоВысоте = КоличествоШаговВМиллиметреПоВысоте - 1;
КоличествоШаговВМиллиметреПоШирине = 0;
Пока КоличествоШаговВМиллиметреПоШирине
* ШиринаВМиллиметрахЯчейкиШириной0_125 < 1 Цикл
КоличествоШаговВМиллиметреПоШирине = КоличествоШаговВМиллиметреПоШирине + 1;
КонецЦикла;
КоличествоШаговВМиллиметреПоШирине = КоличествоШаговВМиллиметреПоШирине - 1;
ГенераторСлучайныхЧисел = Новый ГенераторСлучайныхЧисел;
ПолеТабличногоДокумента.Очистить();
КоличествоЯчеекПоШирине = Цел(ШиринаОбластиВМиллиметрах
/ РазмерЯчейкиВМиллиметрах);
КоличествоЯчеекПоВысоте = Цел(ВысотаОбластиВМиллиметрах
/ РазмерЯчейкиВМиллиметрах);
ШиринаДокумента = 1 + КоличествоЯчеекПоШирине;
ВысотаДокумента = 1 + КоличествоЯчеекПоВысоте;
Для НомерКолонки = 2 По ШиринаДокумента Цикл
ИмяОбласти = "C" + НомерКолонки;
ПолеТабличногоДокумента.Область(ИмяОбласти).ШиринаКолонки = (МинимальныйШагУстановкиШирины
* КоличествоШаговВМиллиметреПоШирине) * РазмерЯчейкиВМиллиметрах;
КонецЦикла;
Для НомерСтроки = 2 По ВысотаДокумента Цикл
ИмяОбласти = "R" + НомерСтроки;
ПолеТабличногоДокумента.Область(ИмяОбласти).АвтоВысотаСтроки = Ложь;
ПолеТабличногоДокумента.Область(ИмяОбласти).ВысотаСтроки = (МинимальныйШагУстановкиВысоты
* КоличествоШаговВМиллиметреПоВысоте) * РазмерЯчейкиВМиллиметрах;
КонецЦикла;
ИмяОбластиПечати = "R2C2" + ":" + "R" + Формат(ВысотаДокумента, "ЧГ=0") + "C"
+ Формат(ШиринаДокумента, "ЧГ=0");
ПолеТабличногоДокумента.Область("R1C1:" + "R" + 200 + "C"
+ 200).ЦветФона = WebЦвета.Серый;
ПолеТабличногоДокумента.Область(ИмяОбластиПечати).ЦветФона = Новый Цвет;
УстановитьОбластьПечатиНаСервере(ИмяОбластиПечати);
ИндексКартинки = ВставитьРисунокШтрихкода(ИмяОбластиПечати);
ФактическаяШиринаВМиллиметрах = ПолеТабличногоДокумента.Рисунки[ИндексКартинки].Ширина;
ФактическаяВысотаВМиллиметрах = ПолеТабличногоДокумента.Рисунки[ИндексКартинки].Высота;
НедостающаяШиринаВМиллиметрах = ШиринаОбластиВМиллиметрах
- ФактическаяШиринаВМиллиметрах;
КоличествоЯчеекДляИзмененияШирины = Цел(НедостающаяШиринаВМиллиметрах
/ ((ФактическаяШиринаВМиллиметрах / ШиринаОбластиВМиллиметрах)
/ КоличествоШаговВМиллиметреПоШирине));
Коэффициент = 1;
КоличествоИзмененныхЯчеек = 0;
Пока КоличествоЯчеекДляИзмененияШирины > 0 Цикл
НомерКолонки = ГенераторСлучайныхЧисел.СлучайноеЧисло(2, ШиринаДокумента);
ИмяОбласти = "C" + НомерКолонки;
Если ПолеТабличногоДокумента.Область(ИмяОбласти).ШиринаКолонки = (МинимальныйШагУстановкиШирины
* КоличествоШаговВМиллиметреПоШирине) * РазмерЯчейкиВМиллиметрах
+ МинимальныйШагУстановкиШирины * (Коэффициент - 1) Тогда
ПолеТабличногоДокумента.Область(ИмяОбласти).ШиринаКолонки = (МинимальныйШагУстановкиШирины
* КоличествоШаговВМиллиметреПоШирине) * РазмерЯчейкиВМиллиметрах
+ МинимальныйШагУстановкиШирины * Коэффициент;
КоличествоЯчеекДляИзмененияШирины = КоличествоЯчеекДляИзмененияШирины - 1;
КоличествоИзмененныхЯчеек = КоличествоИзмененныхЯчеек + 1;
КонецЕсли;
Если КоличествоИзмененныхЯчеек = КоличествоЯчеекПоШирине Тогда
КоличествоИзмененныхЯчеек = 0;
Коэффициент = Коэффициент + 1;
КонецЕсли;
Если КоличествоЯчеекДляИзмененияШирины = 0 Тогда
ФактическаяШиринаВМиллиметрах = ПолеТабличногоДокумента.Рисунки[ИндексКартинки].Ширина;
НедостающаяШиринаВМиллиметрах = ШиринаОбластиВМиллиметрах
- ФактическаяШиринаВМиллиметрах;
КоличествоЯчеекДляИзмененияШирины = Цел(НедостающаяШиринаВМиллиметрах
/ ((ФактическаяШиринаВМиллиметрах / ШиринаОбластиВМиллиметрах)
/ КоличествоШаговВМиллиметреПоШирине));
КонецЕсли;
КонецЦикла;
НедостающаяВысотаВМиллиметрах = ВысотаОбластиВМиллиметрах
- ФактическаяВысотаВМиллиметрах;
КоличествоЯчеекДляИзмененияВысоты = Цел(НедостающаяВысотаВМиллиметрах
/ ((ФактическаяВысотаВМиллиметрах / ВысотаОбластиВМиллиметрах)
/ КоличествоШаговВМиллиметреПоВысоте));
Коэффициент = 1;
КоличествоИзмененныхЯчеек = 0;
Пока КоличествоЯчеекДляИзмененияВысоты > 0 Цикл
НомерСтроки = ГенераторСлучайныхЧисел.СлучайноеЧисло(2, ВысотаДокумента);
ИмяОбласти = "R" + НомерСтроки;
Если ПолеТабличногоДокумента.Область(ИмяОбласти).ВысотаСтроки = (МинимальныйШагУстановкиВысоты
* КоличествоШаговВМиллиметреПоВысоте) * РазмерЯчейкиВМиллиметрах
+ МинимальныйШагУстановкиВысоты * (Коэффициент - 1) Тогда
ПолеТабличногоДокумента.Область(ИмяОбласти).ВысотаСтроки = (МинимальныйШагУстановкиВысоты
* КоличествоШаговВМиллиметреПоВысоте) * РазмерЯчейкиВМиллиметрах
+ МинимальныйШагУстановкиВысоты * Коэффициент;
КоличествоЯчеекДляИзмененияВысоты = КоличествоЯчеекДляИзмененияВысоты - 1;
КоличествоИзмененныхЯчеек = КоличествоИзмененныхЯчеек + 1;
КонецЕсли;
Если КоличествоИзмененныхЯчеек = КоличествоЯчеекПоВысоте Тогда
КоличествоИзмененныхЯчеек = 0;
Коэффициент = Коэффициент + 1;
КонецЕсли;
Если КоличествоЯчеекДляИзмененияВысоты = 0 Тогда
ФактическаяВысотаВМиллиметрах = ПолеТабличногоДокумента.Рисунки[ИндексКартинки].Высота;
НедостающаяВысотаВМиллиметрах = ВысотаОбластиВМиллиметрах
- ФактическаяВысотаВМиллиметрах;
КоличествоЯчеекДляИзмененияВысоты = Цел(НедостающаяВысотаВМиллиметрах
/ ((ФактическаяВысотаВМиллиметрах / ВысотаОбластиВМиллиметрах)
/ КоличествоШаговВМиллиметреПоВысоте));
КонецЕсли;
КонецЦикла;
ПолеТабличногоДокумента.Рисунки.Удалить(ПолеТабличногоДокумента.Рисунки[ИндексКартинки]);
РассчитатьМаксимальноеКоличествоНаСтранице();
КонецПроцедуры
&НаСервере
Функция ДополнитьПараметрыДляПечатиОбразца(ПараметрыПечати)
ПараметрыПечати.Вставить("СтруктураМакетаШаблона", ПодготовитьСтруктуруМакетаШаблона());
Возврат ПараметрыПечати;
КонецФункции
&НаСервере
Функция ПолучитьПараметрыДляПечатиОбразцаЭтикеткиТовара()
ПараметрыПечати = Справочники.ШаблоныЭтикетокИЦенников.ПолучитьПараметрыДляПечатиОбразцаЭтикеткиТовара(
Объект.ДляЧего, ТипКода, УникальныйИдентификатор);
Возврат ДополнитьПараметрыДляПечатиОбразца(ПараметрыПечати);
КонецФункции
&НаСервере
Функция ПолучитьПараметрыДляПечатиОбразцаЦенникаТовара()
ПараметрыПечати = Справочники.ШаблоныЭтикетокИЦенников.ПолучитьПараметрыДляПечатиОбразцаЦенникаТовара(
Объект.ДляЧего, ТипКода, УникальныйИдентификатор);
Возврат ДополнитьПараметрыДляПечатиОбразца(ПараметрыПечати);
КонецФункции
&НаСервере
Функция ПолучитьПараметрыДляПечатиОбразцаЭтикеткиСкладскойЯчейки()
ПараметрыПечати = Справочники.ШаблоныЭтикетокИЦенников.ПолучитьПараметрыДляПечатиОбразцаЭтикеткиСкладскойЯчейки(
Объект.ДляЧего, ТипКода, УникальныйИдентификатор);
Возврат ДополнитьПараметрыДляПечатиОбразца(ПараметрыПечати);
КонецФункции
&НаСервере
Функция ПолучитьПараметрыДляПечатиОбразцаЭтикеткиДоставки()
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(Объект.ДляЧего);
ПараметрыПечати = Обработки.ПечатьЭтикетокИЦенников.ДанныеДляПечатиЭтикетокДоставки(МассивОбъектов);
Возврат ДополнитьПараметрыДляПечатиОбразца(ПараметрыПечати);
КонецФункции
&НаСервере
Функция ПолучитьПараметрыДляПечатиОбразцаЭтикеткиУпаковочныеЛисты()
ПараметрыПечати = Справочники.ШаблоныЭтикетокИЦенников.ПолучитьПараметрыДляПечатиОбразцаЭтикеткиУпаковочныеЛисты(
Объект.ДляЧего, ТипКода, УникальныйИдентификатор);
Возврат ДополнитьПараметрыДляПечатиОбразца(ПараметрыПечати);
КонецФункции
&НаСервере
Функция ПолучитьПараметрыДляПечатиОбразцаЭтикеткиСерииНоменклатуры()
ПараметрыПечати = Справочники.ШаблоныЭтикетокИЦенников.ПолучитьПараметрыДляПечатиОбразцаЭтикеткиСерииНоменклатуры(
Объект.ДляЧего, ТипКода, УникальныйИдентификатор);
Возврат ДополнитьПараметрыДляПечатиОбразца(ПараметрыПечати);
КонецФункции
&НаСервере
Функция ПолучитьПараметрыДляПечатиОбразцаЭтикеткиТМЦВЭксплуатации()
ПараметрыПечати = Справочники.ШаблоныЭтикетокИЦенников.ПолучитьПараметрыДляПечатиОбразцаЭтикеткиТМЦВЭксплуатации(
Объект.ДляЧего, ТипКода, УникальныйИдентификатор);
Возврат ДополнитьПараметрыДляПечатиОбразца(ПараметрыПечати);
КонецФункции
&НаКлиенте
Процедура ПолеТабличногоДокументаПеретаскивание(Элемент,
ПараметрыПеретаскивания, СтандартнаяОбработка, Область)
СтандартнаяОбработка = Ложь;
ПодставитьПолеШаблона(Область, Элементы.ДоступныеПоляКомпоновкиДанных.ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Функция ПредставлениеЛинии(Линия)
Если Линия <> Неопределено Тогда
Результат = Строка(Линия.ТипЛинии) + ", "
+ Строка(?(Линия.Толщина = 0, 1, Линия.Толщина))
Иначе
Результат = "";
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьТаблицуСвойств()
ВыделеннаяОбласть = ПолеТабличногоДокумента.ТекущаяОбласть;
СвойстваЯчеек.Очистить();
Если ТипЗнч(ВыделеннаяОбласть) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Разделитель";
НоваяСтрока.Представление = НСтр("ru = 'Оформление'");
НоваяСтрока.Значение = НСтр("ru = 'Разделитель'");
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Шрифт";
НоваяСтрока.Представление = НСтр("ru = 'Шрифт'");
НоваяСтрока.Значение = ВыделеннаяОбласть.Шрифт;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "ЦветФона";
НоваяСтрока.Представление = НСтр("ru = 'Цвет фона'");
НоваяСтрока.Значение = ВыделеннаяОбласть.ЦветФона;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "ЦветТекста";
НоваяСтрока.Представление = НСтр("ru = 'Цвет текста'");
НоваяСтрока.Значение = ВыделеннаяОбласть.ЦветТекста;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "ОриентацияТекста";
НоваяСтрока.Представление = НСтр("ru = 'Ориентация текста'");
НоваяСтрока.Значение = ВыделеннаяОбласть.ОриентацияТекста;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Разделитель";
НоваяСтрока.Представление = НСтр("ru = 'Границы'");
НоваяСтрока.Значение = НСтр("ru = 'Разделитель'");
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "ГраницаСлева";
НоваяСтрока.Представление = НСтр("ru = 'Граница слева'");
НоваяСтрока.Значение = ПредставлениеЛинии(ВыделеннаяОбласть.ГраницаСлева);
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "ГраницаСверху";
НоваяСтрока.Представление = НСтр("ru = 'Граница сверху'");
НоваяСтрока.Значение = ПредставлениеЛинии(ВыделеннаяОбласть.ГраницаСверху);
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "ГраницаСправа";
НоваяСтрока.Представление = НСтр("ru = 'Граница справа'");
НоваяСтрока.Значение = ПредставлениеЛинии(ВыделеннаяОбласть.ГраницаСправа);
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "ГраницаСнизу";
НоваяСтрока.Представление = НСтр("ru = 'Граница снизу'");
НоваяСтрока.Значение = ПредставлениеЛинии(ВыделеннаяОбласть.ГраницаСнизу);
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Разделитель";
НоваяСтрока.Представление = НСтр("ru = 'Заполнение'");
НоваяСтрока.Значение = НСтр("ru = 'Разделитель'");
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Заполнение";
НоваяСтрока.Представление = НСтр("ru = 'Заполнение'");
НоваяСтрока.Значение = ВыделеннаяОбласть.Заполнение;
Если ВыделеннаяОбласть.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр Тогда
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Параметр";
НоваяСтрока.Представление = НСтр("ru = 'Параметр'");
НоваяСтрока.Значение = ВыделеннаяОбласть.Параметр;
Если НоваяСтрока.Значение = Неопределено Тогда
НоваяСтрока.Значение = "";
КонецЕсли;
Иначе
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Текст";
НоваяСтрока.Представление = НСтр("ru = 'Текст'");
НоваяСтрока.Значение = ВыделеннаяОбласть.Текст;
КонецЕсли;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Формат";
НоваяСтрока.Представление = НСтр("ru = 'Формат'");
НоваяСтрока.Значение = ВыделеннаяОбласть.Формат;
НоваяСтрока.ТолькоПросмотр = (ВыделеннаяОбласть.Заполнение <> ТипЗаполненияОбластиТабличногоДокумента.Параметр);
ИначеЕсли ТипЗнч(ВыделеннаяОбласть) = Тип("РисунокТабличногоДокумента") Тогда
Если ВыделеннаяОбласть.ТипРисунка = ТипРисункаТабличногоДокумента.Текст
ИЛИ ВыделеннаяОбласть.ТипРисунка = ТипРисункаТабличногоДокумента.Примечание Тогда
Возврат;
КонецЕсли;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Разделитель";
НоваяСтрока.Представление = НСтр("ru = 'Параметры штрихкода'");
НоваяСтрока.Значение = НСтр("ru = 'Разделитель'");
Если СтрНайти(ВыделеннаяОбласть.Имя, "Штрихкод") > 0 Тогда
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "ТипКода";
НоваяСтрока.Представление = НСтр("ru = 'Тип штрихкода'");
ЭлементСписка = СписокТипКода.НайтиПоЗначению(ТипШтрихкода);
НоваяСтрока.Значение = ЭлементСписка.Представление;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "ОтображатьТекст";
НоваяСтрока.Представление = НСтр("ru = 'Отображать текст'");
НоваяСтрока.Значение = ОтображатьТекст;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "РазмерШрифта";
НоваяСтрока.Представление = НСтр("ru = 'Размер шрифта'");
НоваяСтрока.Значение = РазмерШрифта;
НоваяСтрока.ТолькоПросмотр = Не ОтображатьТекст;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "МонохромныйШрифт";
НоваяСтрока.Представление = НСтр("ru = 'Тип шрифта'");
НоваяСтрока.ТолькоПросмотр = Не ОтображатьТекст;
ЭлементСписка = СписокМонохромныйШрифт.НайтиПоЗначению(МонохромныйШрифт);
НоваяСтрока.Значение = ЭлементСписка.Представление;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "УровеньЧеткости";
НоваяСтрока.Представление = НСтр("ru = 'Уровень четкости'");
ЭлементСписка = СписокУровеньЧеткости.НайтиПоЗначению(УровеньЧеткости);
НоваяСтрока.Значение = ЭлементСписка.Представление;
Если ТипКода = 17 Тогда
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "GS1DatabarКоличествоСтрок";
НоваяСтрока.Представление = НСтр("ru = 'Количество строк'");
ЭлементСписка = СписокGS1DatabarКоличествоСтрок.НайтиПоЗначению(GS1DatabarКоличествоСтрок);
НоваяСтрока.Значение = ЭлементСписка.Представление;
КонецЕсли;
Если ТипКода = 17 Или ТипКода = 6 Или ТипКода = 18 Или ТипКода = 24 Тогда
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "ВертикальноеВыравнивание";
НоваяСтрока.Представление = НСтр("ru = 'Вертикальное выравнивание'");
ЭлементСписка = СписокВертикальноеВыравнивание.НайтиПоЗначению(ВертикальноеВыравнивание);
НоваяСтрока.Значение = ЭлементСписка.Представление;
КонецЕсли;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "УголПоворота";
НоваяСтрока.Представление = НСтр("ru = 'Угол поворота'");
ЭлементСписка = СписокУголПоворота.НайтиПоЗначению(УголПоворота);
НоваяСтрока.Значение = ЭлементСписка.Представление;
Если Не Масштабировать Тогда
ВариантМасштабирования = "РеальныйРазмер";
ИначеЕсли Масштабировать И СохранятьПропорции Тогда
ВариантМасштабирования = "МасштабироватьСохранятьПропорции";
Иначе
ВариантМасштабирования = "МасштабироватьНеСохранятьПропорции";
КонецЕсли;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "ВариантМасштабирования";
НоваяСтрока.Представление = НСтр("ru = 'Масштабирование'");
ЭлементСписка = СписокВариантМасштабирования.НайтиПоЗначению(ВариантМасштабирования);
НоваяСтрока.Значение = ЭлементСписка.Представление;
КонецЕсли;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Имя";
НоваяСтрока.Представление = НСтр("ru = 'Имя'");
НоваяСтрока.Значение = ВыделеннаяОбласть.Имя;
#Если НЕ ВебКлиент Тогда
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Высота";
НоваяСтрока.Представление = НСтр("ru = 'Высота'");
НоваяСтрока.Значение = ВыделеннаяОбласть.Высота;
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Ширина";
НоваяСтрока.Представление = НСтр("ru = 'Ширина'");
НоваяСтрока.Значение = ВыделеннаяОбласть.Ширина;
#КонецЕсли
НоваяСтрока = СвойстваЯчеек.Добавить();
НоваяСтрока.ИмяСвойства = "Линия";
НоваяСтрока.Представление = НСтр("ru = 'Линия'");
НоваяСтрока.Значение = ПредставлениеЛинии(ВыделеннаяОбласть.Линия);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолеТабличногоДокументаПриАктивизацииОбласти(Элемент)
ПодключитьОбработчикОжидания("ЗаполнитьТаблицуСвойств", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура НастроитьЛинию(ВыделеннаяОбласть, ТекущиеДанные)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ТипЛинии", ВыделеннаяОбласть[ТекущиеДанные.ИмяСвойства].ТипЛинии);
ПараметрыФормы.Вставить("Толщина", ВыделеннаяОбласть[ТекущиеДанные.ИмяСвойства].Толщина);
ДопПараметры = Новый Структура("ВыделеннаяОбласть, ТекущиеДанные", ВыделеннаяОбласть, ТекущиеДанные);
ОписаниеОповещения = Новый ОписаниеОповещения("НастроитьЛиниюЗавершение", ЭтотОбъект, ДопПараметры);
ОткрытьФорму("Справочник.ШаблоныЭтикетокИЦенников.Форма.ФормаВыбораТипаЛинии", ПараметрыФормы, , , , , ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура НастроитьЛиниюЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыделеннаяОбласть = ДополнительныеПараметры.ВыделеннаяОбласть;
ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные;
Если Результат <> Неопределено Тогда
ВыделеннаяОбласть[ТекущиеДанные.ИмяСвойства] = Новый Линия(Результат.ТипЛинии, Результат.Толщина);
ЗаполнитьТаблицуСвойств();
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ТекущийРазмерСтраницы(Форма)
ТекущийРазмер = "ПолеСверху:" + Форма.ПолеТабличногоДокумента.ПолеСверху
+ "ПолеСнизу:" + Форма.ПолеТабличногоДокумента.ПолеСнизу + "ПолеСлева:"
+ Форма.ПолеТабличногоДокумента.ПолеСлева + "ПолеСправа:"
+ Форма.ПолеТабличногоДокумента.ПолеСправа + "Размер:"
+ РазмерСтраницы(Форма.ПолеТабличногоДокумента);
Возврат ТекущийРазмер;
КонецФункции
&НаКлиенте
Процедура ОбновитьРазмещение()
ТекущийРазмер = ТекущийРазмерСтраницы(ЭтаФорма);
Если ТекущийРазмер <> РазмерСтраницы Тогда
РазмерСтраницы = ТекущийРазмер;
РассчитатьМаксимальноеКоличествоНаСтранице();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодставитьПолеШаблона(Область, ВыбраннаяСтрока)
Если ТипЗнч(Область) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
ТекстСообщения = НСтр("ru = 'Для переноса поля шаблона нужно выделить ячейку или область ячеек'");
ПоказатьПредупреждение(Неопределено, ТекстСообщения);
Возврат;
Иначе
ТекущаяОбласть = Область;
ОбъединитьОбласть(ТекущаяОбласть.Имя);
КонецЕсли;
ТекущиеДанные = ДоступныеПоляКомпоновкиДанных.НайтиПоИдентификатору(ВыбраннаяСтрока);
ИмяПоляВШаблоне = ТекущиеДанные.ПолныйИдентификаторСтроки;
Если ИмяПоляВШаблоне = ИмяПараметраШтрихкод()
ИЛИ ИмяПоляВШаблоне = ИмяПараметраКодАкцизнойМарки() Тогда
ТекстВопроса = НСтр("ru = 'Добавить штрихкод, как картинку?'");
ДополнительныеДанные = Новый Структура("ИмяПоляВШаблоне, ТекущаяОбласть", ИмяПоляВШаблоне, ТекущаяОбласть);
ОписаниеОповещения = Новый ОписаниеОповещения("ПодставитьПолеШаблонаЗавершение", ЭтотОбъект, ДополнительныеДанные);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
ИначеЕсли ИмяПоляВШаблоне = ИмяПараметраВалютаЦены() Тогда
Кнопки = Новый СписокЗначений;
Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Знак валюты'"));
Кнопки.Добавить(КодВозвратаДиалога.Нет, НСтр("ru = 'Текст'"));
ТекстВопроса = НСтр("ru = 'Добавить валюту как...'");
ДополнительныеПараметры = Новый Структура("ИмяПоляВШаблоне, ТекущаяОбласть", ИмяПоляВШаблоне, ТекущаяОбласть);
ОписаниеОповещения = Новый ОписаниеОповещения("ПодставитьПолеШаблонаЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки);
Иначе
ТекущаяОбласть.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Шаблон;
ТекущаяОбласть.Текст = ТекущаяОбласть.Текст + "[" + ИмяПоляВШаблоне + "]";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодставитьПолеШаблонаЗавершение(РезультатВопроса,
ДополнительныеПараметры) Экспорт
ИмяПоляВШаблоне = ДополнительныеПараметры.ИмяПоляВШаблоне;
ТекущаяОбласть = ДополнительныеПараметры.ТекущаяОбласть;
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Да Тогда
Если ИмяПоляВШаблоне = ИмяПараметраШтрихкод()
ИЛИ ИмяПоляВШаблоне = ИмяПараметраКодАкцизнойМарки() Тогда
ВставитьРисунокШтрихкода(ТекущаяОбласть.Имя);
ИначеЕсли ИмяПоляВШаблоне = ИмяПараметраВалютаЦены() Тогда
ВставитьРисунокЗнакВалюты(ТекущаяОбласть.Имя);
КонецЕсли;
Иначе
ТекущаяОбласть.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Шаблон;
ТекущаяОбласть.Текст = ТекущаяОбласть.Текст + "[" + ИмяПоляВШаблоне + "]";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыборДоступногоПоля(ВыбраннаяСтрока)
ПодставитьПолеШаблона(ПолеТабличногоДокумента.ТекущаяОбласть, ВыбраннаяСтрока);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура НазначитьШаблонЭтикеткиУпаковочногоЛистаОсновным(Шаблон)
Константы.ШаблонЭтикеткиУпаковочногоЛиста.Установить(Шаблон);
КонецПроцедуры
#КонецОбласти
#КонецОбласти