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