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