Документооборот с контролирующими органами / Настройка ограничений обмена / Модуль формы

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем КонтекстЭДОКлиент;

#КонецОбласти

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Элементы.ДекорацияОписание.Заголовок = Параметры.Описание;
	ИзменилиСостав = Ложь;
	ЕстьДоступ = Пользователи.ЭтоПолноправныйПользователь();
	
	Если Параметры.АвтоматическийВызов Тогда
		Режим = ?(ЕстьДоступ, 1, 3);
	Иначе
		Режим = ?(ЕстьДоступ, 2, 4);
	КонецЕсли;	
	
	ЗаполнитьТаблицуВыбора();
	
	Элементов = ПодготовитьОформлениеФормы();
	КлючСохраненияПоложенияОкна = "Размер" + Элементов;
		
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	УправлениеФормой();
	ПодключитьОбработчикОжидания("ИзменитьРазмерыФормы", 0.2, Истина);

	ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытии_ПослеПолученияКонтекста", ЭтотОбъект);
	ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
	
	ПроверитьЗначениеИВидимостьНастройкиСЭДО(Ложь);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Изменить(Команда)
	
	СохранитьНастройкиОбменаСЭДО(ДобавитьОтдельнуюКнопкуОбменаДляСЭДО);
	
	Если ИзменитьСоставОграничений() Тогда
		Оповестить("Изменены пользователи учетной записи");
		ЗакрытьФорму(Истина);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Пропустить(Команда)
	
	ЗакрытьФорму(Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьВсе(Команда)
	
	УстановитьПометки(Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ИсключитьВсе(Команда)
	
	УстановитьПометки(Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура Отмена(Команда)
	
	Если Режим = 3 Тогда
		ЗакрытьФорму(Истина);
	Иначе	
		ЗакрытьФорму(Неопределено);
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаВыбора

&НаКлиенте
Процедура ТаблицаВыбораПометкаПриИзменении(Элемент)
	
	СтрокаТаблицы = Элементы.ТаблицаВыбора.ТекущиеДанные;
	Если СтрокаТаблицы = Неопределено Тогда
		Возврат;
	КонецЕсли;
		
	Если (СтрокаТаблицы.ЕстьУчетнаяЗапись И ЕстьДоступ) ИЛИ СтрокаТаблицы.НетОграничения Тогда
		СтрокаТаблицы.Пометка = ?(СтрокаТаблицы.Пометка = 2, 0, СтрокаТаблицы.Пометка);
	Иначе
		СтрокаТаблицы.Пометка = ?(СтрокаТаблицы.Пометка = 2, 0, СтрокаТаблицы.Пометка);
	КонецЕсли;
	
	ИзменилиСостав = Истина;
	УправлениеФормой();
	
КонецПроцедуры

&НаКлиенте
Процедура ТаблицаВыбораВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	ТекущаяСтрока = Элементы.ТаблицаВыбора.ТекущиеДанные;
	
	Если ТекущаяСтрока <> Неопределено И ЗначениеЗаполнено(ТекущаяСтрока.ТекстОграничений) И Поле.Имя = "ТаблицаВыбораТекстОграничений" Тогда
		ПараметрыФормы = Новый Структура();
		ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Ограничен состав гос. органов при обновлении'"));
		ПараметрыФормы.Вставить("ТекстВопроса", ТекстИнформации(ТекущаяСтрока.Ссылка));
		ПараметрыФормы.Вставить("КартинкиДиалога", "ДиалогВосклицание");
		
		СписокКоманд = Новый СписокЗначений;
		СписокКоманд.Добавить("Закрыть", "Закрыть");
		
		ПараметрыФормы.Вставить("СписокКоманд", СписокКоманд);
		
		РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
		
		КонтекстЭДОКлиент.ПолучитьФормуПодтверждения(ПараметрыФормы, Неопределено, РежимОткрытияОкна);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ТаблицаВыбораПриИзменении(Элемент)
	
	ПроверитьЗначениеИВидимостьНастройкиСЭДО(Истина);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ПриОткрытии_ПослеПолученияКонтекста(Результат, ДополнительныеПараметры) Экспорт
	
	КонтекстЭДОКлиент 	 = Результат.КонтекстЭДО;
	
КонецПроцедуры

&НаКлиенте
Функция УправлениеФормой()
	
	ВсегоВыбрано = ТаблицаВыбора.Количество() - ТаблицаВыбора.НайтиСтроки(Новый Структура("Пометка", 0)).Количество();
	Если ВсегоВыбрано = 1 Тогда
		ТекстИтогов = НСтр("ru = 'Выбрана %1 из %2 организаций'");
	Иначе
		ТекстИтогов = НСтр("ru = 'Выбрано %1 из %2 организаций'");
	КонецЕсли;
	
	ТекстИтогов = СтрШаблон(ТекстИтогов, ВсегоВыбрано, ТаблицаВыбора.Количество());
	
	Элементы.ДекорацияВсего.Заголовок = ТекстИтогов;
	
КонецФункции

&НаКлиенте
Процедура ИзменитьРазмерыФормы()
	
	ИмяЭлемента = "ДекорацияПредупреждение";
	Элементы[ИмяЭлемента].Видимость = НЕ Элементы[ИмяЭлемента].Видимость;
	Элементы[ИмяЭлемента].Видимость = НЕ Элементы[ИмяЭлемента].Видимость;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакрытьФорму(РезультатРаборы = Неопределено)
	
	Закрыть(РезультатРаборы);
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьПометки(ТекущееЗначение)
	
	Для Каждого СтрокаТаблицы Из ТаблицаВыбора Цикл
		Если СтрокаТаблицы.НетОграничения ИЛИ (СтрокаТаблицы.ЕстьУчетнаяЗапись И ЕстьДоступ) Тогда
			СтрокаТаблицы.Пометка = ?(ТекущееЗначение, 1, 0);
		Иначе
			СтрокаТаблицы.Пометка = ?(ТекущееЗначение, 1, 0);
		КонецЕсли;
	КонецЦикла;
	
	ИзменилиСостав = Истина;
	УправлениеФормой();
	
КонецПроцедуры

&НаСервере
Функция ТекстИнформации(ТекущаяСсылка)
	
	Результат = Символы.ПС
				+ НСтр("ru = 'Вы не являетесь пользователем учетной записи документооборота.
				|Обновление по данным гос. органам производится не будет:
				|%1'") + Символы.ПС + Символы.ПС
				+ НСтр("ru = 'Для назначения пользователем учетной записи обратитесь к администратору.
				|Добавление в список пользователей учетной записи производится в форме
				|1С-Отчетность, раздел ""Настройки"", ссылка ""Настройки обмена
				|с контролирующими органами"".'")
				+ Символы.ПС + Символы.ПС;
				
	Направления = Новый Массив;
	МодульОбмена = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	
	Если МодульОбмена.ОрганизацияИспользуетОбменСФНС(ТекущаяСсылка) Тогда
		Направления.Добавить("- ФНС");
	КонецЕсли;
	
	Если МодульОбмена.ОрганизацияИспользуетОбменСПФР(ТекущаяСсылка) Тогда
		Направления.Добавить("- ПФР");
	КонецЕсли;

	Если МодульОбмена.ОрганизацияИспользуетОбменСФСГС(ТекущаяСсылка) Тогда
		Направления.Добавить("- Росстат");
	КонецЕсли;

	Результат = СтрШаблон(Результат, СтрСоединить(Направления, Символы.ПС));
	Результат = СтроковыеФункции.ФорматированнаяСтрока(Результат);
	
	Возврат Результат;
	
КонецФункции

&НаСервере
Функция СформироватьРеестрОрганизаций()
	
	УстановитьПривилегированныйРежим(Истина);
	
	ТекстЗапроса =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Организации.Ссылка КАК Ссылка
	|ПОМЕСТИТЬ ВсеОрганизации
	|ИЗ
	|	Справочник.Организации КАК Организации
	|ГДЕ
	|	Организации.ПометкаУдаления = ЛОЖЬ
	|	И &УсловиеПоОрганизации
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Организации.Ссылка КАК Организация
	|ПОМЕСТИТЬ НаправлениеОтчетности
	|ИЗ
	|	Справочник.Организации КАК Организации
	|ГДЕ
	|	Организации.ПометкаУдаления = ЛОЖЬ
	|	И Организации.УчетнаяЗаписьОбмена <> ЗНАЧЕНИЕ(Справочник.УчетныеЗаписиДокументооборота.ПустаяСсылка)
	|	И Организации.ВидОбменаСКонтролирующимиОрганами = ЗНАЧЕНИЕ(Перечисление.ВидыОбменаСКонтролирующимиОрганами.ОбменВУниверсальномФормате)
	|";
	Если ОбщегоНазначенияБРО.ИспользуетсяАрхив() Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеПоОрганизации", "НЕ Организации.ВАрхиве");
	Иначе
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеПоОрганизации", "Истина");
	КонецЕсли;
	
	Если ДокументооборотСКОКлиентСервер.ПодсистемаУдалитьЦБСуществует() Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|ОБЪЕДИНИТЬ
		|
		|ВЫБРАТЬ
		|	УдалитьНастройкиОбменаБанкРоссии.Организация
		|ИЗ
		|	РегистрСведений.УдалитьНастройкиОбменаБанкРоссии КАК УдалитьНастройкиОбменаБанкРоссии
		|ГДЕ
		|	УдалитьНастройкиОбменаБанкРоссии.ИспользоватьОбмен
		|";
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.ЭлектронныйДокументооборотСКонтролирующимиОрганами.СдачаОтчетностиВМинобороны") Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|ОБЪЕДИНИТЬ
		|
		|ВЫБРАТЬ
		|	НастройкиОбменаМинобороны.Организация
		|ИЗ
		|	РегистрСведений.НастройкиОбменаМинобороны КАК НастройкиОбменаМинобороны
		|ГДЕ
		|	НастройкиОбменаМинобороны.ИспользоватьОбмен
		|";
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.ЭлектронныйДокументооборотСКонтролирующимиОрганами.СдачаОтчетностиВРПН") Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|ОБЪЕДИНИТЬ
		|
		|ВЫБРАТЬ
		|	НастройкиОбменаРПН.Организация
		|ИЗ
		|	РегистрСведений.НастройкиОбменаРПН КАК НастройкиОбменаРПН
		|ГДЕ
		|	НастройкиОбменаРПН.ИспользоватьОбмен
		|";
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.ЭлектронныйДокументооборотСКонтролирующимиОрганами.ПроверкаВРЭЦ") Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|ОБЪЕДИНИТЬ
		|
		|ВЫБРАТЬ
		|	НастройкиОбменаРЭЦ.Организация
		|ИЗ
		|	РегистрСведений.НастройкиОбменаРЭЦ КАК НастройкиОбменаРЭЦ
		|ГДЕ
		|	НастройкиОбменаРЭЦ.ИспользоватьОбмен
		|";
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.ЭлектронныйДокументооборотСКонтролирующимиОрганами.СдачаОтчетностиВФСРАР") Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|ОБЪЕДИНИТЬ
		|
		|ВЫБРАТЬ
		|	НастройкиОбменаФСРАР.Организация
		|ИЗ
		|	РегистрСведений.НастройкиОбменаФСРАР КАК НастройкиОбменаФСРАР
		|ГДЕ
		|	НастройкиОбменаФСРАР.ИспользоватьОбмен
		|";
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.ЭлектронныйДокументооборотСКонтролирующимиОрганами.СдачаОтчетностиВФСС") Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|ОБЪЕДИНИТЬ
		|
		|ВЫБРАТЬ
		|	НастройкиОбменаФСС.Организация
		|ИЗ
		|	РегистрСведений.НастройкиОбменаФСС КАК НастройкиОбменаФСС
		|ГДЕ
		|	НастройкиОбменаФСС.ИспользоватьОбмен
		|";
	КонецЕсли;

	Если ОбщегоНазначения.ПодсистемаСуществует("РегламентированнаяОтчетность.ЭлектронныйДокументооборотСКонтролирующимиОрганами.СдачаОтчетностиВФТС") Тогда
		ТекстЗапроса = ТекстЗапроса + "
		|ОБЪЕДИНИТЬ
		|
		|ВЫБРАТЬ
		|	НастройкиОбменаФТС.Организация
		|ИЗ
		|	РегистрСведений.НастройкиОбменаФТС КАК НастройкиОбменаФТС
		|ГДЕ
		|	НастройкиОбменаФТС.ИспользоватьОбмен
		|";
	КонецЕсли;
	
	ТекстЗапроса = ТекстЗапроса + "
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ВсеОрганизации.Ссылка КАК Организация,
	|	НЕ НаправлениеОтчетности.Организация ЕСТЬ NULL КАК ОтправкаОтчетности
	|ИЗ
	|	ВсеОрганизации КАК ВсеОрганизации
	|		ЛЕВОЕ СОЕДИНЕНИЕ НаправлениеОтчетности КАК НаправлениеОтчетности
	|		ПО ВсеОрганизации.Ссылка = НаправлениеОтчетности.Организация";
	
	Запрос = Новый Запрос(ТекстЗапроса);
	Результат = Запрос.Выполнить().Выгрузить();
	
	УстановитьПривилегированныйРежим(Ложь);
	
	Возврат Результат;
	
КонецФункции

&НаСервере
Процедура ЗаполнитьТаблицуВыбора()

	ПолныйРеестрОрганизаций = СформироватьРеестрОрганизаций();
	
	КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	Если КонтекстЭДОСервер <> Неопределено Тогда
		СписокВыбора = КонтекстЭДОСервер.ОрганизацииСОграничениемПрав(Истина);
		СписокВыбранных = КонтекстЭДОСервер.ВыбранныеОрганизацииДляОбмена();
	Иначе
		СписокВыбора = Новый Массив;
		СписокВыбранных = Новый Массив;
	КонецЕсли;
	
	Для Каждого СтрокаМассива Из СписокВыбора Цикл
		СтрокаПоиска = Новый Структура("Организация, ОтправкаОтчетности", СтрокаМассива.Ссылка, Истина);
		НашлиСтроки = ПолныйРеестрОрганизаций.НайтиСтроки(СтрокаПоиска);
		Если НашлиСтроки.Количество() = 0 Тогда
			Продолжить;
		КонецЕсли;
		НоваяСтрока = ТаблицаВыбора.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаМассива);
		НоваяСтрока.ЕстьУчетнаяЗапись = ЗначениеЗаполнено(НоваяСтрока.УчетнаяЗаписьОбмена);
		Если СписокВыбранных.Найти(НоваяСтрока.Ссылка) <> Неопределено Тогда
			НоваяСтрока.ВыборПользователя = Истина;
		КонецЕсли;
	КонецЦикла;
	
	Для Каждого СтрокаТаблицы Из ПолныйРеестрОрганизаций Цикл
		НашлиСтроки = ТаблицаВыбора.НайтиСтроки(Новый Структура("Ссылка", СтрокаТаблицы.Организация));
		Если НашлиСтроки.Количество() = 0 Тогда
			НоваяСтрока = ТаблицаВыбора.Добавить();
			НоваяСтрока.Ссылка = СтрокаТаблицы.Организация;
			НоваяСтрока.ВыборПользователя = СписокВыбранных.Найти(СтрокаТаблицы.Организация) <> Неопределено;
			Если СтрокаТаблицы.ОтправкаОтчетности Тогда
				НоваяСтрока.ТекстОграничений = НСтр("ru = 'Не подключено'");
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Для Каждого СтрокаТаблицы Из ТаблицаВыбора Цикл
		МестоХраненияКлюча = КриптографияЭДКОКлиентСервер.КонтекстМоделиХраненияКлюча(СтрокаТаблицы.УчетнаяЗаписьОбмена);
		ЛокальнаяПодпись = КриптографияЭДКОКлиентСервер.ЭтоЛокальнаяПодпись(МестоХраненияКлюча);
		Если НЕ СтрокаТаблицы.НетОграничения И СтрокаТаблицы.ЕстьУчетнаяЗапись И ЕстьДоступ И НЕ ЛокальнаяПодпись Тогда
			СтрокаТаблицы.Пометка = 0;
		ИначеЕсли СтрокаТаблицы.НетОграничения ИЛИ (СтрокаТаблицы.ЕстьУчетнаяЗапись И ЕстьДоступ) Тогда
			СтрокаТаблицы.Пометка = ?(СтрокаТаблицы.ВыборПользователя, 1, 0);
		Иначе
			СтрокаТаблицы.Пометка = ?(СтрокаТаблицы.ВыборПользователя, 1, 0);
		КонецЕсли;
		Если НЕ СтрокаТаблицы.НетОграничения и НЕ ЕстьДоступ Тогда
			СтрокаТаблицы.ТекстОграничений = ?(ПустаяСтрока(СтрокаТаблицы.ТекстОграничений), НСтр("ru = 'Есть ограничения'"), СтрокаТаблицы.ТекстОграничений);
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Функция ИзменитьСоставОграничений()
	
	Результат = Истина;
	КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	ПользовательОрганизаций = Пользователи.ТекущийПользователь();
	
	Если ЕстьДоступ и ОпцияРазделениеВключено() Тогда
		НаборЗаписей = РегистрыСведений.ПользователиУчетныхЗаписейДокументооборота.СоздатьНаборЗаписей();
		НаборЗаписей.Отбор.Пользователь.Установить(ПользовательОрганизаций);
		НаборЗаписей.Прочитать();
		НаборЗаписей.Очистить();
		
		Для Каждого СтрокаТаблицы Из ТаблицаВыбора Цикл
			Если СтрокаТаблицы.Пометка = 0 ИЛИ НЕ СтрокаТаблицы.ЕстьУчетнаяЗапись Тогда
				Продолжить;
			КонецЕсли;
			
			НоваяСтрока = НаборЗаписей.Добавить();
			НоваяСтрока.УчетнаяЗапись = СтрокаТаблицы.УчетнаяЗаписьОбмена;
			НоваяСтрока.Пользователь = ПользовательОрганизаций;
		КонецЦикла;
		
		Попытка
			НаборЗаписей.Записать();
		Исключение
			РегламентированнаяОтчетностьКлиентСервер.СообщитьОбОшибке(ОписаниеОшибки(), Ложь,
				"Не удалось обновить список учетных записей налогоплательщика пользователя""" + " " + СокрЛП(ПользовательОрганизаций) + """.");
			Результат = Ложь;
		КонецПопытки;
	КонецЕсли;
	
	Если Результат Тогда
		УстановитьПривилегированныйРежим(Истина);
		
		НаборЗаписей = РегистрыСведений.ИсключенныеОрганизацииОбменаСКО.СоздатьНаборЗаписей();
		НаборЗаписей.Отбор.Пользователь.Установить(ПользовательОрганизаций);
		НаборЗаписей.Прочитать();
		НаборЗаписей.Очистить();
		
		Для Каждого СтрокаТаблицы Из ТаблицаВыбора Цикл
			Если СтрокаТаблицы.Пометка <> 0 Тогда
				Продолжить;
			КонецЕсли;
			
			НоваяСтрока = НаборЗаписей.Добавить();
			НоваяСтрока.Организация = СтрокаТаблицы.Ссылка;
			НоваяСтрока.Пользователь = ПользовательОрганизаций;
		КонецЦикла;
		
		Попытка
			НаборЗаписей.Записать();
		Исключение
			РегламентированнаяОтчетностьКлиентСервер.СообщитьОбОшибке(ОписаниеОшибки(), Ложь,
				"Не удалось обновить список выбранных организаций пользователя""" + " " + СокрЛП(ПользовательОрганизаций) + """.");
			Результат = Ложь;
		КонецПопытки;
		
		УстановитьПривилегированныйРежим(Ложь);

	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

&НаСервере
Функция ПодготовитьОформлениеФормы()
	
	ОднаОрганизация = ТаблицаВыбора.Количество() = 1;
	Результат = 0;
	Описание = "";
	
	ОднаОрганизация = ТаблицаВыбора.Количество() = 1;
	
	Если Режим = 1 Тогда
		Если ОднаОрганизация Тогда
			ТекстЗаголовока = НСтр("ru = 'Выберите организацию, по которой производится обновление'");
		Иначе
			ТекстЗаголовока = НСтр("ru = 'Выберите организации, по которым производится обновление'");
		КонецЕсли;
		Если ДокументооборотСКОКлиентСервер.ПодсистемаЦБСуществует() Тогда
			Описание = НСтр("ru = 'Обновление 1С-Отчетности по ФНС, Росстату, СФР (бывш. ПФР) и Банку России производится по той организации, пользователем которой Вы являетесь.
								  |Проверьте и скорректируйте при необходимости состав организаций.'");
		Иначе
			Описание = НСтр("ru = 'Обновление 1С-Отчетности по ФНС, Росстату и СФР (бывш. ПФР) производится по той организации, пользователем которой Вы являетесь.
								  |Проверьте и скорректируйте при необходимости состав организаций.'");
		КонецЕсли;
		Результат = 2;
		
	ИначеЕсли Режим = 2 Тогда
		Если ОднаОрганизация Тогда
			ТекстЗаголовока = НСтр("ru = 'Организация, по которой производится обновление'");
		Иначе
			ТекстЗаголовока = НСтр("ru = 'Организации, по которым производится обновление'");
		КонецЕсли;
		Если ДокументооборотСКОКлиентСервер.ПодсистемаЦБСуществует() Тогда
			Описание = НСтр("ru = 'Обновление 1С-Отчетности по ФНС, Росстату, СФР (бывш. ПФР) и Банку России производится по тем организациям, пользователем которых Вы являетесь.'");
		Иначе
			Описание = НСтр("ru = 'Обновление 1С-Отчетности по ФНС, Росстату и СФР (бывш. ПФР) производится по тем организациям, пользователем которых Вы являетесь.'");
		КонецЕсли;
		Результат = 3;
		
	ИначеЕсли Режим = 3 Тогда
		Если ОднаОрганизация Тогда
			ТекстЗаголовока = НСтр("ru = 'Выберите организацию, по которой производится обновление'");
		Иначе
			ТекстЗаголовока = НСтр("ru = 'Выберите организации, по которым производится обновление'");
		КонецЕсли;	
		Описание = НСтр("ru = 'Не выбраны организации для обновления.'");
		Результат = 1;
		
	ИначеЕсли Режим = 4 Тогда
		Если ОднаОрганизация Тогда
			ТекстЗаголовока = НСтр("ru = 'Организация, по которой производится обновление'");
		Иначе
			ТекстЗаголовока = НСтр("ru = 'Организации, по которым производится обновление'");
		КонецЕсли;	
		Результат = 1;
		
	КонецЕсли;
	
	Если Режим = 3 ИЛИ Режим = 4 Тогда
		Элементы.ГруппаШапка.Видимость = Ложь;
	Иначе
		Элементы.ГруппаШапка.Видимость = Истина;
		Элементы.ДекорацияОписание.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(Описание);
	КонецЕсли;
	
	Элементы.Продолжить.Видимость = Режим = 1 ИЛИ Режим = 3;
	Элементы.Отмена.Видимость = НЕ Элементы.Продолжить.Видимость;
	Элементы.ГруппаИнформация.Видимость = НЕ (ЕстьДоступ И ОпцияРазделениеВключено());
	
	Заголовок = ТекстЗаголовока;
	
	Возврат Результат + ?(ЕстьДоступ, 1, 0);
	
КонецФункции

&НаСервере
Функция ОпцияРазделениеВключено()
	
	Возврат ОбщегоНазначения.РазделениеВключено();
	
КонецФункции

&НаСервереБезКонтекста
Процедура СохранитьНастройкиОбменаСЭДО(ДобавитьОтдельнуюКнопкуОбменаДляСЭДО)

	ЭлектронныйДокументооборотСФСС.СохранитьЗначениеДобавитьОтдельнуюКнопкуОбменаДляСЭДО(
		ДобавитьОтдельнуюКнопкуОбменаДляСЭДО);
	
КонецПроцедуры
	
&НаСервереБезКонтекста
Функция ПолучитьЗначениеДобавитьОтдельнуюКнопкуОбменаДляСЭДО()

	ДобавитьОтдельнуюКнопкуОбменаДляСЭДО =
		ЭлектронныйДокументооборотСФСС.ПолучитьЗначениеДобавитьОтдельнуюКнопкуОбменаДляСЭДО();
	Возврат ДобавитьОтдельнуюКнопкуОбменаДляСЭДО;
	
КонецФункции
	
Процедура ПроверитьЗначениеИВидимостьНастройкиСЭДО(ИспользоватьЗначениеФормы = Истина)
	
	ОрганизацииСФСС = СписокДопустимыхОрганизацийВОбъектахОбменаФСС();
	
	ЕстьОрганизацииСФСС = Ложь;
	Для Каждого СтрокаТаблицы Из ТаблицаВыбора Цикл
		
		Если СтрокаТаблицы.Пометка = 0 Тогда
			Продолжить;
		КонецЕсли;
		
		Если НЕ ОрганизацииСФСС.Найти(СтрокаТаблицы.Ссылка) = Неопределено Тогда
			ЕстьОрганизацииСФСС = Истина;
			Прервать;
		КонецЕсли;

	КонецЦикла;
	
	Если ИспользоватьЗначениеФормы Тогда
		ДобавитьОтдельнуюКнопкуОбменаДляСЭДО = ДобавитьОтдельнуюКнопкуОбменаДляСЭДО
			И ЕстьОрганизацииСФСС;
	Иначе
		ДобавитьОтдельнуюКнопкуОбменаДляСЭДО = ПолучитьЗначениеДобавитьОтдельнуюКнопкуОбменаДляСЭДО()
			И ЕстьОрганизацииСФСС;
	КонецЕсли;
		
	Элементы.ДобавитьОтдельнуюКнопкуОбменаДляСЭДО.Видимость = ЕстьОрганизацииСФСС;
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция СписокДопустимыхОрганизацийВОбъектахОбменаФСС()
	
	КонтекстЭДО = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	Возврат КонтекстЭДО.СписокДопустимыхОрганизацийВОбъектахОбменаФСС();
	
КонецФункции

#КонецОбласти

Связанные материалы