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