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