Попробую пояснить. з таблиці значень в форму заносяьтся дані, і в залежності від дати створення документу потрібно або всіх працівників вивести, або деякіх, це все здійснюється. але при виборці деякіх працівників не заповнюється колонки з значеннями. Додаю код процедури "заполнить", яка заповнює форму.
Процедура Заполнить3()
Если ТекущийДокумент().Проведен()=1 Тогда Предупреждение("Скасуйте проведення"); Возврат; КонецЕсли;
Если КоличествоСтрок()<>0 тогда
Если Вопрос("Будемо робити розрахунок по новому?","Да+Нет")="Нет" Тогда Возврат; КонецЕсли;
КонецЕсли;
УдалитьСтроки();
ТЗрег = СоздатьОбъект("ТаблицаЗначений");
ТЗрег.Очистить();
ТЗрег.НоваяКолонка("Сотрудник","Справочник.Сотрудники");
ТЗрег.НоваяКолонка("Должность","Справочник.Должности");
ТЗрег.НоваяКолонка("День" ,"Дата");
ТЗрег.НоваяКолонка("Маршрут" ,"Справочник.Маршруты");
ТЗрег.НоваяКолонка("Тариф" ,"Справочник.Тарифы");
ТЗрег.НоваяКолонка("Машина" ,"Справочник.Машины");
ТЗрег.НоваяКолонка("ТипМашины","Справочник.ТипыМашин");
ТЗрег.НоваяКолонка("ОтработаноДней" ,"Число",15,0);
ТЗрег.НоваяКолонка("НевиходДней" ,"Число",15,0);
ТЗрег.НоваяКолонка("ВиходнихДней" ,"Число",15,0);
ТЗрег.НоваяКолонка("РаботаУвиходной" ,"Число",15,0);
ТЗрег.НоваяКолонка("ОтработаноВремени","Число",15,0);
Рег = СоздатьОбъект("Регистр.Время");
Если ПолучитьДатуТА()>ДатаДок тогда
РассчитатьРегистрыПо(ДатаДок);
КонецЕсли;
ТекстЗапроса="
|Период с {НачМесяца(ДатаДок)} по (ДатаДок);
|РегСотрудник = Регистр.Время.Сотрудник;
|РегУчетноеСобытие = Регистр.Время.УчетноеСобытие;
|РегВремяУчета = Регистр.Время.ВремяУчета;
|РегВремяПоДням = Регистр.Время.ВремяПоДням;
|РегВремяПоВремениСуток = Регистр.Время.ВремяПоВремениСуток;
|РегМаршрут = Регистр.Время.Маршрут;
|РегТариф = Регистр.Время.Тариф;
|РегМашина = Регистр.Время.Машина;
|РегДатаДок = Регистр.Время.ДатаДок;
|РегМинутыВыб = Регистр.Время.Минуты;
|Условие(РегВремяПоДням.Выбран()=1);
|Группировка РегСотрудник Без Групп;
|Группировка РегУчетноеСобытие Без Групп;
|Группировка РегВремяУчета;
|Группировка РегВремяПоДням;
|Группировка РегВремяПоВремениСуток;
|Группировка РегМаршрут Без Групп;
|Группировка РегТариф Без Групп;
|Группировка РегМашина Без Групп;
|Группировка РегДатаДок;
|Функция Сума = Сумма(РегМинутыВыб);
|";
Запрос=СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса)=0 тогда Предупреждение("Запит не виконано!"); Возврат; КонецЕсли;
Рег = СоздатьОбъект("Регистр.Невыходы");
Если ПолучитьДатуТА()>ДатаДок тогда
РассчитатьРегистрыПо(ДатаДок);
КонецЕсли;
ТекстЗапросаНевиход="
|Период с {НачМесяца(ДатаДок)} по (ДатаДок);
|РегСотрудник = Регистр.Невыходы.Сотрудник;
|РегМаршрут = Регистр.Невыходы.Маршрут;
|РегТариф = Регистр.Невыходы.Тариф;
|РегПричинаНевыхода = Регистр.Невыходы.ПричинаНевыхода;
|РегДатаДок = Регистр.Невыходы.ДатаДок;
|РегМинутыВыб = Регистр.Невыходы.Минуты;
|РегФл = Регистр.Невыходы.Фл;
|Группировка РегСотрудник Без Групп;
|Группировка РегМаршрут Без Групп;
|Группировка РегТариф Без Групп;
|Группировка РегПричинаНевыхода Без Групп;
|Группировка РегДатаДок;
|Функция Сума = Сумма(РегМинутыВыб);
|Функция СумаФл = Сумма(РегФл);
|";
ЗапросНевиход=СоздатьОбъект("Запрос");
Если ЗапросНевиход.Выполнить(ТекстЗапросаНевиход)=0 тогда Предупреждение("Запит не виконано!"); Возврат; КонецЕсли;
Пока Запрос.Группировка("РегСотрудник")=1 Цикл
если (датадок<>конмесяца(датадок)) и (датадок=запрос.регсотрудник.датаувольнения) тогда
Пока Запрос.Группировка("РегУчетноеСобытие")=1 Цикл
Пока Запрос.Группировка("РегВремяУчета")=1 Цикл
Пока Запрос.Группировка("РегВремяПоДням")=1 Цикл
Пока Запрос.Группировка("РегВремяПоВремениСуток")=1 Цикл
Пока Запрос.Группировка("РегМаршрут")=1 Цикл
Пока Запрос.Группировка("РегТариф")=1 Цикл
Пока Запрос.Группировка("РегМашина")=1 Цикл
Пока Запрос.Группировка("РегДатаДок")=1 Цикл
ТЗрег.НоваяСтрока();
ТЗрег.Сотрудник = Запрос.РегСотрудник;
ТЗрег.Должность = Запрос.РегСотрудник.Должность.Получить(Запрос.РегДатаДок);
ТЗрег.Маршрут = Запрос.РегМаршрут;
ТЗрег.Тариф = Запрос.РегТариф;
ТЗрег.Машина = Запрос.РегМашина;
Если Запрос.РегМашина.Выбран()=1 Тогда ТЗрег.ТипМашины = Запрос.РегМашина.ТипМашины; КонецЕсли;
ТЗрег.День = Запрос.РегДатаДок;
Состояние("Робота "+Запрос.РегДатаДок+" "+Запрос.РегСотрудник);
ТЗрег.ОтработаноВремени = Запрос.Сума;
ТЗрег.ОтработаноДней = 1;
Если Запрос.РегВремяПоДням=Перечисление.ВремяПоДням.Выходные Тогда
ТЗрег.РаботаУвиходной = Запрос.Сума;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
иначе
Если (датадок=конмесяца(датадок)) и ((датадок<запрос.регсотрудник.датаувольнения) или (датадок=запрос.регсотрудник.датаувольнения) или (Запрос.регсотрудник.датаувольнения=дата(0))) тогда
Пока Запрос.Группировка("РегУчетноеСобытие")=1 Цикл
Пока Запрос.Группировка("РегВремяУчета")=1 Цикл
Пока Запрос.Группировка("РегВремяПоДням")=1 Цикл
Пока Запрос.Группировка("РегВремяПоВремениСуток")=1 Цикл
Пока Запрос.Группировка("РегМаршрут")=1 Цикл
Пока Запрос.Группировка("РегТариф")=1 Цикл
Пока Запрос.Группировка("РегМашина")=1 Цикл
Пока Запрос.Группировка("РегДатаДок")=1 Цикл
ТЗрег.НоваяСтрока();
ТЗрег.Сотрудник = Запрос.РегСотрудник;
ТЗрег.Должность = Запрос.РегСотрудник.Должность.Получить(Запрос.РегДатаДок);
ТЗрег.Маршрут = Запрос.РегМаршрут;
ТЗрег.Тариф = Запрос.РегТариф;
ТЗрег.Машина = Запрос.РегМашина;
Если Запрос.РегМашина.Выбран()=1 Тогда ТЗрег.ТипМашины = Запрос.РегМашина.ТипМашины; КонецЕсли;
ТЗрег.День = Запрос.РегДатаДок;
Состояние("Робота "+Запрос.РегДатаДок+" "+Запрос.РегСотрудник);
ТЗрег.ОтработаноВремени = Запрос.Сума;
ТЗрег.ОтработаноДней = 1;
Если Запрос.РегВремяПоДням=Перечисление.ВремяПоДням.Выходные Тогда
ТЗрег.РаботаУвиходной = Запрос.Сума;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
конецесли;
конецесли;
КонецЦикла;
Пока ЗапросНевиход.Группировка("РегСотрудник")=1 Цикл
если (датадок<>конмесяца(датадок)) и (датадок=запросневиход.регсотрудник.датаувольнения) тогда
Пока ЗапросНевиход.Группировка("РегМаршрут")=1 Цикл
Пока ЗапросНевиход.Группировка("РегТариф")=1 Цикл
Пока ЗапросНевиход.Группировка("РегПричинаНевыхода")=1 Цикл
Пока ЗапросНевиход.Группировка("РегДатаДок")=1 Цикл
ТЗрег.НоваяСтрока();
ТЗрег.Сотрудник = ЗапросНевиход.РегСотрудник;
ТЗрег.Должность = ЗапросНевиход.РегСотрудник.Должность.Получить(ЗапросНевиход.РегДатаДок);
ТЗрег.Маршрут = ЗапросНевиход.РегМаршрут;
ТЗрег.Тариф = ЗапросНевиход.РегТариф;
ТЗрег.День = ЗапросНевиход.РегДатаДок;
Состояние("Невихiд "+ЗапросНевиход.РегДатаДок+" "+ЗапросНевиход.РегСотрудник);
ТЗрег.НевиходДней = 1;
Если (ЗапросНевиход.РегПричинаНевыхода.Код="1") или (ЗапросНевиход.РегПричинаНевыхода.Код="10") Тогда // виходной или Прогули
ТЗрег.ВиходнихДней = 1;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
иначе
Если (датадок=конмесяца(датадок)) и ((датадок<запрос.регсотрудник.датаувольнения) или (датадок=запрос.регсотрудник.датаувольнения) или (Запрос.регсотрудник.датаувольнения=дата(0))) тогда
Пока ЗапросНевиход.Группировка("РегМаршрут")=1 Цикл
Пока ЗапросНевиход.Группировка("РегТариф")=1 Цикл
Пока ЗапросНевиход.Группировка("РегПричинаНевыхода")=1 Цикл
Пока ЗапросНевиход.Группировка("РегДатаДок")=1 Цикл
ТЗрег.НоваяСтрока();
ТЗрег.Сотрудник = ЗапросНевиход.РегСотрудник;
ТЗрег.Должность = ЗапросНевиход.РегСотрудник.Должность.Получить(ЗапросНевиход.РегДатаДок);
ТЗрег.Маршрут = ЗапросНевиход.РегМаршрут;
ТЗрег.Тариф = ЗапросНевиход.РегТариф;
ТЗрег.День = ЗапросНевиход.РегДатаДок;
Состояние("Невихiд "+ЗапросНевиход.РегДатаДок+" "+ЗапросНевиход.РегСотрудник);
ТЗрег.НевиходДней = 1;
Если (ЗапросНевиход.РегПричинаНевыхода.Код="1") или (ЗапросНевиход.РегПричинаНевыхода.Код="10") Тогда // виходной или Прогули
ТЗрег.ВиходнихДней = 1;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
конецесли;
конецесли;
КонецЦикла;
ТЗрег.Свернуть("Сотрудник,Должность,Маршрут,Тариф,Машина,ТипМашины,День","ОтработаноДней,НевиходДней,ВиходнихДней,РаботаУвиходной,ОтработаноВремени");
ТЗрег.Сортировать("+Сотрудник,+Должность,+Маршрут,+Тариф,+Машина,+День");
ТЗдень = СоздатьОбъект("ТаблицаЗначений");
ТЗдень.Очистить();
ТЗрег.Выгрузить(ТЗдень);
ТЗдень.Свернуть("Сотрудник,Должность,День","ОтработаноДней,НевиходДней,ВиходнихДней,РаботаУвиходной,ОтработаноВремени");
ТЗдень.ВыбратьСтроки();
Пока ТЗдень.ПолучитьСтроку()=1 Цикл
Состояние("7 - 1. "+Окр(100/7*ТЗдень.НомерСтроки/ТЗдень.КоличествоСтрок(),2)+"%");
Если ТЗдень.ПолучитьЗначение(ТЗдень.НомерСтроки,"ОтработаноДней")>1 Тогда ТЗдень.УстановитьЗначение(ТЗдень.НомерСтроки,"ОтработаноДней",1); КонецЕсли;
Если ТЗдень.ПолучитьЗначение(ТЗдень.НомерСтроки,"НевиходДней")>1 Тогда ТЗдень.УстановитьЗначение(ТЗдень.НомерСтроки,"НевиходДней",1);
Если ТЗдень.ПолучитьЗначение(ТЗдень.НомерСтроки,"ВиходнихДней")>0 Тогда ТЗдень.УстановитьЗначение(ТЗдень.НомерСтроки,"ВиходнихДней",0); КонецЕсли;
КонецЕсли;
КонецЦикла;
ТЗсверхурочные = СоздатьОбъект("ТаблицаЗначений");
ТЗсверхурочные.Очистить();
ТЗдень.Выгрузить(ТЗсверхурочные);
ТЗсверхурочные.Свернуть("Сотрудник,Должность","ОтработаноДней,НевиходДней,ВиходнихДней,РаботаУвиходной,ОтработаноВремени");
ТЗсверхурочные.Сортировать("+Сотрудник,+Должность");
ТЗсверхурочные.ВставитьКолонку("СверхУрочные",,"Число",15,0);
ТЗсверхурочные.ВставитьКолонку("РаботаУвиходнойОплата",,"Число",15,0);
ТЗмашина = СоздатьОбъект("ТаблицаЗначений");
ТЗмашина.Очистить();
ТЗрег.Выгрузить(ТЗмашина);
ТЗмашина.Свернуть("Сотрудник,Должность,Маршрут,Тариф,Машина,ТипМашины","ОтработаноДней,НевиходДней,ВиходнихДней,РаботаУвиходной,ОтработаноВремени");
ТЗмашина.Сортировать("+Сотрудник,+Должность,-ТипМашины,+Тариф,-ОтработаноВремени,+Машина,+Маршрут");
к = 0; КолСтрТЗсверхурочные = ТЗсверхурочные.КоличествоСтрок();
Для сч=1 по КолСтрТЗсверхурочные Цикл
Состояние("7 - 2. "+(Окр(100/7,2)+Окр(100/7*сч/(КолСтрТЗсверхурочные-к),2))+"%");
ОтработаноВремени = ТЗсверхурочные.ПолучитьЗначение(сч-к,"ОтработаноВремени");
ОтработаноДней = ТЗсверхурочные.ПолучитьЗначение(сч-к,"ОтработаноДней");
ВиходнихДней = ТЗсверхурочные.ПолучитьЗначение(сч-к,"ВиходнихДней");
РаботаУвиходной = ТЗсверхурочные.ПолучитьЗначение(сч-к,"РаботаУвиходной");
Сверхурочние = ОтработаноВремени - Константа.НормаМинут.Получить(ДатаДок)/ДатаЧисло(ДатаДок)*(ОтработаноДней+ВиходнихДней);
Если (Сверхурочние-РаботаУвиходной>0) или (РаботаУвиходной>0) Тогда
//Если (Сверхурочние>0) или (ТЗсверхурочные.ПолучитьЗначение(сч-к,"РаботаУвиходной")>0) Тогда
Если Сверхурочние-РаботаУвиходной>0 Тогда
ТЗсверхурочные.УстановитьЗначение(сч-к,"СверхУрочные",Сверхурочние-РаботаУвиходной);
Если РаботаУвиходной>0 Тогда
ТЗсверхурочные.УстановитьЗначение(сч-к,"РаботаУвиходнойОплата",РаботаУвиходной);
КонецЕсли;
Иначе
Если Сверхурочние>0 Тогда
ТЗсверхурочные.УстановитьЗначение(сч-к,"РаботаУвиходнойОплата",Сверхурочние);
КонецЕсли;
КонецЕсли;
Иначе
кМашина = 0;
Для счМашина=1 по ТЗмашина.КоличествоСтрок() Цикл
Если ТЗсверхурочные.ПолучитьЗначение(сч-к,"Сотрудник")=ТЗмашина.ПолучитьЗначение(счМашина-кМашина,"Сотрудник") Тогда
Если ТЗсверхурочные.ПолучитьЗначение(сч-к,"Должность")=ТЗмашина.ПолучитьЗначение(счМашина-кМашина,"Должность") Тогда
ТЗмашина.УдалитьСтроку(счМашина-кМашина); кМашина = кМашина+1;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТЗсверхурочные.УдалитьСтроку(сч-к); к = к+1;
КонецЕсли;
КонецЦикла;
кМашина = 0; КолСтрТЗмашина = ТЗмашина.КоличествоСтрок();
Для счМашина=1 по КолСтрТЗмашина Цикл
Состояние("7 - 3. "+(Окр(100/7,2)+Окр(100/7,2)+Окр(100/7*счМашина/(КолСтрТЗмашина-кМашина),2))+"%");
Если (ТЗмашина.ПолучитьЗначение(счМашина-кМашина,"ОтработаноДней")=0) и (ТЗмашина.ПолучитьЗначение(счМашина-кМашина,"ОтработаноВремени")=0) Тогда
ТЗмашина.УдалитьСтроку(счМашина-кМашина); кМашина = кМашина+1;
КонецЕсли;
КонецЦикла;
Сотр_1 = "";
Должность_1 = "";
Маршрут_1 = "";
Тариф_1 = "";
Машина_1 = "";
ТипМашины_1 = ""; КолСтрТЗмашина = ТЗмашина.КоличествоСтрок();
сообщить(" "+ТЗмашина.КоличествоСтрок());
ТЗмашина.выбратьстроку();
Для сч=1 по КолСтрТЗмашина Цикл
Состояние("7 - 4. "+(Окр(100/7,2)+Окр(100/7,2)+Окр(100/7,2)+Окр(100/7*сч/(КолСтрТЗмашина),2))+"%");
Если СокрЛП(ТЗмашина.ПолучитьЗначение(сч,"ТипМашины"))<>"" Тогда
Если Сотр_1<>ТЗмашина.ПолучитьЗначение(сч,"Сотрудник") Тогда
Сотр_1 = ТЗмашина.ПолучитьЗначение(сч,"Сотрудник");
Должность_1 = ТЗмашина.ПолучитьЗначение(сч,"Должность");
Тариф_1 = ТЗмашина.ПолучитьЗначение(сч,"Тариф");
ТипМашины_1 = ТЗмашина.ПолучитьЗначение(сч,"ТипМашины");
Машина_1 = ТЗмашина.ПолучитьЗначение(сч,"Машина");
Маршрут_1 = ТЗмашина.ПолучитьЗначение(сч,"Маршрут");
Иначе
Если Должность_1<>ТЗмашина.ПолучитьЗначение(сч,"Должность") Тогда
Должность_1 = ТЗмашина.ПолучитьЗначение(сч,"Должность");
Тариф_1 = ТЗмашина.ПолучитьЗначение(сч,"Тариф");
ТипМашины_1 = ТЗмашина.ПолучитьЗначение(сч,"ТипМашины");
Машина_1 = ТЗмашина.ПолучитьЗначение(сч,"Машина");
Маршрут_1 = ТЗмашина.ПолучитьЗначение(сч,"Маршрут");
Иначе
Если Тариф_1<>ТЗмашина.ПолучитьЗначение(сч,"Тариф") Тогда
Тариф_1 = ТЗмашина.ПолучитьЗначение(сч,"Тариф");
ТипМашины_1 = ТЗмашина.ПолучитьЗначение(сч,"ТипМашины");
Машина_1 = ТЗмашина.ПолучитьЗначение(сч,"Машина");
Маршрут_1 = ТЗмашина.ПолучитьЗначение(сч,"Маршрут");
КонецЕсли;
Если ТипМашины_1<>ТЗмашина.ПолучитьЗначение(сч,"ТипМашины") Тогда
ТипМашины_1 = ТЗмашина.ПолучитьЗначение(сч,"ТипМашины");
Машина_1 = ТЗмашина.ПолучитьЗначение(сч,"Машина");
Маршрут_1 = ТЗмашина.ПолучитьЗначение(сч,"Маршрут");
КонецЕсли;
ТЗмашина.УстановитьЗначение(сч,"Сотрудник",Сотр_1);
ТЗмашина.УстановитьЗначение(сч,"Должность",Должность_1);
ТЗмашина.УстановитьЗначение(сч,"Тариф",Тариф_1);
ТЗмашина.УстановитьЗначение(сч,"ТипМашины",ТипМашины_1);
ТЗмашина.УстановитьЗначение(сч,"Машина",Машина_1);
ТЗмашина.УстановитьЗначение(сч,"Маршрут",Маршрут_1);
КонецЕсли;
КонецЕсли;
Иначе
КонецЕсли;
КонецЦикла;
ТЗмашина.Свернуть("Сотрудник,Должность,Маршрут,Тариф,Машина,ТипМашины","ОтработаноДней,НевиходДней,ВиходнихДней,РаботаУвиходной,ОтработаноВремени");
ТЗмашина.Сортировать("+Сотрудник,+Должность,+ТипМашины,+Тариф,-ОтработаноВремени,+Машина,+Маршрут");
НомСтр = 0;
Сотр_1 = "";
Должность_1 = "";
Маршрут_1 = "";
Тариф_1 = "";
Машина_1 = "";
ТипМашины_1 = "";
Для сч=1 по ТЗмашина.КоличествоСтрок() Цикл
Состояние("7 - 5. "+(Окр(100/7,2)+Окр(100/7,2)+Окр(100/7,2)+Окр(100/7,2)+Окр(100/7*сч/(ТЗмашина.КоличествоСтрок()),2))+"%");
Если СокрЛП(ТЗмашина.ПолучитьЗначение(сч,"ТипМашины"))="" Тогда
НомСтр = сч;
Сотр_1 = ТЗмашина.ПолучитьЗначение(сч,"Сотрудник");
Должность_1 = ТЗмашина.ПолучитьЗначение(сч,"Должность");
Тариф_1 = ТЗмашина.ПолучитьЗначение(сч,"Тариф");
Маршрут_1 = ТЗмашина.ПолучитьЗначение(сч,"Маршрут");
Иначе
Если НомСтр>0 Тогда
Нашол = 0;
Для сч1=1 по ТЗмашина.КоличествоСтрок() Цикл
Если ТЗмашина.ПолучитьЗначение(сч1,"Сотрудник")<>Сотр_1 Тогда Продолжить; КонецЕсли;
Если ТЗмашина.ПолучитьЗначение(сч1,"Должность")<>Должность_1 Тогда Продолжить; КонецЕсли;
Если СокрЛП(ТЗмашина.ПолучитьЗначение(сч1,"ТипМашины"))="" Тогда Продолжить; КонецЕсли;
Если ТЗмашина.ПолучитьЗначение(сч1,"Тариф")=Тариф_1 Тогда
Если Нашол=0 Тогда Нашол=сч1; КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Нашол>0 Тогда
Тариф_1 = ТЗмашина.ПолучитьЗначение(Нашол,"Тариф");
ТипМашины_1 = ТЗмашина.ПолучитьЗначение(Нашол,"ТипМашины");
Машина_1 = ТЗмашина.ПолучитьЗначение(Нашол,"Машина");
Маршрут_1 = ТЗмашина.ПолучитьЗначение(Нашол,"Маршрут");
ТЗмашина.УстановитьЗначение(НомСтр,"Тариф",Тариф_1);
ТЗмашина.УстановитьЗначение(НомСтр,"ТипМашины",ТипМашины_1);
ТЗмашина.УстановитьЗначение(НомСтр,"Машина",Машина_1);
ТЗмашина.УстановитьЗначение(НомСтр,"Маршрут",Маршрут_1);
Иначе
Нашол_1 = 0;
Для сч1=1 по ТЗмашина.КоличествоСтрок() Цикл
Если ТЗмашина.ПолучитьЗначение(сч1,"Сотрудник")<>Сотр_1 Тогда Продолжить; КонецЕсли;
Если ТЗмашина.ПолучитьЗначение(сч1,"Должность")<>Должность_1 Тогда Продолжить; КонецЕсли;
Если СокрЛП(ТЗмашина.ПолучитьЗначение(сч1,"ТипМашины"))="" Тогда Продолжить; КонецЕсли;
Если СокрЛП(ТЗмашина.ПолучитьЗначение(сч1,"Машина"))<>"" Тогда
Если Нашол_1=0 Тогда Нашол_1=сч1; КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Нашол_1>0 Тогда
Тариф_1 = ТЗмашина.ПолучитьЗначение(Нашол_1,"Тариф");
ТипМашины_1 = ТЗмашина.ПолучитьЗначение(Нашол_1,"ТипМашины");
Машина_1 = ТЗмашина.ПолучитьЗначение(Нашол_1,"Машина");
Маршрут_1 = ТЗмашина.ПолучитьЗначение(Нашол_1,"Маршрут");
ТЗмашина.УстановитьЗначение(НомСтр,"Тариф",Тариф_1);
ТЗмашина.УстановитьЗначение(НомСтр,"ТипМашины",ТипМашины_1);
ТЗмашина.УстановитьЗначение(НомСтр,"Машина",Машина_1);
ТЗмашина.УстановитьЗначение(НомСтр,"Маршрут",Маршрут_1);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТЗмашина.Свернуть("Сотрудник,Должность,Маршрут,Тариф,Машина,ТипМашины","ОтработаноДней,НевиходДней,ВиходнихДней,РаботаУвиходной,ОтработаноВремени");
ТЗмашина.Сортировать("+Сотрудник,+Должность,+ТипМашины,+Тариф,-ОтработаноВремени,+Машина,+Маршрут");
ТЗсверхурочные.ВставитьКолонку("КолСтрМашина",,"Число",15,0);
Сотр_2 = ""; Должность_2 = ""; КолСтрМашина = 0;
ТЗмашина.ВыбратьСтроки();
Пока ТЗмашина.ПолучитьСтроку()=1 Цикл
Состояние("7 - 6. "+(Окр(100/7,2)+Окр(100/7,2)+Окр(100/7,2)+Окр(100/7,2)+Окр(100/7,2)+Окр(100/7*ТЗмашина.НомерСтроки/(ТЗмашина.КоличествоСтрок()),2))+"%");
Если Сотр_2="" Тогда
КолСтрМашина = 1;
Сотр_2 = ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Сотрудник");
Должность_2 = ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Должность");
Иначе
Если ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Сотрудник")<>Сотр_2 Тогда
Если КолСтрМашина>0 Тогда
ТЗсверхурочные.ВыбратьСтроки();
Пока ТЗсверхурочные.ПолучитьСтроку()=1 Цикл
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"Сотрудник")=Сотр_2 Тогда
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"Должность")=Должность_2 Тогда
ТЗсверхурочные.УстановитьЗначение(ТЗсверхурочные.НомерСтроки,"КолСтрМашина",КолСтрМашина);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КолСтрМашина = 1;
Сотр_2 = ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Сотрудник");
Должность_2 = ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Должность");
Иначе
Если ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Должность")<>Должность_2 Тогда
Если КолСтрМашина>0 Тогда
ТЗсверхурочные.ВыбратьСтроки();
Пока ТЗсверхурочные.ПолучитьСтроку()=1 Цикл
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"Сотрудник")=Сотр_2 Тогда
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"Должность")=Должность_2 Тогда
ТЗсверхурочные.УстановитьЗначение(ТЗсверхурочные.НомерСтроки,"КолСтрМашина",КолСтрМашина);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КолСтрМашина = 1;
Должность_2 = ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Должность");
Иначе
КолСтрМашина = КолСтрМашина+1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если КолСтрМашина>0 Тогда
ТЗсверхурочные.ВыбратьСтроки();
Пока ТЗсверхурочные.ПолучитьСтроку()=1 Цикл
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"Сотрудник")=Сотр_2 Тогда
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"Должность")=Должность_2 Тогда
ТЗсверхурочные.УстановитьЗначение(ТЗсверхурочные.НомерСтроки,"КолСтрМашина",КолСтрМашина);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ТЗсверхурочные.ВыбратьСтроки();
Пока ТЗсверхурочные.ПолучитьСтроку()=1 Цикл
Состояние("7 - 7. "+(Окр(100/7,2)+Окр(100/7,2)+Окр(100/7,2)+Окр(100/7,2)+Окр(100/7,2)+Окр(100/7,2)+Окр(100/7*ТЗсверхурочные.НомерСтроки/(ТЗсверхурочные.КоличествоСтрок()),2))+"%");
СумаНадурочних = 0; КолСтрМашина = 0; СумаВиходних = 0;
Надурочние = 0; Виходние = 0;
ТЗмашина.ВыбратьСтроки();
Пока ТЗмашина.ПолучитьСтроку()=1 Цикл
Надурочние = 0; Виходние = 0;
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"Сотрудник")<>ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Сотрудник") Тогда Продолжить; КонецЕсли;
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"Должность")<>ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Должность") Тогда Продолжить; КонецЕсли;
КолСтрМашина = КолСтрМашина+1;
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"СверхУрочные")<>0 Тогда
Надурочние = ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"СверхУрочные")/ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"ОтработаноВремени")*ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"ОтработаноВремени");
КонецЕсли;
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"РаботаУвиходнойОплата")<>0 Тогда
Виходние = ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"РаботаУвиходнойОплата")/ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"РаботаУвиходной")*ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"РаботаУвиходной");
КонецЕсли;
НоваяСтрока();
Сотрудник = ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"Сотрудник");
ТН = ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"Сотрудник").Код;
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"СверхУрочные")-СумаНадурочних-Окр(Надурочние,0)>=0 Тогда
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"КолСтрМашина")=КолСтрМашина Тогда
СверхУрочные = ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"СверхУрочные")-СумаНадурочних;
Иначе
СверхУрочные = Окр(Надурочние,0);
СумаНадурочних = СумаНадурочних+Окр(Надурочние,0);
КонецЕсли;
Иначе
СверхУрочные = ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"СверхУрочные")-СумаНадурочних;
СумаНадурочних = СумаНадурочних+Окр(СверхУрочные,0);
КонецЕсли;
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"РаботаУвиходнойОплата")-СумаВиходних-Окр(Виходние,0)>=0 Тогда
Если ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"КолСтрМашина")=КолСтрМашина Тогда
Выходные = ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"РаботаУвиходнойОплата")-СумаВиходних;
Иначе
Выходные = Окр(Виходние,0);
СумаВиходних = СумаВиходних+Окр(Виходние,0);
КонецЕсли;
Иначе
Выходные = ТЗсверхурочные.ПолучитьЗначение(ТЗсверхурочные.НомерСтроки,"РаботаУвиходнойОплата")-СумаВиходних;
СумаВиходних = СумаВиходних+Окр(Выходные,0);
КонецЕсли;
Машина = ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Машина");
Маршрут = ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Маршрут");
Должность = ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Должность");
КонецЦикла;
ТЗсверхурочные.выбратьстроку();
КонецЦикла;