Здравствуйте уважаемые знатоки) Опять я пришел к вам с глупыми и детскими вопросами, но не к кому больше обратиться. Так вот, мне необходимо создать документ который бы при выборе сотрудника и нажатии на кнопку окей, в колонку табличной части проставлял даты месяца. Как мне организовать эту процедуру? Название процедуры - "заполнить", колонки - "Дата". Заранее благодарю за ответ, ну или просто внимание.)
Всем спасибо. и таки правда нужна была функция. Запрос с выборкой из регистра, обязательно должен быть с функцией) Еще на одну долю стал умнее)))) Спасибо всем за помощь.
Результат запроса не пустой? Кажется мне, что там нужна функция...
Ну мне не нужны какие нибудь значения. Мне нужно проверить тот факт, если есть документ "приказ" (пр), то в регистре "время" за этот день в этого сотрудника в одном из столбцов "ВремяПоДням" было значение "выходной", если же документ, есть а "выходного" нет, выдавать сообщение.
Здравствуйте уважемые. Работаю в предприятии 7.7 релиз (7.70.027). Проблема следующего плана: создал обработку, которая должна проверять наличие выходного дня в регистре если за этот день для определенного работки есть "приказ на работу в выходной день". Создал вот такую процедуру, но она отрабатывает только до запроса. Сам запрос не отрабатывает, в чем может быть проблема?
|Группировка РегДатаДок; |Группировка РегСотрудник Без Групп; |Группировка РегВремяПоДням;
|";
Если Запрос2.Выполнить(ТекстЗапроса)=0 тогда Предупреждение("Запит не виконано!"); Возврат; КонецЕсли; ПР.ВыбратьДокументы(Дата1,Дата2); Пока ПР.ПолучитьДокумент()=1 Цикл сообщить("2"); ПР.ВыбратьСтроки(); Пока ПР.ПолучитьСтроку()=1 Цикл сообщить("3 "+пр.сотрудник+" дата "+пр.датадок); Пока Запрос2.Группировка("РегДатаДок") = 1 цикл сообщить("4"); Если ПР.датадок = Запрос2.РегдатаДок тогда сообщить("5"); Пока Запрос2.Группировка("РегСотрудник")=1 Цикл сообщить("6"); Если запрос2.регсотрудник = пр.сотрудник тогда сообщить("7"); Пока Запрос2.Группировка("РегВремяПоДням")=1 Цикл сообщить("8"); Если запрос2.регвремяподням = Перечисление.ВремяПоДням.Выходные тогда сообщить("Все документы перепроведены"); иначе сообщить("Документ"+пр+"не має відповідності з шляховим листом. Перевірте проведення шляхового листа"); КонецЕсли;
КонецЦикла; иначе продолжить; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; Конецпроцедуры
Доброго времени уважаемые знатоки Необходимо написать код, который бы проверял перепроведение документов, после вступления в силу приказа о работе в выходной день.
Помоги пожалуйста малознающему))))
!
Правила, п.3, 8, 9 у вас 11 сообщений, тема в корзину.
доброго времени суток, попала мне в наследство модуль. Я никак не могу понять в чем дело. Значить так: нужно было внести изменения задним числом, и после их внесения, во время формирования нарядов, непонятная ситуацыя. Нужно чтобы система проверяла только данные на РабочуюДату. а оно гребёт все последующии дни за которые есть записи. Можете сказать что заставляет модуль так себя вести?)))) Вот код:
Если Фневиходи=1 Тогда М = СоздатьОбъект("Справочник.Маршруты"); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Сп = СоздатьОбъект("СписокЗначений"); Ит.ИспользоватьСубконто(ВидыСубконто.ПричиныНевыходов,,1,); Ит.ИспользоватьКорСубконто(ВидыСубконто.Сотрудники,,1,); Ит.ВыполнитьЗапрос(РабочаяДата(),РабочаяДата(),СчетПоКоду("04"),,,,,);
М.ПорядокКодов(); М.ВыбратьЭлементы(); Пока М.ПолучитьЭлемент()=1 Цикл Если ПустаяСТрока(Фмаршрут)=0 Тогда //В розрезе марщрутов Если м.ТекущийЭлемент()<>Фмаршрут Тогда Продолжить; КонецЕсли; КонецЕсли;
Ит.ВыбратьСубконто(); Пока Ит.ПолучитьСубконто()=1 Цикл Сп.УдалитьВсе(); Ит.ВыбратьКорСубконто(); Пока Ит.ПолучитьКорСубконто()=1 Цикл Если Ит.КорСубконто().Маршрут.Получить(РабочаяДата())=М.ТекущийЭлемент() Тогда Сп.Установить(Прав(" "+Строка(Ит.КорСубконто().Код),6),Ит.КорСубконто()); КонецЕсли; КонецЦикла;
Если Сп.РазмерСписка()>0 Тогда Стр = ""; Текст.ДобавитьСтроку(СтрЗаменить(СтрЗаменить(Стр,"і","i"),"І","I")); КолСтрок = КолСтрок+1;
Доброго дня. Маю таку проблему. Незнаю як сформулювать код для вигрузки даних з однієї таблиці значень в іншу. Мені потрібно з ТЗ1 перенести данні одного стовбчика в ТЗ2. Але перед цим перевіривши відповідність кодів працівників в кожній з таблиць. Тобто маю одну таблицю з колонками ТЗ1( "MES,TN,M","RD,LIN,HOL_HOD,PZ,......,") та другу ТЗ2(""MES,TN","RD,LIN,HOL_HOD,PZ"). Після звертання, такого як мені потрібно в ТЗ1 TN маэ 2 або більше строк, а ТЗ2 лише одну. Потрібно перенести значення RD з ТЗ2 в ТЗ1. як це можна здійснить? заздалегідь дякую за допомогу. І наперед вибачьте за неграмотність формулювання, так як 1с вчу самостійно.
Проблема в том, что нельзя делать запрос к регистру без указания Ресурса. Как я понял Сотрудник и Маршрут это Измерения. Добавьте Ресурс и должно заработать.
И правда заработало) Спасибо за помощь, етот момент я упустил(((
Доброго дня панове. в мене така проблемка, починаю я програмувати в 1С 7.7, і застряв на такому: потрібно з регистра. після прописаного коду, моя ТЗ пуста, не заповнюється. В чому може бути проблема? допоможіть, і не сваріть сильно)!
ТекстЗапроса=" |Период с ВыбНачПериода по ВыбКонПериода; |РегСотрудник = Регистр.Время.Сотрудник; |РегМаршрут = Регистр.Время.Маршрут;
|Группировка РегСотрудник Без Групп; |Группировка РегМаршрут Без Групп;
|";
Запрос=СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса)=0 тогда Предупреждение("Запит не виконано!"); Возврат; КонецЕсли;
Пока Запрос.Группировка("РегСотрудник")=1 Цикл Пока Запрос.Группировка("РегМаршрут")=1 Цикл ТЗ.НоваяСтрока(); ТЗ.Сотрудник = Запрос.РегСотрудник; ТЗ.Маршрут = Запрос.РегМаршрут; КонецЦикла; КонецЦикла; ТЗ.выбратьстроку();
Шановне панство, потребую вашої допомоги. При редагуванні, не мною створенного, кода документа, не можу зрозуміти однієї речі: чому не вираховується значення "сверхурочных" в таблиці значень? Попробую пояснить. з таблиці значень в форму заносяьтся дані, і в залежності від дати створення документу потрібно або всіх працівників вивести, або деякіх, це все здійснюється. але при виборці деякіх працівників не заповнюється колонки з значеннями. Додаю код процедури "заполнить", яка заповнює форму. Процедура Заполнить3()
Если ТекущийДокумент().Проведен()=1 Тогда Предупреждение("Скасуйте проведення"); Возврат; КонецЕсли; Если КоличествоСтрок()<>0 тогда Если Вопрос("Будемо робити розрахунок по новому?","Да+Нет")="Нет" Тогда Возврат; КонецЕсли; КонецЕсли; УдалитьСтроки();
|Группировка РегСотрудник Без Групп; |Группировка РегУчетноеСобытие Без Групп; |Группировка РегВремяУчета; |Группировка РегВремяПоДням; |Группировка РегВремяПоВремениСуток; |Группировка РегМаршрут Без Групп; |Группировка РегТариф Без Групп; |Группировка РегМашина Без Групп; |Группировка РегДатаДок;
|Функция Сума = Сумма(РегМинутыВыб); |";
Запрос=СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса)=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); КонецЕсли; Машина = ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Машина"); Маршрут = ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Маршрут"); Должность = ТЗмашина.ПолучитьЗначение(ТЗмашина.НомерСтроки,"Должность"); КонецЦикла; ТЗсверхурочные.выбратьстроку(); КонецЦикла;
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!