#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(Параметры.ТекстОшибкиКонтроляКодовМаркировки) Тогда
Заголовок = НСтр("ru = 'Контроль кодов маркировок'");
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаКонтрольКодовМаркировки;
Элементы.ТекстОшибкиКонтроляКодовМаркировки.Заголовок = Параметры.ТекстОшибкиКонтроляКодовМаркировки;
Иначе
Заголовок = НСтр("ru = 'Сканирование кода маркировки'");
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСканированиеКодаМаркировки;
КонецЕсли;
Номенклатура = Параметры.Номенклатура;
Характеристика = Параметры.Характеристика;
ДанныеШтрихкода = Параметры.ДанныеШтрихкода;
ПараметрыСканирования = ОбщегоНазначения.СкопироватьРекурсивно(Параметры.ПараметрыСканирования, Ложь);
Документ = Параметры.Документ;
Серия = Параметры.Серия;
ВидМаркируемойПродукции = Параметры.ВидПродукции;
СерииИспользуются = ОбщегоНазначенияИС.СерииИспользуются();
Если Не ЗначениеЗаполнено(Документ) Тогда
Документ = ПараметрыСканирования.СсылкаНаОбъект;
КонецЕсли;
ЭтоКонтекстОптовогоДокумента = ОбщегоНазначенияИСМПКлиентСерверПовтИсп.ЭтоВидОперацииОптоваяПродажа(ПараметрыСканирования.ВидОперацииИСМП)
Или ОбщегоНазначенияИСМПКлиентСерверПовтИсп.ЭтоВидОперацииЗакупка(ПараметрыСканирования.ВидОперацииИСМП);
ЭтоКонтекстРозничногоДокумента = ОбщегоНазначенияИСМПКлиентСерверПовтИсп.ЭтоВидОперацииРозничнаяПродажа(ПараметрыСканирования.ВидОперацииИСМП);
ПоддерживаетсяОбъемноСортовойУчет = ПроверкаИПодборПродукцииИСМПКлиентСервер.ПоддерживаетсяОбъемноСортовойУчет(
ПараметрыСканирования, ВидМаркируемойПродукции)
И ПараметрыСканирования.ИспользуетсяСоответствиеШтрихкодовСтрокДерева;
ДобавлятьБезКодаМаркировки = Ложь;
Если ПоддерживаетсяОбъемноСортовойУчет Тогда
ДобавлятьБезКодаМаркировки = Истина;
ИначеЕсли Не ПараметрыСканирования.ТолькоМаркируемаяПродукция
И Параметры.РазрешатьДобавлениеБезКодаМарки Тогда
Если ОбщегоНазначенияИСМППовтИсп.РазрешенОборотНемаркируемыхОстатковПродукции(ВидМаркируемойПродукции) Тогда
ДобавлятьБезКодаМаркировки = Истина;
Иначе
Если ЭтоКонтекстРозничногоДокумента
И Не ОбщегоНазначенияИСМППовтИсп.ДействуетУведомительныйРежимПоВидуПродукции(ВидМаркируемойПродукции) Тогда
ДобавлятьБезКодаМаркировки = Истина;
ИначеЕсли ЭтоКонтекстОптовогоДокумента
И Не ОбщегоНазначенияИСМППовтИсп.ДействуетКонтрольПриПродажеОптомПоОСУ(ВидМаркируемойПродукции)
И Не ОбщегоНазначенияИСМППовтИсп.ДействуетКонтрольПриПродажеОптомПоштучно(ВидМаркируемойПродукции) Тогда
ДобавлятьБезКодаМаркировки = Истина;
Иначе
ДобавлятьБезКодаМаркировки = Ложь;
КонецЕсли;
КонецЕсли;
Иначе
ДобавлятьБезКодаМаркировки = Ложь;
КонецЕсли;
УстановитьВидимостьЭтементовДобавитьБезКодаМаркировки(ЭтотОбъект, ДобавлятьБезКодаМаркировки);
Элементы.РаспечататьНовыйКодМаркировки.Видимость = ПараметрыСканирования.ДоступнаПечатьЭтикеток;
Если ТипЗнч(ПараметрыСканирования.ДопустимыйСпособВводаВОборот) = Тип("Массив") Тогда
ДопустимыйСпособВводаВОборот.ЗагрузитьЗначения(ПараметрыСканирования.ДопустимыйСпособВводаВОборот);
ИначеЕсли ЗначениеЗаполнено(ПараметрыСканирования.ДопустимыйСпособВводаВОборот)
И ДопустимыйСпособВводаВОборот.НайтиПоЗначению(ПараметрыСканирования.ДопустимыйСпособВводаВОборот) = Неопределено Тогда
ДопустимыйСпособВводаВОборот.Добавить(ПараметрыСканирования.ДопустимыйСпособВводаВОборот);
КонецЕсли;
Организация = ПараметрыСканирования.Организация;
ИнтеграцияИСМПКлиентСервер.УстановитьКартинкуСканированияКодаПоВидуПродукции(Элементы.ДекорацияКартинка, ВидМаркируемойПродукции);
ШтрихкодированиеИСПереопределяемый.ПриОпределенииСочетанияКлавишДобавитьБезМаркировкиВФормеСканирования(
Команды.ДобавитьБезКодаМаркировки.СочетаниеКлавиш);
НазначитьЗаголовокКомандыДобавитьБезМаркировкиСервер();
СтандартныеПодсистемыСервер.СброситьРазмерыИПоложениеОкна(ЭтотОбъект);
Если ЭтоАдресВременногоХранилища(ПараметрыСканирования.КэшМаркируемойПродукции) Тогда
ДанныеКэша = ПолучитьИзВременногоХранилища(ПараметрыСканирования.КэшМаркируемойПродукции);
КэшМаркируемойПродукции = ПоместитьВоВременноеХранилище(ДанныеКэша, УникальныйИдентификатор);
КонецЕсли;
ПоддерживаемыеТипыПодключаемогоОборудования = "СканерШтрихкода";
ОбщегоНазначенияИС.НастроитьПодключаемоеОборудование(ЭтотОбъект, ПоддерживаемыеТипыПодключаемогоОборудования);
ОбщегоНазначенияСобытияФормИСПереопределяемый.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтотОбъект, ПоддерживаемыеТипыПодключаемогоОборудования);
СобытияФормИСМПКлиент.ОпределитьИспользованиеХарактеристик(
ЭтотОбъект,
ЭтотОбъект,
"Номенклатура", "ХарактеристикиИспользуются");
ОбновитьПредставленияНоменклатуры();
Если Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСканированиеКодаМаркировки Тогда
ЭтотОбъект.ТекущийЭлемент = Элементы.СтраницаСканированиеКодаМаркировки;
КонецЕсли;
Если Не ЗначениеЗаполнено(Документ)
И ВладелецФормы <> Неопределено
И ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ВладелецФормы, "Объект")
И ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ВладелецФормы.Объект, "Ссылка") Тогда
Документ = ВладелецФормы.Объект.Ссылка;
КонецЕсли;
Если ВладелецФормы <> Неопределено
И (ВладелецФормы.ИмяФормы = "Обработка.ПроверкаИПодборПродукцииИСМП.Форма.ПроверкаИПодбор"
Или ВладелецФормы.ИмяФормы = "Обработка.ПроверкаИПодборТабачнойПродукцииМОТП.Форма.ПроверкаИПодбор") Тогда
УстановитьВидимостьЭтементовДобавитьБезКодаМаркировки(ЭтотОбъект, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаКонтрольКодовМаркировки Тогда
Возврат;
КонецЕсли;
ОбщегоНазначенияСобытияФормИСКлиентПереопределяемый.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаКонтрольКодовМаркировки
Или Не ВводДоступен() Тогда
Возврат;
КонецЕсли;
ПараметрыСканированияЛокальные = ПараметрыСканирования();
ДанныеПроверки = ШтрихкодированиеИСМПКлиент.ДанныеПроверкиПередОбработкойШтрихкода(
ВидМаркируемойПродукции, Данные, ПараметрыСканированияЛокальные);
Если ДанныеПроверки.ЕстьОшибки Тогда
ВывестиСообщениеНаСтраницеВводаКодаМаркировки(ДанныеПроверки.ТекстОшибки);
Возврат;
КонецЕсли;
ШтрихкодированиеОбщегоНазначенияИСКлиент.ВнешнееСобытиеПолученыШтрихкоды(
"ПоискПоШтрихкодуЗавершение", ЭтотОбъект, Источник, Событие, Данные, ПараметрыСканированияЛокальные);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ВвестиКодМаркировки(Команда)
ОчиститьСообщения();
ШтрихкодированиеОбщегоНазначенияИСКлиент.ПоказатьВводШтрихкода(
Новый ОписаниеОповещения("РучнойВводШтрихкодаЗавершение", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьБезМаркировки(Команда)
ОбработатьБезВводаМарки = Истина;
Комментарий = Нстр("ru='Отказ ввода кода маркировки по инициативе пользователя'");
ДобавитьСообщениеДляЖурналаРегистрацииОНевозможностиВводаКодаМарки(Комментарий);
ДанныеШтрихкодаБезМаркировки = ДанныеШтрихкода;
ДанныеШтрихкодаБезМаркировки.КоличествоПотребительскихУпаковок = 1;
ДанныеШтрихкодаБезМаркировки.ТипУпаковки = ПредопределенноеЗначение("Перечисление.ТипыУпаковок.МаркированныйТовар");
ДанныеШтрихкодаБезМаркировки.ОбработатьБезМаркировки = Истина;
ПоискПоШтрихкодуЗавершение(ДанныеШтрихкодаБезМаркировки, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура Отмена(Команда)
ОбработатьБезВводаМарки = Ложь;
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура РаспечататьНовыйКодМаркировки(Команда)
Если Не ПроверитьЗаполнение() Тогда
Возврат;
КонецЕсли;
СоздатьНовыйКодМаркировкиИВывестиНаПечать();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Функция ПараметрыСканирования()
Если ПараметрыСканирования = Неопределено Тогда
ПараметрыСканирования = ШтрихкодированиеОбщегоНазначенияИСКлиент.ПараметрыСканирования(ВладелецФормы);
КонецЕсли;
ПараметрыСканированияЛокальные = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ПараметрыСканирования, Ложь);
ПараметрыСканированияЛокальные.РазрешеноЗапрашиватьКодМаркировки = Ложь;
Если ЭтоАдресВременногоХранилища(КэшМаркируемойПродукции) Тогда
ДанныеКэша = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ПолучитьИзВременногоХранилища(КэшМаркируемойПродукции));
ПараметрыСканированияЛокальные.КэшМаркируемойПродукции = ПоместитьВоВременноеХранилище(ДанныеКэша, УникальныйИдентификатор);
КонецЕсли;
ПараметрыСканированияЛокальные.ВыводитьСообщенияОбОшибках = Ложь;
ПараметрыСканированияЛокальные.ИспользуетсяСоответствиеШтрихкодовСтрокДерева = Ложь;
ПараметрыСканированияЛокальные.ВозможнаЗагрузкаТСД = Ложь;
ДопустимыеВидыПродукции = Новый Массив;
ДопустимыеВидыПродукции.Добавить(ВидМаркируемойПродукции);
ПараметрыСканированияЛокальные.ДопустимыеВидыПродукции = ДопустимыеВидыПродукции;
Если Не ПараметрыСканированияЛокальные.Свойство("ДанныеУточнения") Тогда
ДанныеУточнения = Новый Структура("Номенклатура, Характеристика", Номенклатура, Характеристика);
Если ЗначениеЗаполнено(Серия) Тогда
ДанныеУточнения.Вставить("Серия", Серия);
КонецЕсли;
ПараметрыСканированияЛокальные.ДополнительныеПараметры.Вставить("ДанныеУточнения", ДанныеУточнения);
КонецЕсли;
Возврат ПараметрыСканированияЛокальные;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ВидПродукцииИС(Форма)
Возврат Форма.ВидМаркируемойПродукции;
КонецФункции
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(РезультатВыбораДанныеШтрихкода, ДополнительныеПараметры) Экспорт
Если РезультатВыбораДанныеШтрихкода = Неопределено Тогда
Возврат;
КонецЕсли;
ТекстСообщения = ШтрихкодированиеОбщегоНазначенияИСКлиент.ПроверитьНаНаличиеОшибокУточнения(
ПараметрыСканирования,
РезультатВыбораДанныеШтрихкода,
ДанныеШтрихкода);
Если ЗначениеЗаполнено(ТекстСообщения) Тогда
ВывестиСообщениеНаСтраницеВводаКодаМаркировки(ТекстСообщения);
ИначеЕсли РезультатВыбораДанныеШтрихкода.ВидУпаковки = ПредопределенноеЗначение("Перечисление.ВидыУпаковокИС.Потребительская")
Или РезультатВыбораДанныеШтрихкода.ВидУпаковки = ПредопределенноеЗначение("Перечисление.ВидыУпаковокИС.Групповая")
Или РезультатВыбораДанныеШтрихкода.ВидУпаковки = ПредопределенноеЗначение("Перечисление.ВидыУпаковокИС.Набор")
Или ОбработатьБезВводаМарки Тогда
ОбработатьШтрихкодКодаМаркировки(РезультатВыбораДанныеШтрихкода, ДополнительныеПараметры);
Иначе
ВывестиСообщениеНаСтраницеВводаКодаМаркировки(
НСтр("ru = 'Штрихкод не соответствует формату кода маркировки табачной продукции'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьШтрихкодКодаМаркировки(РезультатВыбораДанныеШтрихкода, ДополнительныеПараметры)
Если ПараметрыСканирования.ДополнительныеПараметры.Свойство("ДанныеУточнения") Тогда
Если ПараметрыСканирования.ДополнительныеПараметры.ДанныеУточнения.Свойство("ШаблонЭтикетки") Тогда
РезультатВыбораДанныеШтрихкода.ТребуетсяВыборСерии = Ложь;
КонецЕсли;
Если ПараметрыСканирования.ДополнительныеПараметры.Свойство("ЗапомнитьВыбор") Тогда
РезультатВыбораДанныеШтрихкода.ДополнительныеПараметры = Новый Структура("ДанныеВыбора,ЗапомнитьВыбор",
ПараметрыСканирования.ДополнительныеПараметры.ДанныеУточнения,
ПараметрыСканирования.ДополнительныеПараметры.ЗапомнитьВыбор);
КонецЕсли;
КонецЕсли;
АдресРезультатаОбработкиШтрихкода = ПоместитьВоВременноеХранилище(РезультатВыбораДанныеШтрихкода, УникальныйИдентификатор);
Если Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСканированиеКодаМаркировки Тогда
ПодключитьОбработчикОжидания("ЗакрытьФормуПриСканировании", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьФормуПриСканировании()
Результат = ПолучитьИзВременногоХранилища(АдресРезультатаОбработкиШтрихкода);
Закрыть(Результат);
КонецПроцедуры
&НаКлиенте
Процедура РучнойВводШтрихкодаЗавершение(РезультатВыбораДанныеШтрихкода, ДополнительныеПараметры) Экспорт
ПараметрыСканированияЛокальные = ПараметрыСканирования();
Штрихкод = "";
Если РезультатВыбораДанныеШтрихкода.Свойство("ФорматBase64")
И РезультатВыбораДанныеШтрихкода.ФорматBase64 Тогда
Штрихкод = ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.Base64ВШтрихкод(РезультатВыбораДанныеШтрихкода.Штрихкод);
Иначе
Штрихкод = РезультатВыбораДанныеШтрихкода.Штрихкод;
КонецЕсли;
ДанныеПроверки = ШтрихкодированиеИСМПКлиент.ДанныеПроверкиПередОбработкойШтрихкода(
ВидМаркируемойПродукции, Штрихкод, ПараметрыСканированияЛокальные, ДополнительныеПараметры);
Если ДанныеПроверки.ЕстьОшибки Тогда
ВывестиСообщениеНаСтраницеВводаКодаМаркировки(ДанныеПроверки.ТекстОшибки);
Возврат;
КонецЕсли;
ПараметрыСканирования.ДополнительныеПараметры = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ПараметрыСканированияЛокальные.ДополнительныеПараметры);
ШтрихкодированиеОбщегоНазначенияИСКлиент.ОбработатьДанныеШтрихкода(
"ПоискПоШтрихкодуЗавершение", ЭтотОбъект, РезультатВыбораДанныеШтрихкода, ПараметрыСканированияЛокальные);
КонецПроцедуры
&НаСервере
Процедура ВывестиСообщениеНаСтраницеВводаКодаМаркировки(ТекстСообщения)
ИмяЭлемента = "ИнформацияВводаКодаМаркировки";
ДобавитьЭлементДекорацияНаФорму();
Элементы[ИмяЭлемента].Заголовок = ТекстСообщения;
КонецПроцедуры
&НаСервере
Процедура ДобавитьЭлементДекорацияНаФорму()
ИмяЭлемента = "ИнформацияВводаКодаМаркировки";
Если Элементы.Найти(ИмяЭлемента) = Неопределено Тогда
Элементы.Добавить(ИмяЭлемента, Тип("ДекорацияФормы"), Элементы.ГруппаИнформация);
Элементы[ИмяЭлемента].ЦветТекста = ЦветаСтиля.СтатусОбработкиОшибкаПередачиГосИС;
КонецЕсли;
КонецПроцедуры
#Область Печать
&НаКлиенте
Процедура РаспечататьНовыйКодЗавершение(ДанныеОтветаРезервированияИПечати, ДополнительныеПараметры) Экспорт
Если ДанныеОтветаРезервированияИПечати = Неопределено Тогда
Возврат;
КонецЕсли;
Если ДанныеОтветаРезервированияИПечати.РезультатРезервирования.Количество() Тогда
СтрокаРезультата = ДанныеОтветаРезервированияИПечати.РезультатРезервирования.Получить(0);
СтруктураДополнительныхПараметров = Новый Структура();
СтруктураДополнительныхПараметров.Вставить("ОтключитьЗапросДанныхСервиса", Истина);
СтруктураДополнительныхПараметров.Вставить("СохраняемыеНастройки", ДанныеОтветаРезервированияИПечати.СохраняемыеНастройки);
СтруктураДополнительныхПараметров.Вставить("ЭтоПечатьКодаМаркировкиИзПула", Истина);
ДанныеШтрихкода = Новый Структура(
"Штрихкод, Количество",
ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.Base64ВШтрихкод(СтрокаРезультата.ПолныйКодМаркировки), 1);
РучнойВводШтрихкодаЗавершение(ДанныеШтрихкода, СтруктураДополнительныхПараметров);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОбновитьПредставленияНоменклатуры()
ПараметрыПредставленияНоменклатуры = ОбщегоНазначенияИСКлиентСервер.ПараметрыПредставленияНоменклатуры();
ПараметрыПредставленияНоменклатуры.Номенклатура = Номенклатура;
ПараметрыПредставленияНоменклатуры.Характеристика = Характеристика;
ПараметрыПредставленияНоменклатуры.ХарактеристикиИспользуются = ХарактеристикиИспользуются;
ПараметрыПредставленияНоменклатуры.Серия = Серия;
ПараметрыПредставленияНоменклатуры.СерииИспользуются = СерииИспользуются И ЗначениеЗаполнено(Серия);
ПараметрыПредставленияНоменклатуры.ТолькоПросмотр = Истина;
Представление = ОбщегоНазначенияИСКлиентСервер.ПредставлениеНоменклатурыФорматированнойСтрокой(ПараметрыПредставленияНоменклатуры);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьСообщениеДляЖурналаРегистрацииОНевозможностиВводаКодаМарки(Комментарий, КодМаркировки="")
СтруктураСообщения = Новый Структура;
СтруктураСообщения.Вставить("ИмяСобытия", НСтр("ru='Отказ от сканирования кода маркировки'"));
СтруктураСообщения.Вставить("Уровень", "Информация");
СтруктураСообщения.Вставить("Комментарий", Комментарий);
СтруктураСообщения.Вставить("Данные", Неопределено);
СтруктураСообщения.Вставить("СсылкаНаОбъект", Неопределено);
СтруктураСообщения.Вставить("КодМаркировки", КодМаркировки);
ШтрихкодированиеИСКлиентПереопределяемый.ПриОпределенииИнформацииОбОтказеВводаКодаМаркиДляЖурналаРегистрации(
ВладелецФормы, СтруктураСообщения);
ДобавитьСообщениеДляЖурналаРегистрации(СтруктураСообщения);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ДобавитьСообщениеДляЖурналаРегистрации(СтруктураСообщения)
Если СтруктураСообщения.СсылкаНаОбъект <> Неопределено Тогда
МетаданныеОбъекта = СтруктураСообщения.СсылкаНаОбъект.Метаданные();
КонецЕсли;
УровеньЖурнала = Неопределено;
Если СтруктураСообщения.Уровень = "Информация" Тогда
УровеньЖурнала = УровеньЖурналаРегистрации.Информация;
ИначеЕсли СтруктураСообщения.Уровень = "Ошибка" Тогда
УровеньЖурнала = УровеньЖурналаРегистрации.Ошибка;
ИначеЕсли СтруктураСообщения.Уровень = "Предупреждение" Тогда
УровеньЖурнала = УровеньЖурналаРегистрации.Предупреждение;
ИначеЕсли СтруктураСообщения.Уровень = "Примечание" Тогда
УровеньЖурнала = УровеньЖурналаРегистрации.Примечание;
КонецЕсли;
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(
СтруктураСообщения.ИмяСобытия, УровеньЖурнала, МетаданныеОбъекта, СтруктураСообщения.Данные, СтруктураСообщения.Комментарий);
КонецПроцедуры
&НаСервере
Процедура НазначитьЗаголовокКомандыДобавитьБезМаркировкиСервер()
Клавиши = ЭтотОбъект.Команды.ДобавитьБезКодаМаркировки.СочетаниеКлавиш;
ПредставлениеСочетанияКлавиш = "(";
Если Клавиши.Ctrl Тогда
ПредставлениеСочетанияКлавиш = ПредставлениеСочетанияКлавиш + "Ctrl+";
КонецЕсли;
Если Клавиши.Alt Тогда
ПредставлениеСочетанияКлавиш = ПредставлениеСочетанияКлавиш + "Alt+";
КонецЕсли;
Если Клавиши.Shift Тогда
ПредставлениеСочетанияКлавиш = ПредставлениеСочетанияКлавиш + "Shift+";
КонецЕсли;
ПредставлениеСочетанияКлавиш = ПредставлениеСочетанияКлавиш + Клавиши.Клавиша + ")";
Элементы.ДобавитьБезКодаМаркировки.Заголовок = Элементы.ДобавитьБезКодаМаркировки.Заголовок + " " + ПредставлениеСочетанияКлавиш;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьНовыйКодМаркировкиИВывестиНаПечать()
Если ВладелецФормы.СохраненВыборПоМаркируемойПродукции Тогда
Если Не ЗначениеЗаполнено(Номенклатура) Тогда
Номенклатура = ВладелецФормы.ДанныеВыбораПоМаркируемойПродукции.Номенклатура;
КонецЕсли;
Если Не ЗначениеЗаполнено(Характеристика) Тогда
Характеристика = ВладелецФормы.ДанныеВыбораПоМаркируемойПродукции.Характеристика;
КонецЕсли;
Если Не ЗначениеЗаполнено(Серия) Тогда
Серия = ВладелецФормы.ДанныеВыбораПоМаркируемойПродукции.Серия;
КонецЕсли;
КонецЕсли;
СтруктураПечатиЭтикетки = ПечатьЭтикетокИСМПКлиентСервер.СтруктураПечатиЭтикетки();
СтруктураПечатиЭтикетки.Организация = Организация;
СтруктураПечатиЭтикетки.ВидПродукции = ВидПродукцииИС(ЭтотОбъект);
СтруктураПечатиЭтикетки.Номенклатура = Номенклатура;
СтруктураПечатиЭтикетки.Характеристика = Характеристика;
СтруктураПечатиЭтикетки.Серия = Серия;
Если ДопустимыйСпособВводаВОборот.Количество() > 0 Тогда
СтруктураПечатиЭтикетки.СпособВводаВОборот = ДопустимыйСпособВводаВОборот.Получить(0).Значение;
КонецЕсли;
СтруктураПечатиЭтикетки.GTIN = ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.GTINПоШтрихкодуEAN(ДанныеШтрихкода.Штрихкод);
ОписаниеОповещенияРаспечататьНовыйКодЗавершение = Новый ОписаниеОповещения(
"РаспечататьНовыйКодЗавершение", ЭтотОбъект);
СтруктураПараметров = ПечатьЭтикетокИСМПКлиент.СтруктураПараметровПечатиНовогоКодаМаркировки(
СтруктураПечатиЭтикетки, ЭтотОбъект, ОписаниеОповещенияРаспечататьНовыйКодЗавершение);
Если ВладелецФормы.СохраненВыборПоМаркируемойПродукции Тогда
ДанныеВыбора = ВладелецФормы.ДанныеВыбораПоМаркируемойПродукции;
СтруктураПараметров.Шаблон = ДанныеВыбора.ШаблонМаркировки;
ЗаполнитьЗначенияСвойств(СтруктураПараметров, ДанныеВыбора);
КонецЕсли;
СтруктураПараметров.ПараметрыСканирования = ПараметрыСканирования;
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.ВидПродукции = ВидПродукцииИС(ЭтотОбъект);
СтруктураПараметров.Документ = Документ;
СтруктураПараметров.Номенклатура = Номенклатура;
СтруктураПараметров.Характеристика = Характеристика;
СтруктураПараметров.Серия = Серия;
СтруктураПараметров.GTIN = СтруктураПечатиЭтикетки.GTIN;
ПечатьЭтикетокИСМПКлиент.РаспечататьНовыйКодМаркировки(Истина, СтруктураПараметров);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьФормуУточненияДанных()
ОповещениеПриЗавершении = Новый ОписаниеОповещения("РучнойВводШтрихкодаЗавершение", ЭтотОбъект);
ШтрихкодированиеИСКлиент.Подключаемый_ОткрытьФормуУточненияДанных(ЭтотОбъект, ОповещениеПриЗавершении);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьЭтементовДобавитьБезКодаМаркировки(Форма, ЗначениеДоступности)
Форма.Элементы.ДобавитьБезКодаМаркировки.Видимость = ЗначениеДоступности;
Форма.Элементы.ДобавитьБезКодаМаркировки.Доступность = ЗначениеДоступности;
Форма.Элементы.ДекорацияПодсказка.Видимость = ЗначениеДоступности;
КонецПроцедуры
#КонецОбласти