&НаКлиенте
Перем КонтекстЭДОКлиент;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ФНС = Перечисления.ТипыКонтролирующихОрганов.ФНС;
ПФР = Перечисления.ТипыКонтролирующихОрганов.ПФР;
ФСГС = Перечисления.ТипыКонтролирующихОрганов.ФСГС;
ФСС = Перечисления.ТипыКонтролирующихОрганов.ФСС;
Действие = Параметры.Действие;
ДанныеОрганизации = Параметры.ДанныеОрганизации;
ТипПолучателя = Параметры.ТипПолучателя;
КодПолучателя = Параметры.КодПолучателя;
КПП = Параметры.КПП;
ТолькоФНС = Параметры.ТолькоФНС;
АдресПолучателей = Параметры.АдресПолучателей;
ТаблицаПолучателей = ПолучитьИзВременногоХранилища(АдресПолучателей);
Получатели.Загрузить(ТаблицаПолучателей);
УправлениеЭУЕслиЭтоТолькоФНС();
Если Действие = "Добавить" Тогда
ТипПолучателя = ФНС;
КПП = "";
КонецЕсли;
ПредыдущийТипПолучателя = ТипПолучателя;
ПредыдущийКодПолучателя = КодПолучателя;
ПредыдущийКПП = КПП;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ТипПолучателяОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ТипПолучателяПриИзменении(Элемент)
УправлениеЭУ(Ложь);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОсновныеДействияФормыДобавить(Команда)
Если ПроверитьЗаполненностьПолейНаправления() Тогда
Результат = Новый Структура();
Результат.Вставить("ТипПолучателя", ТипПолучателя);
Результат.Вставить("КодПолучателя", КодПолучателя);
Результат.Вставить("КПП", КПП);
Закрыть(Результат);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ПриОткрытииЗавершение(Результат, ДополнительныеПараметры) Экспорт
КонтекстЭДОКлиент = Результат.КонтекстЭДО;
УправлениеЭУ(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьКодОрганаПриДобавлении()
Если ТипПолучателя = ФНС Тогда
КПП = ДанныеОрганизации.КППЮЛ;
КодПолучателя = ДанныеОрганизации.КодНО;
ИначеЕсли ТипПолучателя = ПФР Тогда
Если ПустаяСтрока(ДанныеОрганизации.КодОрганаПФР) ИЛИ СтрДлина(ДанныеОрганизации.КодОрганаПФР) < 7 Тогда
КодПолучателя = Лев(ДанныеОрганизации.РегНомПФР,7);
Иначе
КодПолучателя = ДанныеОрганизации.КодОрганаПФР;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеЭУ(ПриОткрытииФормы = Ложь)
Элементы.КодПолучателя.Доступность = Истина;
ЭтоФНС = ТипПолучателя = ФНС;
ЭтоЮрЛицо = ДанныеОрганизации.ТипОрганизации;
Элементы.КПП.Доступность = ЭтоФНС И ЭтоЮрЛицо;
Элементы.КодПолучателя.Доступность = ТипПолучателя <> ФСС;
Если ТипПолучателя = ФНС Тогда
Элементы.КодПолучателя.Маска = "9999";
Элементы.КодПолучателя.ОграничениеТипа = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(4));
Элементы.КПП.Маска = "9999UU999";
Элементы.КПП.ОграничениеТипа = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(9));
ИначеЕсли ТипПолучателя = ПФР Тогда
Элементы.КодПолучателя.Маска = "999-999";
Элементы.КодПолучателя.ОграничениеТипа = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(7));
ИначеЕсли ТипПолучателя = ФСГС Тогда
Элементы.КодПолучателя.ОграничениеТипа = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(7));
Элементы.КодПолучателя.Маска = "99-XXXXXXX";
ИначеЕсли ТипПолучателя = ФСС Тогда
Элементы.КодПолучателя.Маска = "";
Иначе
Элементы.КодПолучателя.Маска = "9999";
Элементы.КодПолучателя.ОграничениеТипа = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(4));
КонецЕсли;
Элементы.КПП.АвтоОтметкаНезаполненного = ЭтоФНС И ЭтоЮрЛицо;
Элементы.КПП.АвтоВыборНезаполненного = ЭтоФНС И ЭтоЮрЛицо;
Если Действие = "Добавить" Тогда
УстановитьЗначенияПоУмолчанию();
КПП = "";
Конецесли;
Если Действие = "Редактировать" Тогда
Элементы.ТипПолучателя.ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьЗначенияПоУмолчанию()
Если ТипПолучателя = ФСГС Тогда
КодОрганаФСГС = ДанныеОрганизации.КодОрганаФСГС;
Если НЕ ПустаяСтрока(КодОрганаФСГС)
И КонтекстЭДОКлиент.КодОрганаФСГССоответствуетТребованиямКлиент(КодОрганаФСГС) Тогда
КодПолучателя = КодОрганаФСГС;
КонецЕсли;
Иначе
ПолучитьКодОрганаПриДобавлении();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПроверитьЗаполненностьПолейНаправления()
Если Не НаправленияИмеютКоректныеЗначения() Тогда
Возврат Ложь;
КонецЕсли;
НовыеЗначенияПолучателя = Новый Структура("ТипПолучателя, КодПолучателя, КПП");
НовыеЗначенияПолучателя.Вставить("ТипПолучателя", ТипПолучателя);
НовыеЗначенияПолучателя.Вставить("КодПолучателя", КодПолучателя);
НовыеЗначенияПолучателя.Вставить("КПП", КПП);
ПредыдущиеЗначенияПолучателя = Новый Структура("ТипПолучателя, КодПолучателя, КПП");
ПредыдущиеЗначенияПолучателя.Вставить("ТипПолучателя", ПредыдущийТипПолучателя);
ПредыдущиеЗначенияПолучателя.Вставить("КодПолучателя", ПредыдущийКодПолучателя);
ПредыдущиеЗначенияПолучателя.Вставить("КПП", ПредыдущийКПП);
Если НЕ КонтекстЭДОКлиент.НаправлениеУникально(Получатели, Действие, НовыеЗначенияПолучателя, ПредыдущиеЗначенияПолучателя) Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаКлиенте
Функция НаправленияИмеютКоректныеЗначения()
Если ТипПолучателя = ФНС Тогда
Если НЕ(КонтекстЭДОКлиент.ПроверитьЦифровойКодЗаданнойДлины(КодПолучателя, 4)) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Не корректно заполнен код получателя.'"),
,
"КодПолучателя");
Возврат Ложь;
ИначеЕсли Элементы.КПП.Доступность И НЕ(КонтекстЭДОКлиент.ПроверитьКПП(КПП)) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Не корректно заполнен КПП.'"),
,
"КПП");
Возврат Ложь;
КонецЕсли;
ИначеЕсли ТипПолучателя = ПФР Тогда
Если СтрДлина(СокрЛП(КодПолучателя))<> 7 Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Не введен код получателя.'"),
,
"КодПолучателя");
Возврат Ложь;
КонецЕсли;
ИначеЕсли ТипПолучателя = ФСГС Тогда
Если ПустаяСтрока(СтрЗаменить(КодПолучателя,"-","")) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Не введен код получателя.'"),
,
"КодПолучателя");
Возврат Ложь;
КонецЕсли;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Процедура УправлениеЭУЕслиЭтоТолькоФНС()
Если ТолькоФНС Тогда
Заголовок = НСтр("ru = 'ФНС'");
Элементы.КПП.Заголовок = НСтр("ru = 'КПП'");
Элементы.ТипПолучателя.Заголовок = НСтр("ru = 'Код ФНС'");
Элементы.ТипПолучателя.Видимость = Ложь;
ТипПолучателя = ФНС;
КонецЕсли;
КонецПроцедуры
#КонецОбласти