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