Отчет по сотрудникам - иностранцам

1. VLADELETC 24.10.13 15:13 Сейчас в теме
Добрый день! Нужна ваша помощь! Создан вот такой отчет но он собирает все приказы о приеме (сотрудник работает по срочным договорам) и задваевает(затраивает...) сотрудника, а надо данные только из последнего приказа

Процедура Сформировать8()

Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("ОкончаниеДоговораОбщ");
Таб.ВывестиСекцию("Заголовок");
Таб.ВывестиСекцию("Шапка");

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(сформировать)
|с (НачГода(ДатаДок)-365) по (ДатаДок);
|ОбрабатыватьДокументы Проведенные;
|Сотрудник = Документ.ПриказОПриемеНаРаботу.Сотрудник;
|СостояниеФизлица = Документ.ПриказОПриемеНаРаботу.Сотрудник.СостояниеФизлица;
|ДатаОкончанияДог = Документ.ПриказОПриемеНаРаботу.ДатаОкончанияДог;
|Функция Итог = Счётчик(Сотрудник);
|"//}}Запрос
;


Если Сортировка.ТекущаяСтрока()=1 Тогда
ТекстЗапроса = ТекстЗапроса + "Группировка Сотрудник без групп;Группировка ДатаОкончанияДог;";
ИначеЕсли Сортировка.ТекущаяСтрока()=2 Тогда
ТекстЗапроса = ТекстЗапроса + "Группировка ДатаОкончанияДог;Группировка Сотрудник без групп;";
КонецЕсли;

Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Возврат;
КонецЕсли;

Ном=0;

Пока Запрос.Группировка(1)=1 Цикл
Пока Запрос.Группировка(2)=1 Цикл

Если (ПустоеЗначение(Запрос.СостояниеФизЛица)=1) Тогда
Продолжить;
КонецЕсли;

Если (ПустоеЗначение(Запрос.ДатаОкончанияДог)<>0)Тогда
Продолжить;
КонецЕсли;


Ном=Ном+1;

Таб.ВывестиСекцию("Сотрудник");

КонецЦикла;
КонецЦикла;

Таб.ВывестиСекцию("Подвал");

Таб.Опции(0,0,0,0);
Таб.ТолькоПросмотр(0);
Таб.ПараметрыСтраницы(1,,,10,10,10,10,10,10,1);
Таб.Показать("Отчет по трудовым договорам с иностранцами");


КонецПроцедуры
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dusha0020 1120 24.10.13 16:05 Сейчас в теме
Введите счетчик во внутренний цикл второй группировки и выводите только ту запись которая по этому внутреннему счетчику будет равна Запрос.Итог. Естественно после окончания внутреннего цикла по группировке второго уровня сбрасывайте этот счетчик на 0.
Пока Запрос.Группировка(1)=1 Цикл
счт = 0; 
Пока Запрос.Группировка(2)=1 Цикл 
счт = счт + 1;
Если (ПустоеЗначение(Запрос.СостояниеФизЛица)=1) Тогда 
Продолжить; 
КонецЕсли; 

Если (ПустоеЗначение(Запрос.ДатаОкончанияДог)<>0)Тогда 
Продолжить; 
КонецЕсли; 


Ном=Ном+1; 
Если счт = Запрос.Итог Тогда
Таб.ВывестиСекцию("Сотрудник");
КонецЕсли;
	
КонецЦикла;
КонецЦикла;
Показать

И упорядочить по дате не забудьте.
VLADELETC; +1 Ответить
3. jack19 148 24.10.13 19:46 Сейчас в теме
(1) VLADELETC, Не ясна цель отчета. То ли нужно собрать работающих на текущую дату с окончанием в приказе, то ли всех работавших в каком-то периоде. Если работающих на текущую дату, то запрос может выглядеть так:

ТекстЗапроса =
"//{{ЗАПРОС(сформировать)
|с (НачГода(ДатаДок)-365) по (ДатаДок);
|ОбрабатыватьДокументы Проведенные;
|Докум = Документ.ПриказОПриемеНаРаботу.ТекущийДокумент;
|Сотрудник = Документ.ПриказОПриемеНаРаботу.Сотрудник;
|СостояниеФизлица = Документ.ПриказОПриемеНаРаботу.Сотрудник.СостояниеФизлица;
|ДатаОкончанияДог = Документ.ПриказОПриемеНаРаботу.ДатаОкончанияДог;
|Условие(ПустоеЗначение(ДатаОкончанияДог)=0);
|Условие(ПустоеЗначение(Сотрудник.СостояниеФизлица.Получить(ТекущаяДата()))=0);
|Условие(глПриказПоСотруднику(Сотрудник,ТекущаяДата(),Докум.Вид())=Докум);
|Группировка Сотрудник упорядочить по Сотрудник.Наименование;
|"//}}Запрос

Только в типовой нет реквизита "ДатаОкончанияДог" в прикае о приеме. Надеюсь Вы знаете, что делаете.
VLADELETC; +1 Ответить
4. VLADELETC 24.10.13 23:22 Сейчас в теме
JACK19
ОГРОМНОЕ СПАСИБО!!! Вот эту строчку (|Условие(глПриказПоСотруднику(Сотрудник,ТекущаяДата(),Докум.Вид())=Докум); )
я никак не мог сочинить, знаний еще не хватат... А в моей конфигурации в приказе о приеме чего только нет - вплоть до бланков уведомлений о привлечении иностранцев в ФМС. У меня одни иностранцы вот и приходится пилить типовую
5. VLADELETC 24.10.13 23:23 Сейчас в теме
dusha0020 ОГРОМНОЕ СПАСИБО ЗА ОТВЕТ И ПОНИМАНИЕ
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот