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