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