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