#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Подразделение)";
КонецПроцедуры
#КонецОбласти
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("ИнтеграцияБЗК");
МеханизмыДокумента.Добавить("Производство");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("УчетНЗП");
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ВыработкаСотрудников") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
ТекстЗапросаТаблицаЗначенияОперативныхПоказателейРасчетаЗарплатыСотрудников(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТрудозатратыНезавершенногоПроизводства(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТрудозатратыКОформлению(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ПроведениеДокументов.ДобавитьЗапросыСторноДвижений(Запрос, ТекстыЗапроса, Регистры, ПустаяСсылка().Метаданные());
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
ИсправлениеДокументов.ДобавитьКомандуИсправление(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ИсправлениеДокументов.ДобавитьКомандуСторно(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОснованииСозданиеВыработкиСотрудников(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ВыработкаСотрудников) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.СозданиеВыработкиСотрудников";
КомандаСоздатьНаОсновании.Менеджер = "Документ.ВыработкаСотрудников";
КомандаСоздатьНаОсновании.Идентификатор = "СозданиеВыработкиСотрудников";
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Выработка сотрудников'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьПроизводство,ИспользоватьУправлениеРемонтами,ИспользоватьУчетПрочихДоходовРасходов";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КонецПроцедуры
Процедура ОформитьПриЗакрытииМесяца(ПараметрыОбработчика) Экспорт
СтруктураОтбора = Новый Структура();
СтруктураОтбора.Вставить("Организация", ПараметрыОбработчика.ПараметрыРасчета.МассивОрганизаций);
СтруктураОтбора.Вставить("НачалоПериода", НачалоМесяца(ПараметрыОбработчика.ПараметрыРасчета.ПериодРегистрации));
СтруктураОтбора.Вставить("КонецПериода", КонецМесяца(ПараметрыОбработчика.ПараметрыРасчета.ПериодРегистрации));
СтруктураОтбора.Вставить("ВключатьВПериодВыполненияРабот", Истина);
АдресВХранилище = ПоместитьВоВременноеХранилище(Неопределено);
СформироватьДокументы(СтруктураОтбора, АдресВХранилище, Истина);
Результат = ПолучитьИзВременногоХранилища(АдресВХранилище);
Для Каждого Строка Из Результат.СписокОшибок Цикл
ПараметрыРегистрации = ЗакрытиеМесяцаСервер.ИнициализироватьПараметрыРегистрацииПроблемыРасчета(
Справочники.ОперацииЗакрытияМесяца.ОформлениеВыработкиСотрудников,
Строка.Организация,
НачалоМесяца(ПараметрыОбработчика.ПараметрыРасчета.ПериодРегистрации));
ЗакрытиеМесяцаСервер.ЗарегистрироватьПроблемуВыполненияРасчета(
ПараметрыРегистрации,
НСтр("ru='Рекомендуется оформить вручную из списка к оформлению. При автоматическом оформлении диагностированы ошибки'", ОбщегоНазначения.КодОсновногоЯзыка()),
,
Строка.ТекстОшибки);
КонецЦикла;
КонецПроцедуры
Процедура СформироватьДокументы(СтруктураОтбора, АдресРезультата, УдалятьДокументыСОшибками = Неопределено) Экспорт
Замер = ОценкаПроизводительности.НачатьЗамерДлительнойОперации("Документ.ВыработкаСотрудников.МодульМенеджера.СформироватьДокументы");
Результат = Новый Структура;
СписокДокументов = Новый СписокЗначений;
СписокОшибок = Новый Массив;
СтруктураШапки = Новый Структура("Бригада,ВидНаряда,Организация,НачалоПериода,КонецПериода,Подразделение");
ТекущийДокумент = Неопределено;
Выборка = ТрудозатратыКОформлению(СтруктураОтбора).Выбрать();
Пока Выборка.Следующий() Цикл
Если (СтруктураШапки.Бригада <> Выборка.Бригада И ЗначениеЗаполнено(Выборка.Бригада))
Или СтруктураШапки.ВидНаряда <> Выборка.ВидНаряда
Или СтруктураШапки.Организация <> Выборка.Организация
Или СтруктураШапки.НачалоПериода <> Выборка.НачалоПериода
Или СтруктураШапки.КонецПериода <> Выборка.КонецПериода
Или СтруктураШапки.Подразделение <> Выборка.Подразделение Тогда
ЗаполнитьЗначенияСвойств(СтруктураШапки, Выборка);
ЗаписатьНовыйДокумент(ТекущийДокумент, СписокДокументов, СписокОшибок);
ТекущийДокумент = Документы.ВыработкаСотрудников.СоздатьДокумент();
ТекущийДокумент.ПолучитьСсылкуНового();
ТекущийДокумент.Заполнить(Выборка);
Если СтруктураОтбора.Свойство("ВключатьВПериодВыполненияРабот")
И СтруктураОтбора.ВключатьВПериодВыполненияРабот Тогда
ТекущийДокумент.Дата = Выборка.КонецПериода;
ТекущийДокумент.Месяц = НачалоМесяца(Выборка.ДатаВыполненияРабот);
Иначе
ТекущийДокумент.Дата = ТекущаяДатаСеанса();
ТекущийДокумент.Месяц = НачалоМесяца(ТекущаяДатаСеанса());
КонецЕсли;
ТекущийДокумент.УчетТрудозатратВРазрезеСотрудников = ПроизводствоСервер.ИспользуетсяУчетТрудозатратВРазрезеСотрудников(ТекущийДокумент.Месяц);
КонецЕсли;
НоваяСтрока = ТекущийДокумент.ВидыРабот.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КонецЦикла;
ЗаписатьНовыйДокумент(ТекущийДокумент, СписокДокументов, СписокОшибок);
Если УдалятьДокументыСОшибками = Истина Тогда
ОбработанныеДокументы = Новый Соответствие;
Для Каждого Строка Из СписокОшибок Цикл
Если Строка.ТипОшибки = "ДокументСуществует"
Или Не ОбработанныеДокументы[Строка.Документ] = Неопределено Тогда
Продолжить;
КонецЕсли;
ОбработанныеДокументы.Вставить(Строка.Документ, Истина);
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Документ.ВыработкаСотрудников");
ЭлементБлокировки.УстановитьЗначение("Ссылка", Строка.Документ);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
ДокументОбъект = Строка.Документ.ПолучитьОбъект();
ДокументОбъект.Удалить();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ДобавитьОшибкуАвтоматическогоСоздания(ДокументОбъект, СписокОшибок, "Заполнение", ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецЕсли;
ПолучитьСообщенияПользователю(Истина);
Владелец = Пользователи.АвторизованныйПользователь();
УстановитьПривилегированныйРежим(Истина);
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Владелец, СписокДокументов.ВыгрузитьЗначения(), "ФормаСозданияВыработкиСотрудников");
УстановитьПривилегированныйРежим(Ложь);
Результат.Вставить("СписокОшибок", СписокОшибок);
Результат.Вставить("КоличествоДокументов", СписокДокументов.Количество());
ПоместитьВоВременноеХранилище(Результат, АдресРезультата);
ОценкаПроизводительности.ЗакончитьЗамерДлительнойОперации(Замер, СписокДокументов.Количество());
КонецПроцедуры
Процедура ЗаполнитьВидыРаботПоОстаткам(Объект, СтруктураОтбора) Экспорт
КОформлению = ТрудозатратыКОформлению(СтруктураОтбора);
Объект.ВидыРабот.Загрузить(КОформлению.Выгрузить());
КонецПроцедуры
Функция ТрудозатратыКОформлению(СтруктураОтбора, МенеджерВременныхТаблиц = Неопределено) Экспорт
Перем Организации, Подразделения, Бригады, Работники, ВидыНарядов, Распоряжения, ВидыРабот,
Периоды, НачалоПериода, КонецПериода, Периодичность, СворачиватьРаспоряжения;
Если СтруктураОтбора.Свойство("Организация") И ЗначениеЗаполнено(СтруктураОтбора.Организация) Тогда
Если ТипЗнч(СтруктураОтбора.Организация) = Тип("Массив") Тогда
Организации = СтруктураОтбора.Организация;
Иначе
Организации = Новый Массив;
Организации.Добавить(СтруктураОтбора.Организация);
КонецЕсли;
ИначеЕсли НЕ СтруктураОтбора.Свойство("Организации", Организации) Тогда
Организации = Новый Массив;
КонецЕсли;
Если СтруктураОтбора.Свойство("Подразделение") И ЗначениеЗаполнено(СтруктураОтбора.Подразделение) Тогда
Подразделения = Новый Массив;
Подразделения.Добавить(СтруктураОтбора.Подразделение);
ИначеЕсли НЕ СтруктураОтбора.Свойство("Подразделения", Подразделения) Тогда
Подразделения = Новый Массив;
КонецЕсли;
Если СтруктураОтбора.Свойство("ВидНаряда") Тогда
ВидыНарядов = Новый Массив;
ВидыНарядов.Добавить(СтруктураОтбора.ВидНаряда);
ИначеЕсли НЕ СтруктураОтбора.Свойство("ВидыНарядов", ВидыНарядов) Тогда
ВидыНарядов = Новый Массив;
КонецЕсли;
Если СтруктураОтбора.Свойство("Бригада") И ЗначениеЗаполнено(СтруктураОтбора.Бригада) Тогда
Бригады = Новый Массив;
Бригады.Добавить(СтруктураОтбора.Бригада);
ИначеЕсли НЕ СтруктураОтбора.Свойство("Бригады", Бригады) Тогда
Бригады = Новый Массив;
КонецЕсли;
Если СтруктураОтбора.Свойство("Работник") И ЗначениеЗаполнено(СтруктураОтбора.Работник) Тогда
Работники = Новый Массив;
Работники.Добавить(СтруктураОтбора.Работник);
ИначеЕсли НЕ СтруктураОтбора.Свойство("Работники", Работники) Тогда
Работники = Новый Массив;
КонецЕсли;
Если СтруктураОтбора.Свойство("Сотрудник") И ЗначениеЗаполнено(СтруктураОтбора.Сотрудник) Тогда
Работники.Добавить(СтруктураОтбора.Сотрудник);
ИначеЕсли СтруктураОтбора.Свойство("Сотрудники") Тогда
Для Каждого Сотрудник Из СтруктураОтбора.Сотрудники Цикл
Работники.Добавить(Сотрудник);
КонецЦикла;
КонецЕсли;
Если НЕ СтруктураОтбора.Свойство("Распоряжения", Распоряжения) Тогда
Распоряжения = Новый Массив;
КонецЕсли;
Если НЕ СтруктураОтбора.Свойство("ВидыРабот", ВидыРабот) Тогда
ВидыРабот = Новый Массив;
КонецЕсли;
Если НЕ СтруктураОтбора.Свойство("Периоды", Периоды) Тогда
Периоды = Новый Массив;
КонецЕсли;
Если НЕ СтруктураОтбора.Свойство("НачалоПериода", НачалоПериода) Тогда
НачалоПериода = Дата(1,1,1);
КонецЕсли;
Если НЕ СтруктураОтбора.Свойство("КонецПериода", КонецПериода) Тогда
КонецПериода = Дата(3999,1,1);
КонецЕсли;
Если НЕ СтруктураОтбора.Свойство("Периодичность", Периодичность) Тогда
Периодичность = Перечисления.ПериодичностьОформленияВыработкиСотрудников.ПустаяСсылка();
КонецЕсли;
Если НЕ СтруктураОтбора.Свойство("СворачиватьРаспоряжения", СворачиватьРаспоряжения) Тогда
СворачиватьРаспоряжения = Ложь;
КонецЕсли;
Запрос = Новый Запрос;
Если МенеджерВременныхТаблиц <> Неопределено Тогда
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Иначе
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
КонецЕсли;
Если СтруктураОтбора.Свойство("ДокументИсключение") Тогда
Запрос.УстановитьПараметр("ДокументИсключение", СтруктураОтбора.ДокументИсключение);
Иначе
Запрос.УстановитьПараметр("ДокументИсключение", Неопределено);
КонецЕсли;
Если СтруктураОтбора.Свойство("ВключатьВПериодВыполненияРабот") Тогда
Запрос.УстановитьПараметр("ВключатьВПериодВыполненияРабот", СтруктураОтбора.ВключатьВПериодВыполненияРабот);
Иначе
Запрос.УстановитьПараметр("ВключатьВПериодВыполненияРабот", Истина);
КонецЕсли;
СтруктурныйОтбор = Новый ТаблицаЗначений();
СтруктурныйОтбор.Колонки.Добавить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
СтруктурныйОтбор.Колонки.Добавить("ВидНаряда", Новый ОписаниеТипов("ПеречислениеСсылка.ВидыБригадныхНарядов"));
СтруктурныйОтбор.Колонки.Добавить("Бригада", Новый ОписаниеТипов("СправочникСсылка.Бригады"));
Если СтруктураОтбора.Свойство("СтруктурныйОтбор") Тогда
Для Каждого Структура Из СтруктураОтбора.СтруктурныйОтбор Цикл
Строка = СтруктурныйОтбор.Добавить();
ЗаполнитьЗначенияСвойств(Строка, Структура);
КонецЦикла;
Запрос.УстановитьПараметр("БезОтбораПоВидамНарядовИПодразделениям", НЕ ЗначениеЗаполнено(СтруктураОтбора.СтруктурныйОтбор));
Иначе
Запрос.УстановитьПараметр("БезОтбораПоВидамНарядовИПодразделениям", Истина);
КонецЕсли;
Запрос.УстановитьПараметр("СтруктурныйОтбор", СтруктурныйОтбор);
Запрос.УстановитьПараметр("Организации", Организации);
Запрос.УстановитьПараметр("БезОтбораПоОрганизациям", Организации.Количество() = 0);
Запрос.УстановитьПараметр("Подразделения", Подразделения);
Запрос.УстановитьПараметр("БезОтбораПоПодразделениям", Подразделения.Количество() = 0);
Запрос.УстановитьПараметр("ВидыНарядов", ВидыНарядов);
Запрос.УстановитьПараметр("БезОтбораПоВидамНарядов", ВидыНарядов.Количество() = 0);
Запрос.УстановитьПараметр("Бригады", Бригады);
Запрос.УстановитьПараметр("БезОтбораПоБригадам", Бригады.Количество() = 0);
Запрос.УстановитьПараметр("Работники", Работники);
Запрос.УстановитьПараметр("БезОтбораПоРаботникам", Работники.Количество() = 0);
Запрос.УстановитьПараметр("Периоды", Периоды);
Запрос.УстановитьПараметр("БезОтбораПоПериодам", Периоды.Количество() = 0);
Запрос.УстановитьПараметр("Распоряжения", Распоряжения);
Запрос.УстановитьПараметр("БезОтбораПоРаспоряжениям", Распоряжения.Количество() = 0);
Запрос.УстановитьПараметр("ВидыРабот", ВидыРабот);
Запрос.УстановитьПараметр("БезОтбораПоВидамРабот", ВидыРабот.Количество() = 0);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Запрос.УстановитьПараметр("Периодичность", Периодичность);
Запрос.УстановитьПараметр("СворачиватьРаспоряжения", СворачиватьРаспоряжения);
Запрос.УстановитьПараметр("АналитическийУчетПоГруппамПродукции", ПолучитьФункциональнуюОпцию("АналитическийУчетПоГруппамПродукции"));
Запрос.УстановитьПараметр("ХранитьОперацииВРесурсныхСпецификациях", ПолучитьФункциональнуюОпцию("ХранитьОперацииВРесурсныхСпецификациях"));
Запрос.УстановитьПараметр("УчетТрудозатратВРазрезеСотрудников", ПроизводствоСервер.ИспользуетсяУчетТрудозатратВРазрезеСотрудников(
?(ЗначениеЗаполнено(НачалоПериода), НачалоПериода, ТекущаяДатаСеанса())));
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
ИспользоватьРазрядыРасценокРаботСотрудников = Истина;
Запрос.УстановитьПараметр("ИспользоватьРазрядыРасценокРаботСотрудников", ИспользоватьРазрядыРасценокРаботСотрудников);
#Область Остатки
ТекстЗапроса = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДД.Организация КАК Организация,
| ДД.ПартияПроизводства КАК ПартияПроизводства,
| ДД.Распоряжение КАК Распоряжение,
| ДД.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения,
| ДД.ВидРабот КАК ВидРабот,
| ДД.Подразделение КАК Подразделение,
| ДД.Исполнитель КАК Исполнитель,
| СУММА(ДД.КоличествоПриход - ДД.КоличествоРасход) КАК КоличествоОборот
|ПОМЕСТИТЬ Обороты
|ИЗ
| РегистрНакопления.ТрудозатратыКОформлению.Обороты(
| &НачалоПериода,
| &КонецПериода,,
| (&БезОтбораПоОрганизациям
| ИЛИ Организация В (&Организации))
| И (&БезОтбораПоРаспоряжениям
| ИЛИ Распоряжение В (&Распоряжения))
| И (&БезОтбораПоВидамРабот
| ИЛИ ВидРабот В (&ВидыРабот))
| И (&БезОтбораПоПодразделениям
| ИЛИ Подразделение В (&Подразделения))
| И (&БезОтбораПоБригадам
| ИЛИ Исполнитель В (&Бригады)
| ИЛИ ТИПЗНАЧЕНИЯ(Исполнитель) В(
| ТИП(Справочник.Сотрудники),
| ТИП(Справочник.ФизическиеЛица)))
| И (&БезОтбораПоРаботникам
| ИЛИ Исполнитель В (&Работники)
| ИЛИ ТИПЗНАЧЕНИЯ(Исполнитель) = ТИП(Справочник.Бригады))
| ) КАК ДД
|
|СГРУППИРОВАТЬ ПО
| ДД.Организация,
| ДД.ПартияПроизводства,
| ДД.Распоряжение,
| ДД.КодСтрокиРаспоряжения,
| ДД.ВидРабот,
| ДД.Подразделение,
| ДД.Исполнитель
|
|ИНДЕКСИРОВАТЬ ПО
| Организация,
| ПартияПроизводства,
| Распоряжение,
| КодСтрокиРаспоряжения
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Обороты.Организация КАК Организация,
| Обороты.ПартияПроизводства КАК ПартияПроизводства,
| Обороты.Распоряжение КАК Распоряжение,
| Обороты.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения
|ПОМЕСТИТЬ РаспоряженияСИсправлением
|ИЗ
| Обороты КАК Обороты
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа КАК РеквизитыПбЗ
| ПО РеквизитыПбЗ.Ссылка = Обороты.Распоряжение
| И РеквизитыПбЗ.ИсправлениеСохраняетПартииПроизводства
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТрудозатратыКОформлению КАК ТрудозатратыКОформлению
| ПО ТрудозатратыКОформлению.Организация = Обороты.Организация
| И ТрудозатратыКОформлению.ПартияПроизводства = Обороты.ПартияПроизводства
| И ТрудозатратыКОформлению.Распоряжение = Обороты.Распоряжение
| И ТрудозатратыКОформлению.КодСтрокиРаспоряжения = Обороты.КодСтрокиРаспоряжения
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РеестрДокументов КАК ДокументыСторно
| ПО ДокументыСторно.Ссылка = ТрудозатратыКОформлению.Регистратор
| И ДокументыСторно.СторноИсправление
| И ДокументыСторно.Проведен
| И НЕ ДокументыСторно.ДополнительнаяЗапись
|
|ГДЕ
| НЕ ТрудозатратыКОформлению.Количество = 0
|
|СГРУППИРОВАТЬ ПО
| Обороты.Организация,
| Обороты.ПартияПроизводства,
| Обороты.Распоряжение,
| Обороты.КодСтрокиРаспоряжения
|
|ИНДЕКСИРОВАТЬ ПО
| Организация,
| ПартияПроизводства,
| Распоряжение,
| КодСтрокиРаспоряжения
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТрудозатратыКОформлению.Периодичность КАК Периодичность,
| ТрудозатратыКОформлению.ВидРабот КАК ВидРабот,
| ТрудозатратыКОформлению.Организация КАК Организация,
| ТрудозатратыКОформлению.Распоряжение КАК Распоряжение,
| ТрудозатратыКОформлению.Исполнитель КАК Исполнитель,
| ТрудозатратыКОформлению.Подразделение КАК Подразделение,
| ТрудозатратыКОформлению.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения,
| ТрудозатратыКОформлению.Статус КАК Статус,
| МАКСИМУМ(ТрудозатратыКОформлению.ЕстьИсправления) КАК ЕстьИсправления,
| СУММА(ТрудозатратыКОформлению.Количество) КАК Количество
|ПОМЕСТИТЬ Остатки
|ИЗ
| (ВЫБРАТЬ
| ВЫБОР
| КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.ПустаяСсылка)
| ТОГДА СпрПодразделения.ПериодичностьОформленияВыработки
| ИНАЧЕ &Периодичность
| КОНЕЦ КАК Периодичность,
| ТрудозатратыКОформлению.ВидРабот КАК ВидРабот,
| ТрудозатратыКОформлению.КоличествоОстаток КАК Количество,
| ТрудозатратыКОформлению.Организация КАК Организация,
| ТрудозатратыКОформлению.Распоряжение КАК Распоряжение,
| ТрудозатратыКОформлению.Исполнитель КАК Исполнитель,
| ТрудозатратыКОформлению.Подразделение КАК Подразделение,
| ТрудозатратыКОформлению.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Статус,
| ЛОЖЬ КАК ЕстьИсправления
| ИЗ
| РегистрНакопления.ТрудозатратыКОформлению.Остатки(
| ,
| (Организация, Распоряжение, ВидРабот, Подразделение, Исполнитель) В(
| ВЫБРАТЬ
| Обороты.Организация,
| Обороты.Распоряжение,
| Обороты.ВидРабот,
| Обороты.Подразделение,
| Обороты.Исполнитель
| ИЗ
| Обороты КАК Обороты)) КАК ТрудозатратыКОформлению
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СтруктураПредприятия КАК СпрПодразделения
| ПО СпрПодразделения.Ссылка = ТрудозатратыКОформлению.Подразделение
|
| ЛЕВОЕ СОЕДИНЕНИЕ РаспоряженияСИсправлением КАК РаспоряженияСИсправлением
| ПО РаспоряженияСИсправлением.Организация = ТрудозатратыКОформлению.Организация
| И РаспоряженияСИсправлением.ПартияПроизводства = ТрудозатратыКОформлению.ПартияПроизводства
| И РаспоряженияСИсправлением.Распоряжение = ТрудозатратыКОформлению.Распоряжение
| И РаспоряженияСИсправлением.КодСтрокиРаспоряжения = ТрудозатратыКОформлению.КодСтрокиРаспоряжения
|
| ГДЕ
| РаспоряженияСИсправлением.ПартияПроизводства ЕСТЬ NULL
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВЫБОР
| КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.ПустаяСсылка)
| ТОГДА СпрПодразделения.ПериодичностьОформленияВыработки
| ИНАЧЕ &Периодичность
| КОНЕЦ КАК Периодичность,
| ТрудозатратыКОформлению.ВидРабот КАК ВидРабот,
| ТрудозатратыКОформлению.КоличествоОборот КАК Количество,
| ТрудозатратыКОформлению.Организация КАК Организация,
| ТрудозатратыКОформлению.Распоряжение КАК Распоряжение,
| ТрудозатратыКОформлению.Исполнитель КАК Исполнитель,
| ТрудозатратыКОформлению.Подразделение КАК Подразделение,
| ТрудозатратыКОформлению.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Статус,
| ИСТИНА КАК ЕстьИсправления
| ИЗ
| Обороты КАК ТрудозатратыКОформлению
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СтруктураПредприятия КАК СпрПодразделения
| ПО СпрПодразделения.Ссылка = ТрудозатратыКОформлению.Подразделение
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РаспоряженияСИсправлением КАК РаспоряженияСИсправлением
| ПО РаспоряженияСИсправлением.Организация = ТрудозатратыКОформлению.Организация
| И РаспоряженияСИсправлением.ПартияПроизводства = ТрудозатратыКОформлению.ПартияПроизводства
| И РаспоряженияСИсправлением.Распоряжение = ТрудозатратыКОформлению.Распоряжение
| И РаспоряженияСИсправлением.КодСтрокиРаспоряжения = ТрудозатратыКОформлению.КодСтрокиРаспоряжения
|
| ГДЕ
| НЕ ТрудозатратыКОформлению.КоличествоОборот = 0
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВЫБОР
| КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.ПустаяСсылка)
| ТОГДА СпрПодразделения.ПериодичностьОформленияВыработки
| ИНАЧЕ &Периодичность
| КОНЕЦ КАК Периодичность,
| ТрудозатратыКОформлению.ВидРабот КАК ВидРабот,
| ТрудозатратыКОформлению.Количество КАК Количество,
| ТрудозатратыКОформлению.Организация КАК Организация,
| ТрудозатратыКОформлению.Распоряжение КАК Распоряжение,
| ТрудозатратыКОформлению.Исполнитель КАК Исполнитель,
| ТрудозатратыКОформлению.Подразделение КАК Подразделение,
| ТрудозатратыКОформлению.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Статус,
| РаспоряженияСИсправлением.Распоряжение ЕСТЬ НЕ NULL КАК ЕстьИсправления
| ИЗ
| РегистрНакопления.ТрудозатратыКОформлению КАК ТрудозатратыКОформлению
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СтруктураПредприятия КАК СпрПодразделения
| ПО СпрПодразделения.Ссылка = ТрудозатратыКОформлению.Подразделение
|
| ЛЕВОЕ СОЕДИНЕНИЕ РаспоряженияСИсправлением КАК РаспоряженияСИсправлением
| ПО РаспоряженияСИсправлением.Организация = ТрудозатратыКОформлению.Организация
| И РаспоряженияСИсправлением.ПартияПроизводства = ТрудозатратыКОформлению.ПартияПроизводства
| И РаспоряженияСИсправлением.Распоряжение = ТрудозатратыКОформлению.Распоряжение
| И РаспоряженияСИсправлением.КодСтрокиРаспоряжения = ТрудозатратыКОформлению.КодСтрокиРаспоряжения
|
| ГДЕ
| (&БезОтбораПоОрганизациям
| ИЛИ ТрудозатратыКОформлению.Организация В (&Организации))
| И (&БезОтбораПоРаспоряжениям
| ИЛИ ТрудозатратыКОформлению.Распоряжение В (&Распоряжения))
| И (&БезОтбораПоВидамРабот
| ИЛИ ТрудозатратыКОформлению.ВидРабот В (&ВидыРабот))
| И (&БезОтбораПоПодразделениям
| ИЛИ ТрудозатратыКОформлению.Подразделение В (&Подразделения))
| И (&БезОтбораПоБригадам
| ИЛИ ТрудозатратыКОформлению.Исполнитель В (&Бригады)
| ИЛИ ТИПЗНАЧЕНИЯ(Исполнитель) = ТИП(Справочник.Бригады))
| И (&БезОтбораПоРаботникам
| ИЛИ ТрудозатратыКОформлению.Исполнитель В (&Работники)
| ИЛИ ТИПЗНАЧЕНИЯ(Исполнитель) = ТИП(Справочник.Бригады))
| И ТрудозатратыКОформлению.Регистратор = &ДокументИсключение
| ) КАК ТрудозатратыКОформлению
|
|СГРУППИРОВАТЬ ПО
| ТрудозатратыКОформлению.Периодичность,
| ТрудозатратыКОформлению.ВидРабот,
| ТрудозатратыКОформлению.Организация,
| ТрудозатратыКОформлению.Распоряжение,
| ТрудозатратыКОформлению.Исполнитель,
| ТрудозатратыКОформлению.Подразделение,
| ТрудозатратыКОформлению.КодСтрокиРаспоряжения,
| ТрудозатратыКОформлению.Статус
|
|ИНДЕКСИРОВАТЬ ПО
| Распоряжение
|";
Запрос.Текст = ТекстЗапроса;
Запрос.Выполнить();
#КонецОбласти
#Область ВспомогательныеДанные
ТекстыЗапросов = Новый Массив;
ТекстЗапроса =
"ВЫБРАТЬ
| ВЫБОР
| КОГДА НЕ ТрудозатратыКОформлению.ЕстьИсправления
| ТОГДА ТрудозатратыПроизводстваБезЗаказа.Ссылка.Дата
| КОГДА ТрудозатратыКОформлению.ЕстьИсправления
| И ТрудозатратыПроизводстваБезЗаказа.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| ТОГДА ТрудозатратыПроизводстваБезЗаказа.Ссылка.Дата
| ИНАЧЕ &КонецПериода
| КОНЕЦ КАК ДатаВыполнения,
| ТрудозатратыПроизводстваБезЗаказа.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТрудозатратыПроизводстваБезЗаказа.Ссылка КАК Распоряжение,
| ТрудозатратыПроизводстваБезЗаказа.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ТрудозатратыПроизводстваБезЗаказа.Ссылка.Исправление
| И ТрудозатратыПроизводстваБезЗаказа.Ссылка.ИсправлениеСохраняетПартииПроизводства
| ТОГДА ТрудозатратыПроизводстваБезЗаказа.Ссылка.ИсправляемыйДокумент
| ИНАЧЕ ТрудозатратыПроизводстваБезЗаказа.Ссылка
| КОНЕЦ КАК ДокументПартии,
| ТрудозатратыПроизводстваБезЗаказа.НомерГруппыЗатрат КАК НомерГруппыЗатрат
|ПОМЕСТИТЬ ВтПартииПроизводстваБезЗаказаПодготовительная
|ИЗ
| Остатки КАК ТрудозатратыКОформлению
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа.Трудозатраты КАК ТрудозатратыПроизводстваБезЗаказа
| ПО ТрудозатратыПроизводстваБезЗаказа.Ссылка = ТрудозатратыКОформлению.Распоряжение
| И ТрудозатратыПроизводстваБезЗаказа.КодСтроки = ТрудозатратыКОформлению.КодСтрокиРаспоряжения
|
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА ТрудозатратыПроизводстваБезЗаказа.Ссылка.Исправление
| И ТрудозатратыПроизводстваБезЗаказа.Ссылка.ИсправлениеСохраняетПартииПроизводства
| ТОГДА ТрудозатратыПроизводстваБезЗаказа.Ссылка.ИсправляемыйДокумент
| ИНАЧЕ ТрудозатратыПроизводстваБезЗаказа.Ссылка
| КОНЕЦ,
| ТрудозатратыПроизводстваБезЗаказа.Ссылка,
| ТрудозатратыПроизводстваБезЗаказа.КодСтроки,
| ТрудозатратыПроизводстваБезЗаказа.НомерГруппыЗатрат,
| ТрудозатратыПроизводстваБезЗаказа.СтатьяКалькуляции,
| ВЫБОР
| КОГДА НЕ ТрудозатратыКОформлению.ЕстьИсправления
| ТОГДА ТрудозатратыПроизводстваБезЗаказа.Ссылка.Дата
| КОГДА ТрудозатратыКОформлению.ЕстьИсправления
| И ТрудозатратыПроизводстваБезЗаказа.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| ТОГДА ТрудозатратыПроизводстваБезЗаказа.Ссылка.Дата
| ИНАЧЕ &КонецПериода
| КОНЕЦ
|
|ИНДЕКСИРОВАТЬ ПО
| ДокументПартии,
| НомерГруппыЗатрат
|;
|
|
|ВЫБРАТЬ
| ТрудозатратыПроизводстваБезЗаказа.ДатаВыполнения КАК ДатаВыполнения,
| ТрудозатратыПроизводстваБезЗаказа.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТрудозатратыПроизводстваБезЗаказа.Распоряжение КАК Распоряжение,
| ТрудозатратыПроизводстваБезЗаказа.КодСтроки КАК КодСтрокиРаспоряжения,
| СпрПартииПроизводства.ГруппаПродукции КАК ГруппаПродукции
|ПОМЕСТИТЬ ВтПартииПроизводстваБезЗаказа
|ИЗ
| ВтПартииПроизводстваБезЗаказаПодготовительная КАК ТрудозатратыПроизводстваБезЗаказа
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПартииПроизводства КАК СпрПартииПроизводства
| ПО СпрПартииПроизводства.Документ = ТрудозатратыПроизводстваБезЗаказа.ДокументПартии
| И СпрПартииПроизводства.Код = ТрудозатратыПроизводстваБезЗаказа.НомерГруппыЗатрат
| И НЕ СпрПартииПроизводства.ПометкаУдаления
|
|СГРУППИРОВАТЬ ПО
| ТрудозатратыПроизводстваБезЗаказа.Распоряжение,
| ТрудозатратыПроизводстваБезЗаказа.ДатаВыполнения,
| ТрудозатратыПроизводстваБезЗаказа.СтатьяКалькуляции,
| ТрудозатратыПроизводстваБезЗаказа.КодСтроки,
| СпрПартииПроизводства.ГруппаПродукции
|
|ИНДЕКСИРОВАТЬ ПО
| Распоряжение,
| КодСтрокиРаспоряжения
|;
|
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВЫБОР
| КОГДА ТрудозатратыКОформлению.Исполнитель Ссылка Справочник.Бригады
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.Бригадный)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.Персональный)
| КОНЕЦ КАК ВидНаряда,
| ПартииПроизводстваБезЗаказа.ДатаВыполнения КАК ДатаВыполнения,
| ТрудозатратыКОформлению.Периодичность КАК Периодичность,
| ТрудозатратыКОформлению.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения,
| ТрудозатратыКОформлению.ВидРабот КАК ВидРабот,
| ТрудозатратыКОформлению.Количество КАК КоличествоКОформлению,
| ТрудозатратыКОформлению.Количество КАК КоличествоКОплате,
| ТрудозатратыКОформлению.Организация КАК Организация,
| ТрудозатратыКОформлению.Распоряжение КАК Распоряжение,
| ТрудозатратыКОформлению.Исполнитель КАК Исполнитель,
| ТрудозатратыКОформлению.Подразделение КАК Подразделение,
| ПартииПроизводстваБезЗаказа.ГруппаПродукции КАК ГруппаПродукции,
| ПартииПроизводстваБезЗаказа.СтатьяКалькуляции КАК СтатьяКалькуляции
| ,ЗНАЧЕНИЕ(Справочник.СпособыОтраженияЗарплатыВБухУчете.ПустаяСсылка) КАК СпособОтраженияЗарплаты
|ПОМЕСТИТЬ втТрудозатратыКОформлению
|ИЗ
| Остатки КАК ТрудозатратыКОформлению
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтПартииПроизводстваБезЗаказа КАК ПартииПроизводстваБезЗаказа
| ПО ПартииПроизводстваБезЗаказа.Распоряжение = ТрудозатратыКОформлению.Распоряжение
| И ПартииПроизводстваБезЗаказа.КодСтрокиРаспоряжения = ТрудозатратыКОформлению.КодСтрокиРаспоряжения
|;
|
|ВЫБРАТЬ
| Расценки.ВидРабот КАК ВидРабот,
| Расценки.КвалификационныйРазряд КАК КвалификационныйРазряд,
| Расценки.Расценка КАК Расценка
|ПОМЕСТИТЬ ВТРасценки
|ИЗ
| РегистрСведений.РасценкиРаботСотрудников.СрезПоследних(&КонецПериода, ВидРабот В (ВЫБРАТЬ ДД.ВидРабот ИЗ втТрудозатратыКОформлению КАК ДД)) КАК Расценки
|ИНДЕКСИРОВАТЬ ПО
| ВидРабот
|
|;
|
|ВЫБРАТЬ
| РазрядыКатегорииСотрудников.Сотрудник КАК Сотрудник,
| РазрядыКатегорииСотрудников.РазрядКатегория КАК РазрядКатегория
|ПОМЕСТИТЬ ВТРазрядыСотрудников
|ИЗ
| РегистрСведений.РазрядыКатегорииСотрудников.СрезПоследних(&ТекущаяДата, Сотрудник В (ВЫБРАТЬ ДД.Исполнитель ИЗ втТрудозатратыКОформлению КАК ДД)) КАК РазрядыКатегорииСотрудников
|ГДЕ
| НЕ РазрядыКатегорииСотрудников.РазрядКатегория = ЗНАЧЕНИЕ(Справочник.РазрядыКатегорииДолжностей.ПустаяСсылка)
|ИНДЕКСИРОВАТЬ ПО
| Сотрудник
|";
ТекстыЗапросов.Добавить(ТекстЗапроса);
УстановитьПривилегированныйРежим(Истина);
Запрос.Текст = СтрСоединить(ТекстыЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.Выполнить();
УстановитьПривилегированныйРежим(Ложь);
#КонецОбласти
#Область ТрудозатратыКОформлению
Запрос.Текст =
"ВЫБРАТЬ
| Отбор.Подразделение КАК Подразделение,
| Отбор.Бригада КАК Бригада,
| Отбор.ВидНаряда КАК ВидНаряда
|ПОМЕСТИТЬ ВТОтборПоСтруктуре
|ИЗ
| &СтруктурныйОтбор КАК Отбор
|;
|
|
|ВЫБРАТЬ
| ДД.ВидНаряда КАК ВидНаряда,
| ДД.ДатаВыполнения КАК ДатаВыполнения,
| ДД.Периодичность КАК Периодичность,
| ВЫБОР
| КОГДА ДД.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.День)
| ТОГДА НАЧАЛОПЕРИОДА(ДД.ДатаВыполнения, ДЕНЬ)
| ИНАЧЕ
| НАЧАЛОПЕРИОДА(ДД.ДатаВыполнения, МЕСЯЦ)
| КОНЕЦ КАК Период,
| ВЫБОР
| КОГДА ДД.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.День)
| ТОГДА НАЧАЛОПЕРИОДА(ДД.ДатаВыполнения, ДЕНЬ)
| КОГДА ДД.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.Месяц)
| ТОГДА НАЧАЛОПЕРИОДА(ДД.ДатаВыполнения, МЕСЯЦ)
| ИНАЧЕ
| ДД.ДатаВыполнения
| КОНЕЦ КАК НачалоПериода,
| ВЫБОР
| КОГДА ДД.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.День)
| ТОГДА КОНЕЦПЕРИОДА(ДД.ДатаВыполнения, ДЕНЬ)
| КОГДА ДД.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.Месяц)
| ТОГДА КОНЕЦПЕРИОДА(ДД.ДатаВыполнения, МЕСЯЦ)
| ИНАЧЕ
| ДД.ДатаВыполнения
| КОНЕЦ КАК КонецПериода,
| ДД.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения,
| ДД.ВидРабот КАК ВидРабот,
| ДД.КоличествоКОформлению,
| ДД.КоличествоКОплате,
| ВЫБОР
| КОГДА НЕ Расценки.Расценка ЕСТЬ NULL
| ТОГДА Расценки.Расценка * ВЫБОР
| КОГДА ВидыРабот.РасценкаЗаЧасРаботы
| ТОГДА ВидыРабот.Трудоемкость / ВидыРабот.КратностьТрудоемкости
| ИНАЧЕ 1
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК Расценка,
| ДД.КоличествоКОплате * ВЫБОР
| КОГДА НЕ Расценки.Расценка ЕСТЬ NULL
| ТОГДА Расценки.Расценка * ВЫБОР
| КОГДА ВидыРабот.РасценкаЗаЧасРаботы
| ТОГДА ВидыРабот.Трудоемкость / ВидыРабот.КратностьТрудоемкости
| ИНАЧЕ 1
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК Сумма,
| ДД.Организация КАК Организация,
| ДД.Распоряжение КАК Распоряжение,
| ДД.Исполнитель КАК Исполнитель,
| ВЫБОР
| КОГДА ДД.Исполнитель Ссылка Справочник.Бригады
| ТОГДА ДД.Исполнитель
| КОНЕЦ КАК Бригада,
| ВЫБОР
| КОГДА ДД.Исполнитель Ссылка Справочник.ФизическиеЛица
| ТОГДА ДД.Исполнитель
| КОГДА ДД.Исполнитель Ссылка Справочник.Сотрудники
| ТОГДА Сотрудники.ФизическоеЛицо
| КОНЕЦ КАК Работник,
| ВЫБОР
| КОГДА ДД.Исполнитель Ссылка Справочник.Сотрудники
| ТОГДА ДД.Исполнитель
| КОНЕЦ КАК Сотрудник,
| РазрядыСотрудников.РазрядКатегория КАК КвалификацияИсполнителя,
| ДД.Подразделение КАК Подразделение,
| ДД.ГруппаПродукции КАК ГруппаПродукции,
| ДД.СтатьяКалькуляции КАК СтатьяКалькуляции
| ,ДД.СпособОтраженияЗарплаты КАК СпособОтраженияЗарплаты
|ПОМЕСТИТЬ ТрудозатратыКОформлению
|ИЗ
| втТрудозатратыКОформлению КАК ДД
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
| ПО ДД.Исполнитель Ссылка Справочник.Сотрудники
| И ДД.Исполнитель = Сотрудники.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ВТРазрядыСотрудников КАК РазрядыСотрудников
| ПО ДД.Исполнитель = РазрядыСотрудников.Сотрудник
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыРаботСотрудников КАК ВидыРабот
| ПО ДД.ВидРабот = ВидыРабот.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ВТРасценки КАК Расценки
| ПО ДД.ВидРабот = Расценки.ВидРабот
| И НЕ ВидыРабот.РасценкаПоТарифнойСетке
| И ((НЕ &ИспользоватьРазрядыРасценокРаботСотрудников ИЛИ ВидыРабот.КвалификационныйРазряд = Расценки.КвалификационныйРазряд)
| И РазрядыСотрудников.РазрядКатегория ЕСТЬ NULL
| ИЛИ НЕ РазрядыСотрудников.РазрядКатегория ЕСТЬ NULL
| И (НЕ &ИспользоватьРазрядыРасценокРаботСотрудников ИЛИ РазрядыСотрудников.РазрядКатегория = Расценки.КвалификационныйРазряд)
| )
|
|ГДЕ
| (&БезОтбораПоПериодам ИЛИ
| ВЫБОР
| КОГДА ДД.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.День)
| ТОГДА НАЧАЛОПЕРИОДА(ДД.ДатаВыполнения, ДЕНЬ) В (&Периоды)
| КОГДА ДД.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.Месяц)
| ТОГДА НАЧАЛОПЕРИОДА(ДД.ДатаВыполнения, МЕСЯЦ) В (&Периоды)
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ)
| И (&НачалоПериода = ДАТАВРЕМЯ(1,1,1) ИЛИ НАЧАЛОПЕРИОДА(ДД.ДатаВыполнения, ДЕНЬ) >= &НачалоПериода)
| И (&КонецПериода = ДАТАВРЕМЯ(1,1,1) ИЛИ НАЧАЛОПЕРИОДА(ДД.ДатаВыполнения, ДЕНЬ) <= &КонецПериода)
| И (&БезОтбораПоВидамНарядов ИЛИ ДД.ВидНаряда В (&ВидыНарядов))
| И (&БезОтбораПоВидамНарядовИПодразделениям ИЛИ (ДД.Подразделение, ДД.ВидНаряда,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ДД.Исполнитель) = ТИП(Справочник.Бригады)
| ТОГДА ДД.Исполнитель
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Бригады.ПустаяСсылка)
| КОНЕЦ) В (
| ВЫБРАТЬ
| Отбор.Подразделение КАК Подразделение,
| Отбор.ВидНаряда КАК ВидНаряда,
| Отбор.Бригада КАК Бригада
| ИЗ ВТОтборПоСтруктуре КАК Отбор))
|
|;
|
|
|ВЫБРАТЬ
| ДД.ВидНаряда КАК ВидНаряда,
| ДД.Период КАК Период,
| МИНИМУМ(НАЧАЛОПЕРИОДА(ДД.НачалоПериода, ДЕНЬ)) КАК НачалоПериода,
| МАКСИМУМ(КОНЕЦПЕРИОДА(ДД.КонецПериода, ДЕНЬ)) КАК КонецПериода,
| ДД.Организация КАК Организация,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ДД.Исполнитель) = ТИП(Справочник.Бригады)
| ТОГДА ДД.Исполнитель
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Исполнитель,
| ДД.Подразделение КАК Подразделение
|ПОМЕСТИТЬ ПериодыКОформлению
|ИЗ
| ТрудозатратыКОформлению КАК ДД
|
|ГДЕ
| &СворачиватьРаспоряжения ИЛИ ДД.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.ПроизвольныйПериод)
|
|СГРУППИРОВАТЬ ПО
| ДД.ВидНаряда,
| ДД.Период,
| ДД.Подразделение,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ДД.Исполнитель) = ТИП(Справочник.Бригады)
| ТОГДА ДД.Исполнитель
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ,
| ДД.Организация
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДД.ВидНаряда КАК ВидНаряда,
| ДД.Период КАК Период,
| МИНИМУМ(НАЧАЛОПЕРИОДА(ДД.НачалоПериода, ДЕНЬ)) КАК НачалоПериода,
| МАКСИМУМ(КонецПериода(ДД.КонецПериода, ДЕНЬ)) КАК КонецПериода,
| ДД.Организация КАК Организация,
| ДД.Исполнитель КАК Исполнитель,
| ДД.Подразделение КАК Подразделение
|ИЗ
| ТрудозатратыКОформлению КАК ДД
|
|ГДЕ
| НЕ &СворачиватьРаспоряжения И ДД.Периодичность <> ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.ПроизвольныйПериод)
|
|СГРУППИРОВАТЬ ПО
| ДД.ВидНаряда,
| ДД.Период,
| ДД.Подразделение,
| ДД.Исполнитель,
| ДД.Организация
|;
|
|
|ВЫБРАТЬ
| ДД.ВидНаряда КАК ВидНаряда,
| ДАТАВРЕМЯ(1,1,1) КАК ДатаВыполнения,
| ДД.Период КАК Период,
| ПериодыКОформлению.НачалоПериода КАК НачалоПериода,
| ПериодыКОформлению.КонецПериода КАК КонецПериода,
| 0 КАК КодСтрокиРаспоряжения,
| ЗНАЧЕНИЕ(Справочник.ВидыРаботСотрудников.ПустаяСсылка) КАК ВидРабот,
| СУММА(ДД.КоличествоКОформлению) КАК КоличествоКОформлению,
| СУММА(ДД.КоличествоКОплате) КАК КоличествоКОплате,
| 0 КАК Расценка,
| СУММА(ДД.Сумма) КАК Сумма,
| ДД.Организация КАК Организация,
| НЕОПРЕДЕЛЕНО КАК Распоряжение,
| НЕОПРЕДЕЛЕНО КАК Исполнитель,
| ДД.Бригада КАК Бригада,
| НЕОПРЕДЕЛЕНО КАК Работник,
| НЕОПРЕДЕЛЕНО КАК Сотрудник,
| НЕОПРЕДЕЛЕНО КАК КвалификацияИсполнителя,
| ДД.Подразделение КАК Подразделение,
| ЗНАЧЕНИЕ(Справочник.ГруппыАналитическогоУчетаНоменклатуры.ПустаяСсылка) КАК ГруппаПродукции,
| НЕОПРЕДЕЛЕНО КАК СтатьяКалькуляции
| ,НЕОПРЕДЕЛЕНО КАК СпособОтраженияЗарплаты
|ПОМЕСТИТЬ втВидыРабот
|ИЗ
| ТрудозатратыКОформлению КАК ДД
| ЛЕВОЕ СОЕДИНЕНИЕ ПериодыКОформлению КАК ПериодыКОформлению
| ПО ДД.ВидНаряда = ПериодыКОформлению.ВидНаряда
| И ДД.Период = ПериодыКОформлению.Период
| И ДД.Подразделение = ПериодыКОформлению.Подразделение
| И ДД.Организация = ПериодыКОформлению.Организация
| И (ДД.Исполнитель = ПериодыКОформлению.Исполнитель ИЛИ ПериодыКОформлению.Исполнитель = НЕОПРЕДЕЛЕНО)
|
|ГДЕ
| &СворачиватьРаспоряжения
|
|СГРУППИРОВАТЬ ПО
| ДД.ВидНаряда,
| ДД.Период,
| ДД.Подразделение,
| ДД.Организация,
| ПериодыКОформлению.НачалоПериода,
| ПериодыКОформлению.КонецПериода,
| ДД.Бригада
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДД.ВидНаряда,
| ДД.ДатаВыполнения КАК ДатаВыполнения,
| ДД.Период КАК Период,
| ПериодыКОформлению.НачалоПериода КАК НачалоПериода,
| ПериодыКОформлению.КонецПериода КАК КонецПериода,
| ДД.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения,
| ДД.ВидРабот КАК ВидРабот,
| СУММА(ДД.КоличествоКОформлению) КАК КоличествоКОформлению,
| СУММА(ДД.КоличествоКОплате) КАК КоличествоКОплате,
| МАКСИМУМ(ДД.Расценка) КАК Расценка,
| СУММА(ДД.Сумма) КАК Сумма,
| ДД.Организация КАК Организация,
| ДД.Распоряжение КАК Распоряжение,
| ДД.Исполнитель КАК Исполнитель,
| ДД.Бригада КАК Бригада,
| ДД.Работник КАК Работник,
| ДД.Сотрудник КАК Сотрудник,
| ДД.КвалификацияИсполнителя КАК КвалификацияИсполнителя,
| ДД.Подразделение КАК Подразделение,
| ДД.ГруппаПродукции КАК ГруппаПродукции,
| ДД.СтатьяКалькуляции КАК СтатьяКалькуляции
| ,ДД.СпособОтраженияЗарплаты КАК СпособОтраженияЗарплаты
|ИЗ
| ТрудозатратыКОформлению КАК ДД
| ЛЕВОЕ СОЕДИНЕНИЕ ПериодыКОформлению КАК ПериодыКОформлению
| ПО ДД.ВидНаряда = ПериодыКОформлению.ВидНаряда
| И ДД.Период = ПериодыКОформлению.Период
| И ДД.Подразделение = ПериодыКОформлению.Подразделение
| И ДД.Организация = ПериодыКОформлению.Организация
| И (ДД.Исполнитель = ПериодыКОформлению.Исполнитель ИЛИ
| ПериодыКОформлению.Исполнитель = НЕОПРЕДЕЛЕНО И ДД.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьОформленияВыработкиСотрудников.ПроизвольныйПериод))
|
|ГДЕ
| НЕ &СворачиватьРаспоряжения
|
|СГРУППИРОВАТЬ ПО
| ДД.ВидНаряда,
| ДД.ДатаВыполнения,
| ДД.Период,
| ПериодыКОформлению.НачалоПериода,
| ПериодыКОформлению.КонецПериода,
| ДД.КодСтрокиРаспоряжения,
| ДД.ВидРабот,
| ДД.Организация,
| ДД.Распоряжение,
| ДД.Исполнитель,
| ДД.Бригада,
| ДД.Работник,
| ДД.Сотрудник,
| ДД.КвалификацияИсполнителя,
| ДД.ГруппаПродукции,
| ДД.Подразделение,
| ДД.СтатьяКалькуляции
| ,ДД.СпособОтраженияЗарплаты
|
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДД.ВидНаряда КАК ВидНаряда,
| ДД.Организация КАК Организация,
| ДД.НачалоПериода КАК НачалоПериода,
| ДД.КонецПериода КАК КонецПериода,
| ДД.Бригада КАК Бригада,
| ДД.Подразделение КАК Подразделение,
| ДД.Подразделение.ИспользоватьКТУ КАК ИспользоватьКТУ,
| ДД.Подразделение.ИспользоватьТарифныеСтавки КАК ИспользоватьТарифныеСтавки,
| ДД.Подразделение.ИспользоватьОтработанноеВремя КАК ИспользоватьОтработанноеВремя,
| ДД.ДатаВыполнения КАК ДатаВыполнения,
| НАЧАЛОПЕРИОДА(ВЫБОР
| КОГДА &ВключатьВПериодВыполненияРабот
| ТОГДА ДД.ДатаВыполнения
| ИНАЧЕ &ТекущаяДата
| КОНЕЦ, ДЕНЬ) КАК ДатаВыполненияРабот,
| ДД.Период КАК Период,
| ДД.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения,
| ДД.ВидРабот КАК ВидРабот,
| ДД.КоличествоКОформлению КАК КоличествоКОформлению,
| ДД.КоличествоКОплате КАК КоличествоКОплате,
| ДД.Расценка КАК Расценка,
| ДД.Сумма КАК Сумма,
| ДД.ГруппаПродукции КАК ГруппаПродукции,
| ДД.Распоряжение КАК Распоряжение,
| ДД.Исполнитель КАК Исполнитель,
| ДД.Работник КАК Работник,
| ДД.Сотрудник КАК Сотрудник,
| ДД.КвалификацияИсполнителя КАК КвалификацияИсполнителя,
| ДД.СтатьяКалькуляции КАК СтатьяКалькуляции
| ,ДД.СпособОтраженияЗарплаты КАК СпособОтраженияЗарплаты
|ПОМЕСТИТЬ ВидыРабот
|ИЗ
| втВидыРабот КАК ДД
|";
ТекстУпорядочивания =
"УПОРЯДОЧИТЬ ПО
| ДД.ВидНаряда,
| ДД.Организация,
| ДД.НачалоПериода,
| ДД.КонецПериода,
| ДД.Бригада,
| ДД.Подразделение,
| НАЧАЛОПЕРИОДА(ДД.ДатаВыполнения, ДЕНЬ),
| ДД.Исполнитель,
| ДД.Распоряжение
|";
#КонецОбласти
Если МенеджерВременныхТаблиц <> Неопределено Тогда
Запрос.Выполнить();
Возврат Истина;
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПОМЕСТИТЬ ВидыРабот", "");
Запрос.Текст = Запрос.Текст + ТекстУпорядочивания;
Возврат Запрос.Выполнить();
КонецЕсли;
КонецФункции
Процедура ЗаполнитьРаботников(Объект, Знач ДатаСостава = Неопределено) Экспорт
Объект.Работники.Очистить();
Если ДатаСостава = Неопределено Тогда
ДатаСостава = ?(ЗначениеЗаполнено(Объект.Дата), КонецДня(Объект.Дата), ТекущаяДатаСеанса());
КонецЕсли;
СоставыБригад = СоставыБригад(ДатаСостава, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Бригада));
СтруктураОтбора = Новый Структура("Бригада", Объект.Бригада);
Если СоставыБригад.НайтиСледующий(СтруктураОтбора) Тогда
Выборка = СоставыБригад.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Работники.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КонецЦикла;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьНачислениеЗарплаты") Тогда
ПоляКЗаполнению = ИнтеграцияБЗК.ПоляКадровыхДанныхСотрудниковКЗаполнению();
ПоляКЗаполнению.ТарифнаяСтавка = Объект.ИспользоватьТарифныеСтавки;
ПоляКЗаполнению.ОтработаноЧасов = Объект.ИспользоватьОтработанноеВремя;
ИнтеграцияБЗК.ЗаполнитьКадровыеДанныеСотрудников(
Объект,
"Работники",
ПоляКЗаполнению);
КонецЕсли;
РаспределитьСуммуПоУчастникам(Объект);
КонецПроцедуры
Процедура ИменаРеквизитовПоВидуНаряда(Объект, МассивВсехРеквизитов, МассивРеквизитовОперации) Экспорт
СмешанныйТипИсполнителя = СмешанныйТипИсполнителя(Объект);
МассивВсехРеквизитов = Новый Массив;
МассивВсехРеквизитов.Добавить("Бригада");
МассивВсехРеквизитов.Добавить("ГруппаНастройкаПоказателей");
МассивВсехРеквизитов.Добавить("ГруппаПериодВыполненияРабот");
МассивВсехРеквизитов.Добавить("Распределено");
МассивВсехРеквизитов.Добавить("ДатаНачала");
МассивВсехРеквизитов.Добавить("ДатаОкончания");
МассивВсехРеквизитов.Добавить("Автораспределение");
МассивВсехРеквизитов.Добавить("ЗаполнитьВидыРабот");
МассивВсехРеквизитов.Добавить("ВидыРабот.Работник");
МассивВсехРеквизитов.Добавить("ВидыРабот.Сотрудник");
МассивВсехРеквизитов.Добавить("ВидыРабот.КвалификацияИсполнителя");
МассивВсехРеквизитов.Добавить("ВидыРабот.СпособОтраженияЗарплаты");
МассивВсехРеквизитов.Добавить("ВидыРабот.ГруппаПродукции");
МассивВсехРеквизитов.Добавить("ВидыРабот.Распоряжение");
МассивВсехРеквизитов.Добавить("ВидыРабот.КодСтрокиРаспоряжения");
МассивВсехРеквизитов.Добавить("ВидыРабот.СтатьяКалькуляции");
МассивВсехРеквизитов.Добавить("Работники");
МассивВсехРеквизитов.Добавить("Работники.Работник");
МассивВсехРеквизитов.Добавить("Работники.Сотрудник");
МассивВсехРеквизитов.Добавить("СотрудникиЗаполнитьКадровыеДанные");
МассивВсехРеквизитов.Добавить("СотрудникиТарифнаяСтавка");
МассивВсехРеквизитов.Добавить("СотрудникиОтработано");
МассивРеквизитовОперации = Новый Массив;
Если Объект.ВидНаряда = Перечисления.ВидыБригадныхНарядов.Персональный Тогда
МассивРеквизитовОперации.Добавить("ГруппаПериодВыполненияРабот");
МассивРеквизитовОперации.Добавить("ДатаНачала");
МассивРеквизитовОперации.Добавить("ДатаОкончания");
МассивРеквизитовОперации.Добавить("ЗаполнитьВидыРабот");
МассивРеквизитовОперации.Добавить("ВидыРабот.Распоряжение");
МассивРеквизитовОперации.Добавить("ВидыРабот.КодСтрокиРаспоряжения");
МассивРеквизитовОперации.Добавить("ВидыРабот.КвалификацияИсполнителя");
МассивРеквизитовОперации.Добавить("ВидыРабот.СтатьяКалькуляции");
Если Объект.УчетТрудозатратВРазрезеСотрудников Тогда
МассивРеквизитовОперации.Добавить("ВидыРабот.Сотрудник");
Если СмешанныйТипИсполнителя Тогда
МассивРеквизитовОперации.Добавить("ВидыРабот.Работник");
КонецЕсли;
Иначе
МассивРеквизитовОперации.Добавить("ВидыРабот.Работник");
КонецЕсли;
ИначеЕсли Объект.ВидНаряда = Перечисления.ВидыБригадныхНарядов.Бригадный Тогда
МассивРеквизитовОперации.Добавить("Бригада");
МассивРеквизитовОперации.Добавить("ГруппаНастройкаПоказателей");
МассивРеквизитовОперации.Добавить("Распределено");
МассивРеквизитовОперации.Добавить("ГруппаПериодВыполненияРабот");
МассивРеквизитовОперации.Добавить("ДатаНачала");
МассивРеквизитовОперации.Добавить("ДатаОкончания");
МассивРеквизитовОперации.Добавить("ЗаполнитьВидыРабот");
МассивРеквизитовОперации.Добавить("ВидыРабот.Распоряжение");
МассивРеквизитовОперации.Добавить("ВидыРабот.КодСтрокиРаспоряжения");
МассивРеквизитовОперации.Добавить("ВидыРабот.СтатьяКалькуляции");
МассивРеквизитовОперации.Добавить("Работники");
МассивРеквизитовОперации.Добавить("СотрудникиЗаполнитьКадровыеДанные");
МассивРеквизитовОперации.Добавить("СотрудникиТарифнаяСтавка");
МассивРеквизитовОперации.Добавить("СотрудникиОтработано");
Если Объект.УчетТрудозатратВРазрезеСотрудников Тогда
МассивРеквизитовОперации.Добавить("Работники.Сотрудник");
Иначе
МассивРеквизитовОперации.Добавить("Работники.Работник");
КонецЕсли;
ИначеЕсли Объект.ВидНаряда = Перечисления.ВидыБригадныхНарядов.БригадныйПоЗаказу21 Тогда
МассивРеквизитовОперации.Добавить("Бригада");
МассивРеквизитовОперации.Добавить("Автораспределение");
МассивРеквизитовОперации.Добавить("ГруппаПериодВыполненияРабот");
МассивРеквизитовОперации.Добавить("ДатаНачала");
МассивРеквизитовОперации.Добавить("ДатаОкончания");
МассивРеквизитовОперации.Добавить("ЗаполнитьВидыРабот");
МассивРеквизитовОперации.Добавить("ВидыРабот.Распоряжение");
МассивРеквизитовОперации.Добавить("ВидыРабот.КодСтрокиРаспоряжения");
МассивРеквизитовОперации.Добавить("ВидыРабот.СтатьяКалькуляции");
Если Объект.Автораспределение Тогда
МассивРеквизитовОперации.Добавить("Работники");
МассивРеквизитовОперации.Добавить("Распределено");
Иначе
МассивРеквизитовОперации.Добавить("ВидыРабот.Работник");
КонецЕсли;
ИначеЕсли Объект.ВидНаряда = Перечисления.ВидыБригадныхНарядов.БригадныйБезЗаказа21 Тогда
МассивРеквизитовОперации.Добавить("Бригада");
МассивРеквизитовОперации.Добавить("Автораспределение");
МассивРеквизитовОперации.Добавить("ВидыРабот.ГруппаПродукции");
Если Объект.Автораспределение Тогда
МассивРеквизитовОперации.Добавить("Работники");
МассивРеквизитовОперации.Добавить("Распределено");
Иначе
МассивРеквизитовОперации.Добавить("ВидыРабот.Работник");
КонецЕсли;
ИначеЕсли Объект.ВидНаряда = Перечисления.ВидыБригадныхНарядов.ПрочиеРаботы Тогда
МассивРеквизитовОперации.Добавить("Бригада");
МассивРеквизитовОперации.Добавить("Автораспределение");
МассивРеквизитовОперации.Добавить("ВидыРабот.СпособОтраженияЗарплаты");
Если Объект.Автораспределение Тогда
МассивРеквизитовОперации.Добавить("Работники");
МассивРеквизитовОперации.Добавить("Распределено");
МассивРеквизитовОперации.Добавить("СотрудникиЗаполнитьКадровыеДанные");
МассивРеквизитовОперации.Добавить("СотрудникиТарифнаяСтавка");
МассивРеквизитовОперации.Добавить("СотрудникиОтработано");
Если Объект.УчетТрудозатратВРазрезеСотрудников Тогда
МассивРеквизитовОперации.Добавить("Работники.Сотрудник");
Иначе
МассивРеквизитовОперации.Добавить("Работники.Работник");
КонецЕсли;
Иначе
Если Объект.УчетТрудозатратВРазрезеСотрудников Тогда
МассивРеквизитовОперации.Добавить("ВидыРабот.Сотрудник");
Если СмешанныйТипИсполнителя Тогда
МассивРеквизитовОперации.Добавить("ВидыРабот.Работник");
КонецЕсли;
Иначе
МассивРеквизитовОперации.Добавить("ВидыРабот.Работник");
КонецЕсли;
КонецЕсли;
ИначеЕсли Объект.ВидНаряда = Перечисления.ВидыБригадныхНарядов.Ремонт Тогда
МассивРеквизитовОперации.Добавить("Бригада");
МассивРеквизитовОперации.Добавить("Автораспределение");
МассивРеквизитовОперации.Добавить("ГруппаПериодВыполненияРабот");
МассивРеквизитовОперации.Добавить("ДатаНачала");
МассивРеквизитовОперации.Добавить("ДатаОкончания");
МассивРеквизитовОперации.Добавить("ЗаполнитьВидыРабот");
МассивРеквизитовОперации.Добавить("ВидыРабот.Распоряжение");
МассивРеквизитовОперации.Добавить("ВидыРабот.КодСтрокиРаспоряжения");
МассивРеквизитовОперации.Добавить("ВидыРабот.СпособОтраженияЗарплаты");
Если Объект.Автораспределение Тогда
МассивРеквизитовОперации.Добавить("Работники");
МассивРеквизитовОперации.Добавить("Распределено");
МассивРеквизитовОперации.Добавить("СотрудникиЗаполнитьКадровыеДанные");
МассивРеквизитовОперации.Добавить("СотрудникиТарифнаяСтавка");
МассивРеквизитовОперации.Добавить("СотрудникиОтработано");
Если Объект.УчетТрудозатратВРазрезеСотрудников Тогда
МассивРеквизитовОперации.Добавить("Работники.Сотрудник");
Иначе
МассивРеквизитовОперации.Добавить("Работники.Работник");
КонецЕсли;
Иначе
Если Объект.УчетТрудозатратВРазрезеСотрудников Тогда
МассивРеквизитовОперации.Добавить("ВидыРабот.Сотрудник");
Если СмешанныйТипИсполнителя Тогда
МассивРеквизитовОперации.Добавить("ВидыРабот.Работник");
КонецЕсли;
Иначе
МассивРеквизитовОперации.Добавить("ВидыРабот.Работник");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура РаспределитьСуммуПоУчастникам(Объект) Экспорт
Если Не Объект.ИспользоватьКТУ
И Не Объект.ИспользоватьТарифныеСтавки
И Не Объект.ИспользоватьОтработанноеВремя Тогда
Возврат;
КонецЕсли;
Результат = РаспределениеВидовРаботПоСотрудникам(Объект, Ложь, Ложь, Ложь);
Результат.Свернуть("Индекс", "НормативнаяСтоимость");
Для Каждого ТекущиеДанные Из Результат Цикл
Объект.Работники[ТекущиеДанные.Индекс].Сумма = ТекущиеДанные.НормативнаяСтоимость;
КонецЦикла;
КонецПроцедуры
#Область ЗагрузкаИзФайлаВТЧ
Процедура УстановитьПараметрыЗагрузкиИзФайлаВТЧ(Параметры) Экспорт
ТипДанныхКолонки = Параметры.ТипДанныхКолонки;
ТипДанныхКолонки.Вставить("КодРаботника", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(11)));
ТипДанныхКолонки.Вставить("Работник", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(150)));
ТипДанныхКолонки.Вставить("КТУ", Новый ОписаниеТипов("Число",, Новый КвалификаторыЧисла(15, 2)));
ТипДанныхКолонки.Вставить("ТарифнаяСтавка", Новый ОписаниеТипов("Число",, Новый КвалификаторыЧисла(15, 2)));
ТипДанныхКолонки.Вставить("ОтработаноЧасов", Новый ОписаниеТипов("Число",, Новый КвалификаторыЧисла(15, 2)));
КонецПроцедуры
Процедура СопоставитьЗагружаемыеДанные(АдресЗагружаемыхДанных, АдресТаблицыСопоставления, СписокНеоднозначностей, ПолноеИмяТабличнойЧасти, ДополнительныеПараметры) Экспорт
Работники = ПолучитьИзВременногоХранилища(АдресТаблицыСопоставления);
ЗагружаемыеДанные = ПолучитьИзВременногоХранилища(АдресЗагружаемыхДанных);
ТекстЗапроса = "
|ВЫБРАТЬ
| ЗагружаемыеДанные.КодРаботника КАК КодРаботника,
| ЗагружаемыеДанные.Работник КАК Работник,
| &КТУ,
| &ТарифнаяСтавка,
| &ОтработаноЧасов,
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор
|ПОМЕСТИТЬ ВтЗагружаемыеДанные
|ИЗ
| &ЗагружаемыеДанные КАК ЗагружаемыеДанные
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор
|;
|
|
|
|ВЫБРАТЬ
| ФизЛица.Идентификатор КАК Идентификатор,
| МАКСИМУМ(ФизЛица.Работники) КАК Работники,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ФизЛица.Работники) КАК КоличествоРаботников
|ПОМЕСТИТЬ ВтДанныеРаботников
|ИЗ
| (ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| ФизЛица.Ссылка КАК Работники
| ИЗ
| ВтЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизЛица
| ПО ФизЛица.Код = ЗагружаемыеДанные.КодРаботника
|
| ГДЕ
| НЕ ЗагружаемыеДанные.КодРаботника = """"
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| ФизЛица.Ссылка КАК Работники
| ИЗ
| ВтЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизЛица
| ПО ФизЛица.Наименование = ЗагружаемыеДанные.Работник
|
| ГДЕ
| НЕ ЗагружаемыеДанные.Работник = """"
| ) КАК ФизЛица
|
|СГРУППИРОВАТЬ ПО
| ФизЛица.Идентификатор
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор,
| Работники
|;
|
|
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ЕСТЬNULL(ДанныеРаботников.КоличествоРаботников, 0) = 1
| ТОГДА ДанныеРаботников.Работники
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)
| КОНЕЦ КАК Работник,
| ЕСТЬNULL(ДанныеРаботников.КоличествоРаботников, 0) КАК КоличествоРаботников,
| &КТУ,
| &ТарифнаяСтавка,
| &ОтработаноЧасов,
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор
|ИЗ
| ВтЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДанныеРаботников КАК ДанныеРаботников
| ПО ДанныеРаботников.Идентификатор = ЗагружаемыеДанные.Идентификатор";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&КТУ,",
?(ДополнительныеПараметры.ИспользоватьКТУ, "ЗагружаемыеДанные.КТУ КАК КТУ,", ""));
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТарифнаяСтавка,",
?(ДополнительныеПараметры.ИспользоватьТарифныеСтавки, "ЗагружаемыеДанные.ТарифнаяСтавка КАК ТарифнаяСтавка,", ""));
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОтработаноЧасов,",
?(ДополнительныеПараметры.ИспользоватьОтработанноеВремя, "ЗагружаемыеДанные.ОтработаноЧасов КАК ОтработаноЧасов,", ""));
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ЗагружаемыеДанные", ЗагружаемыеДанные);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Работники.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
Если ДополнительныеПараметры.ИспользоватьКТУ И НоваяСтрока.КТУ = 0 Тогда
НоваяСтрока.КТУ = 1;
КонецЕсли;
Если Выборка.КоличествоРаботников > 1 Тогда
ЗаписьОНеоднозначности = СписокНеоднозначностей.Добавить();
ЗаписьОНеоднозначности.Идентификатор = Выборка.Идентификатор;
ЗаписьОНеоднозначности.Колонка = "Работник";
КонецЕсли;
КонецЦикла;
ПоместитьВоВременноеХранилище(Работники, АдресТаблицыСопоставления);
КонецПроцедуры
Процедура ЗаполнитьСписокНеоднозначностей(ПолноеИмяТабличнойЧасти, СписокНеоднозначностей, ИмяКолонки, ЗагружаемыеЗначенияСтрока, ДополнительныеПараметры) Экспорт
Запрос = Новый Запрос;
Если ИмяКолонки = "Работник" Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ФизЛица.Ссылка КАК Ссылка
|ИЗ
| (ВЫБРАТЬ
| ФизЛица.Ссылка КАК Ссылка
| ИЗ
| Справочник.ФизическиеЛица КАК ФизЛица
|
| ГДЕ
| НЕ &КодРаботника = """"
| И ФизЛица.Код = &КодРаботника
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ФизЛица.Ссылка КАК Ссылка
| ИЗ
| Справочник.ФизическиеЛица КАК ФизЛица
|
| ГДЕ
| НЕ &Работник = """"
| И ФизЛица.Наименование = &Работник
| ) КАК ФизЛица
|
|СГРУППИРОВАТЬ ПО
| ФизЛица.Ссылка
|";
Запрос.УстановитьПараметр("КодРаботника", ЗагружаемыеЗначенияСтрока.КодРаботника);
Запрос.УстановитьПараметр("Работник", ЗагружаемыеЗначенияСтрока.Работник);
КонецЕсли;
Если ЗначениеЗаполнено(Запрос.Текст) Тогда
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СписокНеоднозначностей.Добавить(Выборка.Ссылка);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
Если ВидФормы = "ФормаСписка" Тогда
СтандартнаяОбработка = Ложь;
Если ПравоДоступа("Добавление", Метаданные.Документы.ВыработкаСотрудников)
И (ПолучитьФункциональнуюОпцию("УправлениеПредприятием")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеПроизводством2_2")) Тогда
ВыбраннаяФорма = "ФормаСпискаДокументов";
Иначе
ВыбраннаяФорма = "ФормаСписка";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныйПрограммныйИнтерфейс
Функция ИнициализироватьХозяйственныеОперацииИДокументы(ХозяйственныеОперацииИДокументы) Экспорт
Строка = ХозяйственныеОперацииИДокументы.Добавить();
Строка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РегистрацияСдельныхРабот;
Строка.ПолноеИмяДокумента = Метаданные.Документы.ВыработкаСотрудников.ПолноеИмя();
Строка.КлючНазначенияИспользования = "ВыработкаСотрудников";
Строка.ЗаголовокРабочегоМеста = НСтр("ru = 'Выработка сотрудников'");
Строка.ПравоДоступаДобавление = Истина;
Строка.Порядок = 1;
ТаблицаЗначенийДоступно = ОбщегоНазначенияУТ.ДоступныеХозяйственныеОперацииИДокументы(
ХозяйственныеОперацииИДокументы,
Новый СписокЗначений,
Новый СписокЗначений,
"");
Возврат ТаблицаЗначенийДоступно;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Проведение
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| Реквизиты.Ссылка КАК Ссылка,
| Реквизиты.Дата КАК Дата,
| Реквизиты.Номер КАК Номер,
| КОНЕЦПЕРИОДА(Реквизиты.Дата, ДЕНЬ) КАК Период,
| Реквизиты.Месяц КАК Месяц,
| Реквизиты.Бригада КАК Бригада,
| Реквизиты.Организация КАК Организация,
| Реквизиты.Подразделение КАК Подразделение,
| Реквизиты.СуммаДокумента КАК СуммаДокумента,
| Реквизиты.Валюта КАК Валюта,
| Реквизиты.ВидНаряда КАК ВидНаряда,
| Реквизиты.Автораспределение КАК Автораспределение,
| Реквизиты.Исправление КАК Исправление
|ИЗ
| Документ.ВыработкаСотрудников КАК Реквизиты
|ГДЕ
| Реквизиты.Ссылка = &Ссылка";
Результат = Запрос.Выполнить();
Реквизиты = Результат.Выбрать();
Реквизиты.Следующий();
Для каждого Колонка Из Результат.Колонки Цикл
Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]);
КонецЦикла;
Коэффициенты = РаботаСКурсамивалютУТ.ПолучитьКоэффициентыПересчетаВалюты(
Реквизиты.Валюта, Реквизиты.Валюта, Реквизиты.Дата, Реквизиты.Организация);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуУПР", Коэффициенты.КоэффициентПересчетаВВалютуУПР);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуРегл", Коэффициенты.КоэффициентПересчетаВВалютуРегл);
ПоказательРасчетаЗарплаты = РасчетЗарплатыРасширенный.ПоказательПоИдентификатору("СдельныйЗаработок");
Запрос.УстановитьПараметр("ПоказательРасчетаЗарплаты", ПоказательРасчетаЗарплаты);
Запрос.УстановитьПараметр("ИспользоватьНачислениеЗарплаты", ПолучитьФункциональнуюОпцию("ИспользоватьНачислениеЗарплаты"));
Запрос.УстановитьПараметр("ИдентификаторНеиспользуемойФинЗаписи", ПроведениеДокументов.ИдентификаторНеиспользуемойФинЗаписи());
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Тип("ДокументСсылка.ВыработкаСотрудников")));
Запрос.УстановитьПараметр("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер));
УстаревшиеВиды = Новый Массив;
УстаревшиеВиды.Добавить(Перечисления.ВидыБригадныхНарядов.Ремонт);
УстаревшиеВиды.Добавить(Перечисления.ВидыБригадныхНарядов.ПрочиеРаботы);
УстаревшиеВиды.Добавить(Перечисления.ВидыБригадныхНарядов.БригадныйПоЗаказу21);
УстаревшиеВиды.Добавить(Перечисления.ВидыБригадныхНарядов.БригадныйБезЗаказа21);
Запрос.УстановитьПараметр("УстаревшиеВиды", УстаревшиеВиды);
КонецПроцедуры
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
ИсточникиДанных.Вставить("ВидыРабот.Распоряжение");
Возврат ИсточникиДанных;
КонецФункции
Процедура УстановитьПараметрЗапросаТаблицаВидыРаботСотрудников(Запрос, ИмяРегистра, ДетальныеЗаписи)
Если Запрос.Параметры.Свойство(ИмяРегистра) Тогда
Возврат;
КонецЕсли;
УстаревшиеНаСтатьи = Новый Массив;
УстаревшиеНаСтатьи.Добавить(Перечисления.ВидыБригадныхНарядов.Ремонт);
УстаревшиеНаСтатьи.Добавить(Перечисления.ВидыБригадныхНарядов.ПрочиеРаботы);
УстаревшиеНаПроизводство = Новый Массив;
УстаревшиеНаПроизводство.Добавить(Перечисления.ВидыБригадныхНарядов.БригадныйПоЗаказу21);
УстаревшиеНаПроизводство.Добавить(Перечисления.ВидыБригадныхНарядов.БригадныйБезЗаказа21);
Если Запрос.Параметры.ВидНаряда = Перечисления.ВидыБригадныхНарядов.Персональный
Или УстаревшиеНаСтатьи.Найти(Запрос.Параметры.ВидНаряда) <> Неопределено
Или Не Запрос.Параметры.Автораспределение И УстаревшиеНаПроизводство.Найти(Запрос.Параметры.ВидНаряда) <> Неопределено Тогда
Запрос.УстановитьПараметр(ИмяРегистра, НоваяТаблицаВидовРаботСотрудников(ДетальныеЗаписи));
Возврат;
КонецЕсли;
Запрос.УстановитьПараметр(ИмяРегистра, РаспределениеВидовРаботПоСотрудникам(Запрос.Параметры.Ссылка, ДетальныеЗаписи));
КонецПроцедуры
Функция НоваяТаблицаВидовРаботСотрудников(ДетальныеЗаписи)
Поля = Новый Массив;
Поля.Добавить("0 КАК Индекс");
Поля.Добавить("ТрудозатратыНЗП.Сотрудник КАК Работник");
Поля.Добавить("ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник");
Поля.Добавить("ТрудозатратыНЗП.Количество");
Поля.Добавить("ТрудозатратыНЗП.НормативнаяСтоимость");
Поля.Добавить("ДАТАВРЕМЯ(1,1,1) КАК ДатаВыполненияРабот");
Если ДетальныеЗаписи Тогда
Поля.Добавить("ТрудозатратыНЗП.ПартияПроизводства");
Поля.Добавить("ТрудозатратыНЗП.ЗаказНаПроизводство");
Поля.Добавить("ТрудозатратыНЗП.КодСтрокиПродукция");
Поля.Добавить("ТрудозатратыНЗП.Этап");
Поля.Добавить("ТрудозатратыНЗП.СтатьяКалькуляции");
Поля.Добавить("ТрудозатратыНЗП.ВидРабот");
Поля.Добавить("ТрудозатратыНЗП.ГруппаПродукции");
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 0
| &Поля
|ИЗ
| РегистрНакопления.ТрудозатратыНезавершенногоПроизводства КАК ТрудозатратыНЗП
|";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Поля", СтрСоединить(Поля, "," + Символы.ПС));
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Функция РаспределениеВидовРаботПоСотрудникам(Объект, ДетальныеЗаписи, ГруппировкаПоДатеВыполнения = Истина, РаспределятьКоличество = Истина, РаспределятьСумму = Истина)
Запрос = Новый Запрос;
Если ОбщегоНазначения.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
КонецЕсли;
ТекстыЗапроса = Новый Массив;
Поля = Новый Массив;
Поля.Добавить("КоличествоКОплате КАК Количество");
Поля.Добавить("Сумма КАК Сумма");
Поля.Добавить("ТаблицаДокумента.ДатаВыполненияРабот КАК ДатаВыполненияРабот");
Если ДетальныеЗаписи Тогда
Поля.Добавить("ТаблицаДокумента.Распоряжение КАК Распоряжение");
Поля.Добавить("ТаблицаДокумента.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения");
Поля.Добавить("ТаблицаДокумента.ВидРабот КАК ВидРабот");
Поля.Добавить("ТаблицаДокумента.СтатьяКалькуляции КАК СтатьяКалькуляции");
Поля.Добавить("ТаблицаДокумента.ГруппаПродукции КАК ГруппаПродукции");
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Поля
|ПОМЕСТИТЬ ВтВидыРабот
|ИЗ
| &ВидыРабот КАК ТаблицаДокумента
|ГДЕ
| &УсловиеСсылка
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Поля", СтрСоединить(Поля, "," + Символы.ПС));
Если ДетальныеЗаписи Тогда
ТекстЗапроса = ТекстЗапроса +
"ИНДЕКСИРОВАТЬ ПО
| Распоряжение,
| КодСтрокиРаспоряжения
|";
КонецЕсли;
ТекстыЗапроса.Добавить(ТекстЗапроса);
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| ТаблицаДокумента.НомерСтроки - 1 КАК Индекс,
| ТаблицаДокумента.Работник КАК Работник,
| ТаблицаДокумента.Сотрудник КАК Сотрудник,
| ВЫБОР
| КОГДА &ИспользоватьКТУ
| ТОГДА ТаблицаДокумента.КТУ
| ИНАЧЕ 1
| КОНЕЦ *
| ВЫБОР
| КОГДА &ИспользоватьТарифныеСтавки
| ТОГДА ТаблицаДокумента.ТарифнаяСтавка
| ИНАЧЕ 1
| КОНЕЦ *
| ВЫБОР
| КОГДА &ИспользоватьОтработанноеВремя
| ТОГДА ТаблицаДокумента.ОтработаноЧасов
| ИНАЧЕ 1
| КОНЕЦ *
| ВЫБОР
| КОГДА НЕ &ИспользоватьКТУ
| И НЕ &ИспользоватьТарифныеСтавки
| И НЕ &ИспользоватьОтработанноеВремя
| ТОГДА ТаблицаДокумента.Сумма
| ИНАЧЕ 1
| КОНЕЦ КАК Коэффициент
|ПОМЕСТИТЬ ВтРаботники
|ИЗ
| &Работники КАК ТаблицаДокумента
|ГДЕ
| &УсловиеСсылка
|");
Если ДетальныеЗаписи Тогда
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| ВидыРабот.Распоряжение КАК Распоряжение,
| ВидыРабот.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения,
| ВЫБОР
| КОГДА ТрудозатратыПроизводстваБезЗаказа.Ссылка.Исправление
| И ТрудозатратыПроизводстваБезЗаказа.Ссылка.ИсправлениеСохраняетПартииПроизводства
| ТОГДА ТрудозатратыПроизводстваБезЗаказа.Ссылка.ИсправляемыйДокумент
| ИНАЧЕ ТрудозатратыПроизводстваБезЗаказа.Ссылка
| КОНЕЦ КАК ДокументПартии,
| ТрудозатратыПроизводстваБезЗаказа.НомерГруппыЗатрат КАК НомерГруппыЗатрат
|ПОМЕСТИТЬ ВтДокументыПартийПроизводстваБезЗаказа
|ИЗ
| ВтВидыРабот КАК ВидыРабот
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа.Трудозатраты КАК ТрудозатратыПроизводстваБезЗаказа
| ПО ТрудозатратыПроизводстваБезЗаказа.Ссылка = ВидыРабот.Распоряжение
| И ТрудозатратыПроизводстваБезЗаказа.КодСтроки = ВидыРабот.КодСтрокиРаспоряжения
|
|СГРУППИРОВАТЬ ПО
| ВидыРабот.Распоряжение,
| ВидыРабот.КодСтрокиРаспоряжения,
| ТрудозатратыПроизводстваБезЗаказа.Ссылка,
| ТрудозатратыПроизводстваБезЗаказа.НомерГруппыЗатрат
|
|ИНДЕКСИРОВАТЬ ПО
| Распоряжение,
| КодСтрокиРаспоряжения
|");
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| ВидыРабот.Распоряжение КАК Распоряжение,
| &ДатаВыполнения КАК ДатаВыполненияРабот,
| ВидыРабот.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения,
| СпрПартииПроизводства.Ссылка КАК ПартияПроизводства
|ПОМЕСТИТЬ ВтПартииПроизводстваБезЗаказа
|ИЗ
| ВтВидыРабот КАК ВидыРабот
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументыПартийПроизводстваБезЗаказа КАК ВтДокументыПартийПроизводстваБезЗаказа
| ПО ВтДокументыПартийПроизводстваБезЗаказа.Распоряжение = ВидыРабот.Распоряжение
| И ВтДокументыПартийПроизводстваБезЗаказа.КодСтрокиРаспоряжения = ВидыРабот.КодСтрокиРаспоряжения
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПартииПроизводства КАК СпрПартииПроизводства
| ПО СпрПартииПроизводства.Документ = ВтДокументыПартийПроизводстваБезЗаказа.ДокументПартии
| И СпрПартииПроизводства.Код = ВтДокументыПартийПроизводстваБезЗаказа.НомерГруппыЗатрат
| И НЕ СпрПартииПроизводства.ПометкаУдаления
|
|СГРУППИРОВАТЬ ПО
| ВидыРабот.Распоряжение,
| &ДатаВыполнения,
| ВидыРабот.КодСтрокиРаспоряжения,
| СпрПартииПроизводства.Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Распоряжение,
| КодСтрокиРаспоряжения
|");
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| ВидыРабот.ВидРабот КАК ВидРабот,
| &ДатаВыполнения КАК ДатаВыполненияРабот,
| ВидыРабот.СтатьяКалькуляции КАК СтатьяКалькуляции,
| СУММА(ВидыРабот.Количество) КАК Количество,
| СУММА(ВидыРабот.Сумма) КАК Сумма,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ВидыРабот.Распоряжение) = ТИП(Документ.ПроизводствоБезЗаказа)
| ТОГДА ПартииПроизводстваБезЗаказа.ПартияПроизводства
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ПартииПроизводства.ПустаяСсылка)
| КОНЕЦ КАК ПартияПроизводства,
| ВидыРабот.ГруппаПродукции КАК ГруппаПродукции
|ИЗ
| ВтВидыРабот КАК ВидыРабот
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтПартииПроизводстваБезЗаказа КАК ПартииПроизводстваБезЗаказа
| ПО ПартииПроизводстваБезЗаказа.Распоряжение = ВидыРабот.Распоряжение
| И ПартииПроизводстваБезЗаказа.КодСтрокиРаспоряжения = ВидыРабот.КодСтрокиРаспоряжения
|
|СГРУППИРОВАТЬ ПО
| ВидыРабот.СтатьяКалькуляции,
| ВидыРабот.ВидРабот,
| &ДатаВыполнения,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ВидыРабот.Распоряжение) = ТИП(Документ.ПроизводствоБезЗаказа)
| ТОГДА ПартииПроизводстваБезЗаказа.ПартияПроизводства
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ПартииПроизводства.ПустаяСсылка)
| КОНЕЦ,
| ВидыРабот.ГруппаПродукции
|");
Иначе
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| &ДатаВыполнения КАК ДатаВыполненияРабот,
| СУММА(ВидыРабот.Количество) КАК Количество,
| СУММА(ВидыРабот.Сумма) КАК Сумма
|ИЗ
| ВтВидыРабот КАК ВидыРабот
|
|СГРУППИРОВАТЬ ПО
| &ДатаВыполнения
|");
КонецЕсли;
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| ВтРаботники.Индекс КАК Индекс,
| ВтРаботники.Работник КАК Работник,
| ВтРаботники.Сотрудник КАК Сотрудник,
| ВтРаботники.Коэффициент КАК Коэффициент
|ИЗ
| ВтРаботники КАК ВтРаботники
|
|УПОРЯДОЧИТЬ ПО
| Коэффициент
|");
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
УсловиеСсылка = "ИСТИНА";
Если ТипЗнч(Объект) = Тип("ДокументСсылка.ВыработкаСотрудников")
Или ТипЗнч(Объект) = Тип("Массив") Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ВидыРабот", "Документ.ВыработкаСотрудников.ВидыРабот");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Работники", "Документ.ВыработкаСотрудников.Работники");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИспользоватьКТУ", "ТаблицаДокумента.Ссылка.ИспользоватьКТУ");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИспользоватьТарифныеСтавки", "ТаблицаДокумента.Ссылка.ИспользоватьТарифныеСтавки");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИспользоватьОтработанноеВремя", "ТаблицаДокумента.Ссылка.ИспользоватьОтработанноеВремя");
УсловиеСсылка = "ТаблицаДокумента.Ссылка В (&Объекты)";
Запрос.УстановитьПараметр("Объекты", Объект);
Иначе
Запрос.УстановитьПараметр("ВидыРабот", Объект.ВидыРабот.Выгрузить());
Запрос.УстановитьПараметр("Работники", Объект.Работники.Выгрузить());
Запрос.УстановитьПараметр("ИспользоватьКТУ", Объект.ИспользоватьКТУ);
Запрос.УстановитьПараметр("ИспользоватьТарифныеСтавки", Объект.ИспользоватьТарифныеСтавки);
Запрос.УстановитьПараметр("ИспользоватьОтработанноеВремя", Объект.ИспользоватьОтработанноеВремя);
КонецЕсли;
Если ГруппировкаПоДатеВыполнения Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДатаВыполнения", "ВидыРабот.ДатаВыполненияРабот");
Иначе
Запрос.УстановитьПараметр("ДатаВыполнения", Дата(1, 1, 1));
КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСсылка", УсловиеСсылка);
УстановитьПривилегированныйРежим(Истина);
Результаты = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ВидыРабот = Результаты[Результаты.ВГраница() - 1].Выбрать();
Работники = Результаты[Результаты.ВГраница()].Выгрузить();
Коэффициенты = Работники.ВыгрузитьКолонку("Коэффициент");
Результат = НоваяТаблицаВидовРаботСотрудников(ДетальныеЗаписи);
Пока ВидыРабот.Следующий() Цикл
Если РаспределятьКоличество Тогда
Количества = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(ВидыРабот.Количество, Коэффициенты, 3);
КонецЕсли;
Если РаспределятьСумму Тогда
Суммы = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(ВидыРабот.Сумма, Коэффициенты);
КонецЕсли;
Если РаспределятьКоличество
И Не Количества = Неопределено
Или РаспределятьСумму
И Не Суммы = Неопределено Тогда
Индекс = 0;
Для Каждого Строка Из Работники Цикл
НоваяСтрока = Результат.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВидыРабот);
НоваяСтрока.Индекс = Строка.Индекс;
НоваяСтрока.Работник = Строка.Работник;
НоваяСтрока.Сотрудник = Строка.Сотрудник;
Если РаспределятьКоличество Тогда
НоваяСтрока.Количество = Количества[Индекс];
КонецЕсли;
Если РаспределятьСумму Тогда
НоваяСтрока.НормативнаяСтоимость = Суммы[Индекс];
КонецЕсли;
Индекс = Индекс + 1;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.ВыработкаСотрудников";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ТекстыЗапросаВременныхТаблиц = Новый Соответствие();
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Неопределено, ТекстыЗапроса, Неопределено);
СинонимТаблицыДокумента = "ДД";
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
#Область ВременныеТаблицы
Функция ТекстЗапросаВтВидыРаботСотрудников(Запрос, ТекстыЗапроса, ИмяРегистра, ДетальныеЗаписи)
УстановитьПараметрЗапросаТаблицаВидыРаботСотрудников(Запрос, ИмяРегистра, ДетальныеЗаписи);
Поля = Новый Массив;
Поля.Добавить("РаботыСотрудников.Работник");
Поля.Добавить("РаботыСотрудников.Сотрудник");
Поля.Добавить("РаботыСотрудников.Количество");
Поля.Добавить("РаботыСотрудников.НормативнаяСтоимость");
Поля.Добавить("РаботыСотрудников.ДатаВыполненияРабот");
Если ДетальныеЗаписи Тогда
Поля.Добавить("РаботыСотрудников.ПартияПроизводства");
Поля.Добавить("РаботыСотрудников.ЗаказНаПроизводство");
Поля.Добавить("РаботыСотрудников.КодСтрокиПродукция");
Поля.Добавить("РаботыСотрудников.Этап");
Поля.Добавить("РаботыСотрудников.СтатьяКалькуляции");
Поля.Добавить("РаботыСотрудников.ВидРабот");
Поля.Добавить("РаботыСотрудников.ГруппаПродукции");
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &ПоляВыбора
|ПОМЕСТИТЬ ИмяРегистра
|ИЗ
| &ИмяРегистра КАК РаботыСотрудников
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПоляВыбора", СтрСоединить(Поля, "," + Символы.ПС));
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ИмяРегистра", ИмяРегистра);
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтДокументыПартийПроизводстваБезЗаказа(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтДокументыПартийПроизводстваБезЗаказа";
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТрудозатраты.Распоряжение КАК Распоряжение,
| ТаблицаТрудозатраты.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения,
| ВЫБОР
| КОГДА ТрудозатратыПроизводстваБезЗаказа.Ссылка.Исправление
| И ТрудозатратыПроизводстваБезЗаказа.Ссылка.ИсправлениеСохраняетПартииПроизводства
| ТОГДА ТрудозатратыПроизводстваБезЗаказа.Ссылка.ИсправляемыйДокумент
| ИНАЧЕ ТрудозатратыПроизводстваБезЗаказа.Ссылка
| КОНЕЦ КАК ДокументПартии,
| ТрудозатратыПроизводстваБезЗаказа.НомерГруппыЗатрат КАК НомерГруппыЗатрат
|ПОМЕСТИТЬ ВтДокументыПартийПроизводстваБезЗаказа
|ИЗ
| Документ.ВыработкаСотрудников.ВидыРабот КАК ТаблицаТрудозатраты
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа.Трудозатраты КАК ТрудозатратыПроизводстваБезЗаказа
| ПО ТрудозатратыПроизводстваБезЗаказа.Ссылка = ТаблицаТрудозатраты.Распоряжение
| И ТрудозатратыПроизводстваБезЗаказа.КодСтроки = ТаблицаТрудозатраты.КодСтрокиРаспоряжения
|
|ГДЕ
| ТаблицаТрудозатраты.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТрудозатраты.Распоряжение,
| ТаблицаТрудозатраты.КодСтрокиРаспоряжения,
| ТрудозатратыПроизводстваБезЗаказа.Ссылка,
| ТрудозатратыПроизводстваБезЗаказа.НомерГруппыЗатрат
|
|ИНДЕКСИРОВАТЬ ПО
| Распоряжение,
| КодСтрокиРаспоряжения
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
Функция ТекстЗапросаТаблицаЗначенияОперативныхПоказателейРасчетаЗарплатыСотрудников(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЗначенияОперативныхПоказателейРасчетаЗарплатыСотрудников";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаСотрудников", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыРаботСотрудников(Запрос, ТекстыЗапроса, "ВтТаблицаСотрудников", Ложь);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Организация КАК Организация,
| ВЫБОР
| КОГДА &Исправление
| ТОГДА &Дата
| ИНАЧЕ Работники.ДатаВыполненияРабот
| КОНЕЦ КАК Дата,
| Работники.Работник КАК ФизическоеЛицо,
| Работники.Сотрудник КАК Сотрудник,
| ИСТИНА КАК ИспользоватьПриРасчетеПервойПоловиныМесяца,
| СУММА(Работники.НормативнаяСтоимость * &КоэффициентПересчетаВВалютуРегл) КАК Значение
|ИЗ
| ВтТаблицаСотрудников КАК Работники
|ГДЕ
| &ПоказательРасчетаЗарплаты <> НЕОПРЕДЕЛЕНО
|
|СГРУППИРОВАТЬ ПО
| Работники.ДатаВыполненияРабот,
| Работники.Работник,
| Работники.Сотрудник
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Организация КАК Организация,
| ВЫБОР
| КОГДА Выработка.Исправление
| ТОГДА Выработка.Дата
| ИНАЧЕ ВыработкаСотрудниковВидыРабот.ДатаВыполненияРабот
| КОНЕЦ,
| ВыработкаСотрудниковВидыРабот.Работник,
| ВЫБОР
| КОГДА Выработка.УчетТрудозатратВРазрезеСотрудников И &ИспользоватьНачислениеЗарплаты
| ТОГДА ВыработкаСотрудниковВидыРабот.Сотрудник
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
| КОНЕЦ КАК Сотрудник,
| ИСТИНА КАК ИспользоватьПриРасчетеПервойПоловиныМесяца,
| СУММА(ВыработкаСотрудниковВидыРабот.Сумма * &КоэффициентПересчетаВВалютуРегл)
|ИЗ
| Документ.ВыработкаСотрудников.ВидыРабот КАК ВыработкаСотрудниковВидыРабот
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыработкаСотрудников КАК Выработка
| ПО Выработка.Ссылка = ВыработкаСотрудниковВидыРабот.Ссылка
|ГДЕ
| ВыработкаСотрудниковВидыРабот.Ссылка = &Ссылка
| И &ПоказательРасчетаЗарплаты <> НЕОПРЕДЕЛЕНО
| И НЕ ВыработкаСотрудниковВидыРабот.Работник = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА Выработка.Исправление
| ТОГДА Выработка.Дата
| ИНАЧЕ ВыработкаСотрудниковВидыРабот.ДатаВыполненияРабот
| КОНЕЦ,
| ВыработкаСотрудниковВидыРабот.Работник,
| ВЫБОР
| КОГДА Выработка.УчетТрудозатратВРазрезеСотрудников И &ИспользоватьНачислениеЗарплаты
| ТОГДА ВыработкаСотрудниковВидыРабот.Сотрудник
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
| КОНЕЦ
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТрудозатратыНезавершенногоПроизводства(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТрудозатратыНезавершенногоПроизводства";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаВидыРаботСотрудников", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыРаботСотрудников(Запрос, ТекстыЗапроса, "ВтТаблицаВидыРаботСотрудников", Истина);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтДокументыПартийПроизводстваБезЗаказа", ТекстыЗапроса) Тогда
ТекстЗапросаВтДокументыПартийПроизводстваБезЗаказа(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ВЫБОР
| КОГДА &Исправление
| ТОГДА НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ)
| ИНАЧЕ &Месяц
| КОНЕЦ КАК Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Организация КАК Организация,
| &Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ВидыРабот.Распоряжение) = ТИП(Документ.ПроизводствоБезЗаказа)
| И НЕ ВидыРабот.Распоряжение = ЗНАЧЕНИЕ(Документ.ПроизводствоБезЗаказа.ПустаяСсылка)
| ТОГДА СпрПартииПроизводстваПроизводстваБезЗаказа.Ссылка
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ПартииПроизводства.ПустаяСсылка)
| КОНЕЦ КАК ПартияПроизводства,
| ВидыРабот.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ВидыРабот.ВидРабот КАК ВидРабот,
| ВидыРабот.ГруппаПродукции КАК ГруппаПродукции,
| ВидыРабот.Работник КАК Сотрудник,
| ВидыРабот.КоличествоКОплате КАК Количество,
| ВидыРабот.Сумма * &КоэффициентПересчетаВВалютуУПР КАК НормативнаяСтоимость,
| 0 КАК Стоимость,
| 0 КАК СтоимостьРегл,
| &ИдентификаторНеиспользуемойФинЗаписи КАК ИдентификаторФинЗаписи,
| НЕОПРЕДЕЛЕНО КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.ВыработкаСотрудников.ВидыРабот КАК ВидыРабот
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДокументыПартийПроизводстваБезЗаказа КАК ДокументыПартийПроизводстваБезЗаказа
| ПО ДокументыПартийПроизводстваБезЗаказа.Распоряжение = ВидыРабот.Распоряжение
| И ДокументыПартийПроизводстваБезЗаказа.КодСтрокиРаспоряжения = ВидыРабот.КодСтрокиРаспоряжения
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПартииПроизводства КАК СпрПартииПроизводстваПроизводстваБезЗаказа
| ПО СпрПартииПроизводстваПроизводстваБезЗаказа.Документ = ДокументыПартийПроизводстваБезЗаказа.ДокументПартии
| И СпрПартииПроизводстваПроизводстваБезЗаказа.Код = ДокументыПартийПроизводстваБезЗаказа.НомерГруппыЗатрат
| И НЕ СпрПартииПроизводстваПроизводстваБезЗаказа.ПометкаУдаления
|
|ГДЕ
| ВидыРабот.Ссылка = &Ссылка
| И (&ВидНаряда = ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.Персональный)
| ИЛИ &ВидНаряда В (&УстаревшиеВиды) И НЕ &Автораспределение)
| И НЕ ВидыРабот.КоличествоКОплате = 0
| И НЕ ВидыРабот.Сумма * &КоэффициентПересчетаВВалютуУПР = 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА &Исправление
| ТОГДА НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ)
| ИНАЧЕ &Месяц
| КОНЕЦ КАК Период,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Организация КАК Организация,
| &Подразделение КАК Подразделение,
| ВидыРабот.ПартияПроизводства КАК ПартияПроизводства,
| ВидыРабот.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ВидыРабот.ВидРабот КАК ВидРабот,
| ВидыРабот.ГруппаПродукции КАК ГруппаПродукции,
| ВидыРабот.Работник КАК Сотрудник,
| ВидыРабот.Количество КАК Количество,
| ВидыРабот.НормативнаяСтоимость * &КоэффициентПересчетаВВалютуУПР КАК НормативнаяСтоимость,
| 0 КАК Стоимость,
| 0 КАК СтоимостьРегл,
| &ИдентификаторНеиспользуемойФинЗаписи КАК ИдентификаторФинЗаписи,
| НЕОПРЕДЕЛЕНО КАК НастройкаХозяйственнойОперации
|ИЗ
| ВтТаблицаВидыРаботСотрудников КАК ВидыРабот
|
|ГДЕ
| НЕ ВидыРабот.Количество = 0
| И НЕ ВидыРабот.НормативнаяСтоимость * &КоэффициентПересчетаВВалютуУПР = 0
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТрудозатратыКОформлению(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТрудозатратыКОформлению";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтДокументыПартийПроизводстваБезЗаказа", ТекстыЗапроса) Тогда
ТекстЗапросаВтДокументыПартийПроизводстваБезЗаказа(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| &Организация КАК Организация,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ТаблицаТрудозатраты.Распоряжение) = ТИП(Документ.ПроизводствоБезЗаказа)
| ТОГДА СпрПартииПроизводстваПроизводстваБезЗаказа.Ссылка
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ПартииПроизводства.ПустаяСсылка)
| КОНЕЦ КАК ПартияПроизводства,
| ТаблицаТрудозатраты.Распоряжение КАК Распоряжение,
| ТаблицаТрудозатраты.ВидРабот КАК ВидРабот,
| &Подразделение КАК Подразделение,
| &Бригада КАК Исполнитель,
| ТаблицаТрудозатраты.КоличествоКОформлению КАК Количество,
| ТаблицаТрудозатраты.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения
|ИЗ
| Документ.ВыработкаСотрудников.ВидыРабот КАК ТаблицаТрудозатраты
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДокументыПартийПроизводстваБезЗаказа КАК ДокументыПартийПроизводстваБезЗаказа
| ПО ДокументыПартийПроизводстваБезЗаказа.Распоряжение = ТаблицаТрудозатраты.Распоряжение
| И ДокументыПартийПроизводстваБезЗаказа.КодСтрокиРаспоряжения = ТаблицаТрудозатраты.КодСтрокиРаспоряжения
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПартииПроизводства КАК СпрПартииПроизводстваПроизводстваБезЗаказа
| ПО СпрПартииПроизводстваПроизводстваБезЗаказа.Документ = ДокументыПартийПроизводстваБезЗаказа.ДокументПартии
| И СпрПартииПроизводстваПроизводстваБезЗаказа.Код = ДокументыПартийПроизводстваБезЗаказа.НомерГруппыЗатрат
| И НЕ СпрПартииПроизводстваПроизводстваБезЗаказа.ПометкаУдаления
|
|ГДЕ
| ТаблицаТрудозатраты.Ссылка = &Ссылка
| И &ВидНаряда В (ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.Бригадный),
| ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.Ремонт),
| ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.БригадныйПоЗаказу21))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Период КАК Период,
| &Организация КАК Организация,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ТаблицаТрудозатраты.Распоряжение) = ТИП(Документ.ПроизводствоБезЗаказа)
| ТОГДА СпрПартииПроизводстваПроизводстваБезЗаказа.Ссылка
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ПартииПроизводства.ПустаяСсылка)
| КОНЕЦ,
| ТаблицаТрудозатраты.Распоряжение КАК Распоряжение,
| ТаблицаТрудозатраты.ВидРабот КАК ВидРабот,
| &Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА Выработка.УчетТрудозатратВРазрезеСотрудников
| И ТаблицаТрудозатраты.Сотрудник <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
| ТОГДА ТаблицаТрудозатраты.Сотрудник
| КОГДА ИСТИНА
| ТОГДА ТаблицаТрудозатраты.Работник
| КОНЕЦ КАК Исполнитель,
| ТаблицаТрудозатраты.КоличествоКОформлению КАК Количество,
| ТаблицаТрудозатраты.КодСтрокиРаспоряжения КАК КодСтрокиРаспоряжения
|ИЗ
| Документ.ВыработкаСотрудников.ВидыРабот КАК ТаблицаТрудозатраты
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДокументыПартийПроизводстваБезЗаказа КАК ДокументыПартийПроизводстваБезЗаказа
| ПО ДокументыПартийПроизводстваБезЗаказа.Распоряжение = ТаблицаТрудозатраты.Распоряжение
| И ДокументыПартийПроизводстваБезЗаказа.КодСтрокиРаспоряжения = ТаблицаТрудозатраты.КодСтрокиРаспоряжения
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПартииПроизводства КАК СпрПартииПроизводстваПроизводстваБезЗаказа
| ПО СпрПартииПроизводстваПроизводстваБезЗаказа.Документ = ДокументыПартийПроизводстваБезЗаказа.ДокументПартии
| И СпрПартииПроизводстваПроизводстваБезЗаказа.Код = ДокументыПартийПроизводстваБезЗаказа.НомерГруппыЗатрат
| И НЕ СпрПартииПроизводстваПроизводстваБезЗаказа.ПометкаУдаления
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыработкаСотрудников КАК Выработка
| ПО Выработка.Ссылка = ТаблицаТрудозатраты.Ссылка
|
|ГДЕ
| ТаблицаТрудозатраты.Ссылка = &Ссылка
| И &ВидНаряда В (ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.Персональный))
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК РазделительЗаписи,
| ДД.Дата КАК ДатаДокументаИБ,
| ДД.Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| ДД.Организация КАК Организация,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РегистрацияСдельныхРабот) КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК НаправлениеДеятельности,
| ДД.Подразделение КАК Подразделение,
| ДД.Ответственный КАК Ответственный,
| ВЫРАЗИТЬ(ДД.Комментарий КАК СТРОКА(100))КАК Комментарий,
| ДД.Валюта КАК Валюта,
| ДД.СуммаДокумента КАК Сумма,
| ДД.Проведен КАК Проведен,
| ДД.ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| """" КАК Дополнительно,
| ДД.Дата КАК ДатаПервичногоДокумента,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| НЕОПРЕДЕЛЕНО КАК МестоХранения,
| ДД.Исправление КАК СторноИсправление,
| ДД.СторнируемыйДокумент КАК СторнируемыйДокумент,
| ДД.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДД.Дата КАК ДатаОтраженияВУчете,
| НЕОПРЕДЕЛЕНО КАК Приоритет
|ИЗ
| Документ.ВыработкаСотрудников КАК ДД
|ГДЕ
| ДД.Ссылка = &Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Если ПравоДоступа("Чтение", Метаданные.Документы.ВыработкаСотрудников) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ВыработкаСотрудников";
КомандаПечати.Представление = НСтр("ru = 'Выработка сотрудников'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ВыработкаСотрудников") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ВыработкаСотрудников",
Нстр("ru = 'Выработка сотрудников'"),
ПечатьВыработкиСотрудников(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры
Функция ПечатьВыработкиСотрудников(МассивОбъектов, ОбъектыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВыработкаСотрудников";
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВыработкаСотрудников.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ВыработкаСотрудников.ВидНаряда В (ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.БригадныйБезЗаказа21),
| ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.ПрочиеРаботы))
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ПоРаспоряжениям,
| ВыработкаСотрудников.Дата КАК ДатаДокумента,
| ВыработкаСотрудников.Номер КАК НомерДокумента,
| ВыработкаСотрудников.Ответственный.ФизическоеЛицо КАК Менеджер,
| ВыработкаСотрудников.Подразделение КАК Подразделение,
| ВыработкаСотрудников.Бригада КАК Бригада,
| ВыработкаСотрудников.Валюта КАК Валюта,
| ВыработкаСотрудников.Месяц КАК Месяц,
| ""Авто"" КАК СуффиксОбласти
|ИЗ
| Документ.ВыработкаСотрудников КАК ВыработкаСотрудников
|ГДЕ
| ВыработкаСотрудников.Ссылка В(&МассивОбъектов)
| И (ВыработкаСотрудников.Автораспределение ИЛИ ВыработкаСотрудников.ВидНаряда = ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.Бригадный))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВыработкаСотрудников.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ВыработкаСотрудников.ВидНаряда В (ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.БригадныйБезЗаказа21),
| ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.ПрочиеРаботы))
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ПоРаспоряжениям,
| ВыработкаСотрудников.Дата КАК ДатаДокумента,
| ВыработкаСотрудников.Номер КАК НомерДокумента,
| ВыработкаСотрудников.Ответственный.ФизическоеЛицо КАК Менеджер,
| ВыработкаСотрудников.Подразделение КАК Подразделение,
| ВыработкаСотрудников.Бригада КАК Бригада,
| ВыработкаСотрудников.Валюта КАК Валюта,
| ВыработкаСотрудников.Месяц КАК Месяц,
| ""НеАвто"" КАК СуффиксОбласти
|ИЗ
| Документ.ВыработкаСотрудников КАК ВыработкаСотрудников
|ГДЕ
| ВыработкаСотрудников.Ссылка В(&МассивОбъектов)
| И (НЕ ВыработкаСотрудников.Автораспределение И ВыработкаСотрудников.ВидНаряда В (
| ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.БригадныйПоЗаказу21),
| ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.БригадныйБезЗаказа21),
| ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.ПрочиеРаботы),
| ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.Ремонт))
| ИЛИ ВыработкаСотрудников.ВидНаряда = ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.Персональный))
|
|УПОРЯДОЧИТЬ ПО
| ВыработкаСотрудников.Ссылка
|;
|
|
|ВЫБРАТЬ
| ВыработкаСотрудниковВидыРабот.Ссылка КАК Ссылка,
| МИНИМУМ(ВыработкаСотрудниковВидыРабот.НомерСтроки) КАК НомерСтроки,
| ВыработкаСотрудниковВидыРабот.ВидРабот КАК ВидРабот,
| ВыработкаСотрудниковВидыРабот.СтатьяКалькуляции КАК СтатьяКалькуляции,
| СУММА(ВыработкаСотрудниковВидыРабот.КоличествоКОплате) КАК КоличествоКОплате,
| СУММА(ВыработкаСотрудниковВидыРабот.КоличествоКОформлению) КАК КоличествоКОформлению,
| ВыработкаСотрудниковВидыРабот.Расценка КАК Расценка,
| СУММА(ВыработкаСотрудниковВидыРабот.Сумма) КАК Сумма,
| ВыработкаСотрудниковВидыРабот.Распоряжение.Номер КАК РаспоряжениеНомер,
| ВыработкаСотрудниковВидыРабот.Распоряжение.Дата КАК РаспоряжениеДата,
| ВыработкаСотрудниковВидыРабот.ВидРабот.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА """"
| КОНЕЦ КАК ТипРаспоряжения
|ИЗ
| Документ.ВыработкаСотрудников.ВидыРабот КАК ВыработкаСотрудниковВидыРабот
|ГДЕ
| ВыработкаСотрудниковВидыРабот.Ссылка В(&МассивОбъектов)
|
|СГРУППИРОВАТЬ ПО
| ВыработкаСотрудниковВидыРабот.Ссылка,
| ВыработкаСотрудниковВидыРабот.ВидРабот,
| ВыработкаСотрудниковВидыРабот.СтатьяКалькуляции,
| ВыработкаСотрудниковВидыРабот.Расценка,
| ВыработкаСотрудниковВидыРабот.Распоряжение.Номер,
| ВыработкаСотрудниковВидыРабот.Распоряжение.Дата,
| ВыработкаСотрудниковВидыРабот.ВидРабот.ЕдиницаИзмерения,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА """"
| КОНЕЦ
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки,
| ВидРабот
|ИТОГИ
| СУММА(Сумма)
|ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| ВыработкаСотрудниковСотрудники.Работник.Код КАК СотрудникКод,
| ВыработкаСотрудниковСотрудники.Работник.Наименование КАК СотрудникФИО,
| НЕОПРЕДЕЛЕНО КАК ВидРабот,
| СУММА(ВыработкаСотрудниковСотрудники.КТУ) КАК КТУ,
| СУММА(ВыработкаСотрудниковСотрудники.ТарифнаяСтавка) КАК Ставка,
| СУММА(ВыработкаСотрудниковСотрудники.ОтработаноЧасов) КАК Время,
| СУММА(ВыработкаСотрудниковСотрудники.Сумма) КАК Сумма,
| ВыработкаСотрудниковСотрудники.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеНомер,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеДата,
| НЕОПРЕДЕЛЕНО КАК ТипРаспоряжения,
| ВыработкаСотрудниковСотрудники.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.ВыработкаСотрудников.Работники КАК ВыработкаСотрудниковСотрудники
|ГДЕ
| ВыработкаСотрудниковСотрудники.Ссылка В(&МассивОбъектов)
|
|СГРУППИРОВАТЬ ПО
| ВыработкаСотрудниковСотрудники.Работник.Код,
| ВыработкаСотрудниковСотрудники.Работник.Наименование,
| ВыработкаСотрудниковСотрудники.Ссылка,
| ВыработкаСотрудниковСотрудники.НомерСтроки
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДД.Работник.Код КАК СотрудникКод,
| ДД.Работник.Наименование КАК СотрудникФИО,
| ДД.ВидРабот КАК ВидРабот,
| 0 КАК КТУ,
| 0 КАК ТарифнаяСтавка,
| 0 КАК ОтработаноЧасов,
| СУММА(ДД.Сумма) КАК Сумма,
| ДД.Ссылка КАК Ссылка,
| ДД.Распоряжение.Номер КАК РаспоряжениеНомер,
| ДД.Распоряжение.Дата КАК РаспоряжениеДата,
| ВЫБОР
| КОГДА ДД.Распоряжение ССЫЛКА Документ.ПроизводствоБезЗаказа
| ТОГДА &СинонимПроизводстваБезЗаказа
| КОГДА ИСТИНА
| ТОГДА """"
| КОНЕЦ КАК ТипРаспоряжения,
| ДД.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.ВыработкаСотрудников.ВидыРабот КАК ДД
|ГДЕ
| ДД.Ссылка В(&МассивОбъектов)
| И (НЕ ДД.Ссылка.Автораспределение И ДД.Ссылка.ВидНаряда В (ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.БригадныйПоЗаказу21),
| ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.БригадныйБезЗаказа21),
| ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.ПрочиеРаботы),
| ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.Ремонт))
| ИЛИ ДД.Ссылка.ВидНаряда = ЗНАЧЕНИЕ(Перечисление.ВидыБригадныхНарядов.Персональный))
|
|СГРУППИРОВАТЬ ПО
| ДД.Работник.Код,
| ДД.Работник.Наименование,
| ДД.ВидРабот,
| ДД.Ссылка,
| ДД.Распоряжение.Номер,
| ДД.Распоряжение.Дата,
| ВЫБОР
| КОГДА ДД.Распоряжение ССЫЛКА Документ.ПроизводствоБезЗаказа
| ТОГДА &СинонимПроизводстваБезЗаказа
| КОГДА ИСТИНА
| ТОГДА """"
| КОНЕЦ,
| ДД.НомерСтроки
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки,
| Ссылка,
| СотрудникФИО
|ИТОГИ
| МАКСИМУМ(СотрудникФИО),
| МИНИМУМ(НомерСтроки),
| СУММА(Сумма)
|ПО
| Ссылка,
| СотрудникКод";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("СинонимПроизводстваБезЗаказа", НСтр("ru='Производство без заказа'", ОбщегоНазначения.КодОсновногоЯзыка()));
Результат = Запрос.ВыполнитьПакет();
ВыборкаПоДокументам = Результат[0].Выбрать();
ВыборкаПоВидамРабот = Результат[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаПоСотрудникам = Результат[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ПервыйДокумент = Истина;
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ВыработкаСотрудников.ПФ_MXL_ВыработкаСотрудников");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапкаБригады = Макет.ПолучитьОбласть("ШапкаБригады");
ОбластьИмяТаблицыВидовРабот = Макет.ПолучитьОбласть("ИмяТаб_ВыполненныеРаботы");
ОбластьЗаголовокТаблицыВидовРабот = Макет.ПолучитьОбласть("ЗаголовокТаб_ВыполненныеРаботы");
ОбластьСтрокаТаблицыВидовРабот = Макет.ПолучитьОбласть("Строка_ВыполненныеРаботы");
ОбластьЗаголовокТаблицыВидовРаботБезЗаказа = Макет.ПолучитьОбласть("ЗаголовокТаб_ВыполненныеРаботы_БезЗаказа");
ОбластьСтрокаТаблицыВидовРаботБезЗаказа = Макет.ПолучитьОбласть("Строка_ВыполненныеРаботы_БезЗаказа");
ОбластьИтогТаблицыВидовРабот = Макет.ПолучитьОбласть("Итог_ВыполненныеРаботы");
ОбластьИмяТаблицыСотрудники = Макет.ПолучитьОбласть("ИмяТаб_Сотрудники");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
Пока ВыборкаПоДокументам.Следующий() Цикл
Если Не ВыборкаПоВидамРабот.НайтиСледующий(Новый Структура("Ссылка",ВыборкаПоДокументам.Ссылка)) Тогда
Продолжить;
КонецЕсли;
ВыборкаПоСтрокамТЧ = ВыборкаПоВидамРабот.Выбрать();
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ОбластьШапка.Параметры.Заполнить(ВыборкаПоДокументам);
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить(
"НомерДокумента",
ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(
ВыборкаПоДокументам.НомерДокумента,
Ложь,
Истина));
ОбластьШапка.Параметры.Заполнить(ПараметрыОбласти);
ТабличныйДокумент.Вывести(ОбластьШапка);
Если ЗначениеЗаполнено(ВыборкаПоДокументам.Бригада) Тогда
ОбластьШапкаБригады.Параметры.Заполнить(ВыборкаПоДокументам);
ТабличныйДокумент.Вывести(ОбластьШапкаБригады);
КонецЕсли;
ФорматнаяСтрока = СтрШаблон("ДФ='MMMM yyyy'; L =%1", ОбщегоНазначения.КодОсновногоЯзыка());
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить("Месяц", Формат(ВыборкаПоДокументам.Месяц, ФорматнаяСтрока));
ОбластьИмяТаблицыВидовРабот.Параметры.Заполнить(ПараметрыОбласти);
ТабличныйДокумент.Вывести(ОбластьИмяТаблицыВидовРабот);
Если ВыборкаПоДокументам.ПоРаспоряжениям Тогда
ОбластьЗаголовокТаблицыВидовРабот.Параметры.Заполнить(ВыборкаПоДокументам);
ТабличныйДокумент.Вывести(ОбластьЗаголовокТаблицыВидовРабот);
Иначе
ОбластьЗаголовокТаблицыВидовРаботБезЗаказа.Параметры.Заполнить(ВыборкаПоДокументам);
ТабличныйДокумент.Вывести(ОбластьЗаголовокТаблицыВидовРаботБезЗаказа);
КонецЕсли;
Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл
Если ВыборкаПоДокументам.ПоРаспоряжениям Тогда
ОбластьСтрокаТаблицыВидовРабот.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить(
"РаспоряжениеНомер",
ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(
ВыборкаПоСтрокамТЧ.РаспоряжениеНомер,
Ложь,
Истина));
ПараметрыОбласти.Вставить("РаспоряжениеДата", Формат(ВыборкаПоСтрокамТЧ.РаспоряжениеДата, "ДЛФ=D"));
ОбластьСтрокаТаблицыВидовРабот.Параметры.Заполнить(ПараметрыОбласти);
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыВидовРабот);
Иначе
ОбластьСтрокаТаблицыВидовРаботБезЗаказа.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыВидовРаботБезЗаказа);
КонецЕсли;
КонецЦикла;
ОбластьИтогТаблицыВидовРабот.Параметры.Заполнить(ВыборкаПоВидамРабот);
ТабличныйДокумент.Вывести(ОбластьИтогТаблицыВидовРабот);
Если Не ВыборкаПоСотрудникам.НайтиСледующий(Новый Структура("Ссылка",ВыборкаПоДокументам.Ссылка)) Тогда
Продолжить;
КонецЕсли;
Если ВыборкаПоДокументам.СуффиксОбласти = "Авто" Тогда
ИмяОбластиЗаголовок = "ЗаголовокТаб_Сотрудники_Авто";
ИмяОбластиСтрока = "Строка_Сотрудники_Авто";
ИмяОбластиИтог = "Итог_Сотрудники_Авто";
Иначе
ИмяОбластиЗаголовок = "ЗаголовокТаб_Сотрудники_НеАвто";
ИмяОбластиСтрока = "Строка_Сотрудники_НеАвто";
ИмяОбластиИтог = "Итог_Сотрудники_НеАвто";
КонецЕсли;
ОбластьЗаголовокТаблицыСотрудники = Макет.ПолучитьОбласть(ИмяОбластиЗаголовок);
ОбластьСтрокаТаблицыСотрудники = Макет.ПолучитьОбласть(ИмяОбластиСтрока);
ОбластьИтогТаблицыСотрудники = Макет.ПолучитьОбласть(ИмяОбластиИтог);
ВыборкаПоСтрокамТЧ = ВыборкаПоСотрудникам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ТабличныйДокумент.Вывести(ОбластьИмяТаблицыСотрудники);
ОбластьЗаголовокТаблицыСотрудники.Параметры.Заполнить(ВыборкаПоДокументам);
ТабличныйДокумент.Вывести(ОбластьЗаголовокТаблицыСотрудники);
НомерСтроки = 1;
Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл
Выборка = ВыборкаПоСтрокамТЧ.Выбрать();
ВывестиОбластьИтогТаблицыСотрудник = Ложь;
Если ВыборкаПоДокументам.СуффиксОбласти = "НеАвто" Тогда
ОбластьИтогТаблицыСотрудник = Макет.ПолучитьОбласть("Итог_Сотрудник_НеАвто");
ОбластьИтогТаблицыСотрудник.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить("НомерСтроки", НомерСтроки);
ОбластьИтогТаблицыСотрудник.Параметры.Заполнить(ПараметрыОбласти);
НомерСтроки = НомерСтроки + 1;
ВывестиОбластьИтогТаблицыСотрудник = Истина;
КонецЕсли;
Пока Выборка.Следующий() Цикл
Если ВывестиОбластьИтогТаблицыСотрудник Тогда
ОбластьИтогТаблицыСотрудник.Параметры.Заполнить(Выборка);
Если ВыборкаПоДокументам.СуффиксОбласти = "НеАвто" Тогда
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить(
"РаспоряжениеНомер",
ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(
Выборка.РаспоряжениеНомер,
Ложь,
Истина));
ПараметрыОбласти.Вставить("РаспоряжениеДата", Формат(Выборка.РаспоряжениеДата, "ДЛФ=D"));
ОбластьИтогТаблицыСотрудник.Параметры.Заполнить(ПараметрыОбласти);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьИтогТаблицыСотрудник);
ВывестиОбластьИтогТаблицыСотрудник = Ложь;
Иначе
ОбластьСтрокаТаблицыСотрудники.Параметры.Заполнить(Выборка);
Если ВыборкаПоДокументам.СуффиксОбласти = "НеАвто" Тогда
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить(
"РаспоряжениеНомер",
ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(
Выборка.РаспоряжениеНомер,
Ложь,
Истина));
ПараметрыОбласти.Вставить("РаспоряжениеДата", Формат(Выборка.РаспоряжениеДата, "ДЛФ=D"));
ОбластьСтрокаТаблицыСотрудники.Параметры.Заполнить(ПараметрыОбласти);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыСотрудники);
КонецЕсли;
КонецЦикла;
КонецЦикла;
ОбластьИтогТаблицыСотрудники.Параметры.Заполнить(ВыборкаПоСотрудникам);
ТабличныйДокумент.Вывести(ОбластьИтогТаблицыСотрудники);
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить(
"Менеджер",
ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(
ВыборкаПоДокументам.Менеджер,
ВыборкаПоДокументам.ДатаДокумента));
ОбластьПодвал.Параметры.Заполнить(ПараметрыОбласти);
ТабличныйДокумент.Вывести(ОбластьПодвал);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции
#КонецОбласти
#Область ТекущиеДела
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
ИмяФормы = "Документ.ВыработкаСотрудников.Форма.ФормаСпискаДокументов";
ОбщиеПараметрыЗапросов = ТекущиеДелаСервер.ОбщиеПараметрыЗапросов();
Доступность =
(ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ПравоДоступа("Просмотр", Метаданные.Документы.ВыработкаСотрудников))
И ПравоДоступа("Добавление", Метаданные.Документы.ВыработкаСотрудников)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ТрудозатратыКОформлению)
И НЕ ПолучитьФункциональнуюОпцию("УправлениеТорговлей");
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КОЛИЧЕСТВО(*) КАК ВыработкаСотрудниковТрудозатратыКОформлению
|ИЗ
| (ВЫБРАТЬ
| ТрудозатратыКОформлению.ВидРабот КАК ВидРабот,
| ТрудозатратыКОформлению.Организация КАК Организация,
| ТрудозатратыКОформлению.Исполнитель КАК Исполнитель,
| ТрудозатратыКОформлению.Распоряжение КАК Распоряжение,
| ТрудозатратыКОформлению.Подразделение КАК Подразделение
| ИЗ
| РегистрНакопления.ТрудозатратыКОформлению.Остатки(, ) КАК ТрудозатратыКОформлению
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СтруктураПредприятия КАК Подразделения
| ПО Подразделения.Ссылка = ТрудозатратыКОформлению.Подразделение
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ПО Организации.Ссылка = ТрудозатратыКОформлению.Организация
|
| СГРУППИРОВАТЬ ПО
| ТрудозатратыКОформлению.Распоряжение,
| ТрудозатратыКОформлению.Исполнитель,
| ТрудозатратыКОформлению.ВидРабот,
| ТрудозатратыКОформлению.Организация,
| ТрудозатратыКОформлению.Подразделение) КАК ВложенныйЗапрос";
Результат = ТекущиеДелаСлужебный.ЧисловыеПоказателиТекущихДел(Запрос, ОбщиеПараметрыЗапросов);
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ВыработкаСотрудников";
ДелоРодитель.Представление = НСтр("ru = 'Выработка сотрудников'");
ДелоРодитель.ЕстьДела = Результат.ВыработкаСотрудниковТрудозатратыКОформлению > 0;
ДелоРодитель.Владелец = Метаданные.Подсистемы.Производство;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Бригада", Справочники.Бригады.ПустаяСсылка());
ПараметрыОтбора.Вставить("Подразделение", Справочники.СтруктураПредприятия.ПустаяСсылка());
ПараметрыОтбора.Вставить("ВидНаряда", Перечисления.ВидыБригадныхНарядов.ПустаяСсылка());
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СтруктураБыстрогоОтбора", ПараметрыОтбора);
ПараметрыФормы.Вставить("ИмяТекущейСтраницы", "ГруппаТрудозатратыКОформлению");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ВыработкаСотрудниковТрудозатратыКОформлению";
Дело.ЕстьДела = Результат.ВыработкаСотрудниковТрудозатратыКОформлению > 0;
Дело.Представление = НСтр("ru = 'Трудозатраты к оформлению'");
Дело.Количество = Результат.ВыработкаСотрудниковТрудозатратыКОформлению;
Дело.Важное = Ложь;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = ПараметрыФормы;
Дело.Владелец = "ВыработкаСотрудников";
КонецПроцедуры
#КонецОбласти
#Область ФормированиеГиперссылкиВЖурналеПроизводства
Функция СформироватьГиперссылкуКОформлению(Параметры) Экспорт
Если Не ПравоДоступа("Изменение", Метаданные.Документы.ВыработкаСотрудников) Тогда
Возврат Неопределено;
КонецЕсли;
КОформлению = ТрудозатратыКОформлению(Параметры);
Выборка = КОформлению.Выбрать();
ТекстГиперссылки = НСтр("ru = 'Выработка сотрудников'");
Если Не Выборка.Следующий() Тогда
Возврат Новый ФорматированнаяСтрока(ТекстГиперссылки,,ЦветаСтиля.НезаполненноеПолеТаблицы,,
"Документ.ВыработкаСотрудников.Форма.ФормаСпискаДокументов");
Иначе
Возврат Новый ФорматированнаяСтрока(ТекстГиперссылки,,,,
"Документ.ВыработкаСотрудников.Форма.ФормаСпискаДокументов");
КонецЕсли;
КонецФункции
#КонецОбласти
#Область Прочее
Процедура ЗаписатьНовыйДокумент(ТекущийДокумент, СписокДокументов, СписокОшибок)
Если ТекущийДокумент = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьРаботников(ТекущийДокумент);
ТекущийДокумент.Записать(РежимЗаписиДокумента.Запись);
Если ТекущийДокумент.ПроверитьЗаполнение() Тогда
Попытка
ТекущийДокумент.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ДобавитьОшибкуАвтоматическогоСоздания(ТекущийДокумент, СписокОшибок, "Проведение", ОписаниеОшибки());
КонецПопытки;
Иначе
ДобавитьОшибкуАвтоматическогоСоздания(ТекущийДокумент, СписокОшибок, "Заполнение");
КонецЕсли;
Для Каждого ТекущееСообщение Из ПолучитьСообщенияПользователю(Истина) Цикл
СтруктураОшибки = Новый Структура();
СтруктураОшибки.Вставить("Организация", ТекущийДокумент.Организация);
СтруктураОшибки.Вставить("Документ", ТекущийДокумент.Ссылка);
СтруктураОшибки.Вставить("ТекстОшибки", ТекущееСообщение.Текст);
СтруктураОшибки.Вставить("ТипОшибки", "СообщенияПользователю");
СписокОшибок.Добавить(СтруктураОшибки);
КонецЦикла;
СписокДокументов.Добавить(ТекущийДокумент.Ссылка);
КонецПроцедуры
Процедура ДобавитьОшибкуАвтоматическогоСоздания(Документ, СписокОшибок, ТипОшибки, ОписаниеОшибки = "")
Если ТипОшибки = "Заполнение" Тогда
Если Документ.ВидНаряда = Перечисления.ВидыБригадныхНарядов.Персональный Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка заполнения персонального наряда за период с %1 по %2 по организации ""%3"" и подразделению ""%4"".'", ОбщегоНазначения.КодОсновногоЯзыка()),
Формат(НачалоМесяца(Документ.Месяц),"ДЛФ=dd.MM.yyyy"),
Формат(КонецМесяца(Документ.Месяц),"ДЛФ=dd.MM.yyyy"),
Документ.Организация,
Документ.Подразделение);
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка заполнения бригадного наряда за период с %1 по %2 по организации ""%3"", бригаде ""%4"" и подразделению ""%5"".'", ОбщегоНазначения.КодОсновногоЯзыка()),
Формат(НачалоМесяца(Документ.Месяц),"ДЛФ=dd.MM.yyyy"),
Формат(КонецМесяца(Документ.Месяц),"ДЛФ=dd.MM.yyyy"),
Документ.Организация,
Документ.Бригада,
Документ.Подразделение);
КонецЕсли;
ИначеЕсли ТипОшибки = "Проведение" Тогда
Если Документ.ВидНаряда = Перечисления.ВидыБригадныхНарядов.Персональный Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка проведения персонального наряда за период с %1 по %2 по организации ""%3"" и подразделению ""%4"": %5.'", ОбщегоНазначения.КодОсновногоЯзыка()),
Формат(НачалоМесяца(Документ.Месяц),"ДЛФ=dd.MM.yyyy"),
Формат(КонецМесяца(Документ.Месяц),"ДЛФ=dd.MM.yyyy"),
Документ.Организация,
Документ.Подразделение,
ОписаниеОшибки);
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка проведения бригадного наряда за период с %1 по %2 по организации ""%3"", бригаде ""%4"" и подразделению ""%5"": %6.'", ОбщегоНазначения.КодОсновногоЯзыка()),
Формат(НачалоМесяца(Документ.Месяц),"ДЛФ=dd.MM.yyyy"),
Формат(КонецМесяца(Документ.Месяц),"ДЛФ=dd.MM.yyyy"),
Документ.Организация,
Документ.Бригада,
Документ.Подразделение,
ОписаниеОшибки);
КонецЕсли;
ИначеЕсли ТипОшибки = "УдалениеДокумента" Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось удалить документ %1 по причине: %2.'", ОбщегоНазначения.КодОсновногоЯзыка()),
Документ.Ссылка,
ОписаниеОшибки);
КонецЕсли;
СтруктураОшибки = Новый Структура();
СтруктураОшибки.Вставить("Организация", Документ.Организация);
СтруктураОшибки.Вставить("Документ", Документ.Ссылка);
СтруктураОшибки.Вставить("ТекстОшибки", ТекстОшибки);
СтруктураОшибки.Вставить("ТипОшибки", ТипОшибки);
СписокОшибок.Добавить(СтруктураОшибки);
КонецПроцедуры
Функция СоставыБригад(Период, Бригады)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| МАКСИМУМ(ВыработкаСотрудников.Дата) КАК Дата,
| ВыработкаСотрудников.Бригада КАК Бригада
|ПОМЕСТИТЬ втДатыАктуальности
|ИЗ
| Документ.ВыработкаСотрудников КАК ВыработкаСотрудников
|ГДЕ
| ВыработкаСотрудников.Дата <= &Период
| И ВыработкаСотрудников.Бригада В(&Бригады)
| И ВыработкаСотрудников.Проведен
|
|СГРУППИРОВАТЬ ПО
| ВыработкаСотрудников.Бригада
|;
|
|
|ВЫБРАТЬ
| МАКСИМУМ(ВыработкаСотрудников.Ссылка) КАК Ссылка,
| втДатыАктуальности.Бригада КАК Бригада
|ПОМЕСТИТЬ ДокументыСостава
|ИЗ
| втДатыАктуальности КАК втДатыАктуальности
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВыработкаСотрудников КАК ВыработкаСотрудников
| ПО втДатыАктуальности.Дата = ВыработкаСотрудников.Дата
| И втДатыАктуальности.Бригада = ВыработкаСотрудников.Бригада
|ГДЕ
| ВыработкаСотрудников.Проведен
|
|СГРУППИРОВАТЬ ПО
| втДатыАктуальности.Бригада
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДокументыСостава.Бригада КАК Бригада,
| Работники.Работник КАК Работник,
| Работники.Сотрудник КАК Сотрудник,
| СУММА(Работники.КТУ) КАК КТУ
|ИЗ
| ДокументыСостава КАК ДокументыСостава
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВыработкаСотрудников.Работники КАК Работники
| ПО ДокументыСостава.Ссылка = Работники.Ссылка
|
|СГРУППИРОВАТЬ ПО
| ДокументыСостава.Бригада,
| Работники.Работник,
| Работники.Сотрудник
|ИТОГИ ПО
| Бригада";
Запрос.УстановитьПараметр("Бригады", Бригады);
Запрос.УстановитьПараметр("Период", Период);
Результат = Запрос.Выполнить();
Возврат Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
КонецФункции
Функция СмешанныйТипИсполнителя(Объект)
Если НЕ Объект.УчетТрудозатратВРазрезеСотрудников Тогда
Возврат Ложь;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ИСТИНА
|ИЗ
| Документ.ПроизводствоБезЗаказа КАК РеквизитыДокумента
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Константы КАК Константы
| ПО ИСТИНА
|
|ГДЕ
| РеквизитыДокумента.Ссылка В(&Распоряжения)
| И РеквизитыДокумента.Дата < Константы.ДатаНачалаВеденияУчетаТрудозатратПоСотрудникам
|";
Запрос.УстановитьПараметр("Распоряжения", Объект.ВидыРабот.Выгрузить(, "Распоряжение").ВыгрузитьКолонку("Распоряжение"));
Возврат Не Запрос.Выполнить().Пустой();
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли