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