7.7 Как переделать отчет?

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем S0LNCE, 28 окт 2011.

  1. TopicStarter Overlay
    S0LNCE
    Offline

    S0LNCE

    Регистрация:
    28 окт 2011
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! Я сделала отчет на основе Приказа по отпуску, который выводит сотрудников с указанием периода времени, за который у них был отпуск. Но вот вопрос, как сделать, чтобы они сортировались по имени и как добавить условие, чтобы выбирались только очередные и дополнительные отпуска? Условие сделала, но пишет, что поле агрегатного объекта ВидОтпуска не найдено. В приказе по отпуску такой реквизит есть. Помогите, пожалуйста!
    Код:
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
    Таб.ПараметрыСтраницы(1,,,0,0,0,0,0,0,,,);
    Таб.ВывестиСекцию("Шапка");
    КадрДокументы = СоздатьОбъект("Документ.ПриказПоОтпуску");
    КадрДокументы.ВыбратьДокументы(МесяцНачало,МесяцОкончание);
    Пока КадрДокументы.ПолучитьДокумент() = 1 Цикл
    КадрДокумент = КадрДокументы.ТекущийДокумент();
    Сотрудник = КадрДокументы.Сотрудник; 
    СостояниеСотрудника = Сотрудник.СостояниеФизЛица.Получить(МесяцОкончание);
    Если (СостояниеСотрудника = Перечисление.СостояниеФизлица.СотрудникОсновной) или (СостояниеСотрудника = Перечисление.СостояниеФизлица.СотрудникНеосновной)  Тогда
    ВидыОтпуска =  Сотрудник.ВидОтпуска.Получить(МесяцОкончание);
    Если (ВидыОтпуска = ВидРасчета.ОтпускОчередной) или (ВидыОтпуска = ВидРасчета.ОтпускДополнительный) Тогда
    Сотрудник = КадрДокументы.Сотрудник;
    Должность = Сотрудник.Должность.Получить(МесяцОкончание);
    Подразделение = Сотрудник.Подразделение.Получить(МесяцОкончание);
    НачалоПериода = КадрДокумент.НачалоПериода;
    ОкончаниеПериода = КадрДокумент.ОкончаниеПериода;
    КоличествоДнейОтпуска = КадрДокумент.КоличествоДнейОтпуска;
    Таб.ВывестиСекцию("Строка");  
    Таб.Сортировать("Сотрудник");
    Иначе Продолжить;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    Таб.Показать();
    КонецПроцедуры
    
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Что за конфигурация? Вы уверены что этот реквизит периодический?
  3. TopicStarter Overlay
    S0LNCE
    Offline

    S0LNCE

    Регистрация:
    28 окт 2011
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    редакция 2.3 (7.70.309) 1С Зарплата и кадры 7.7. Реквизит и правда непериодический )
    Если убираю из скобок, то это ничего не меняет, поле агрегатного объекта не обнаружено
    ВидыОтпуска = Сотрудник.ВидОтпуска.Получить();
  4. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Получить тоже убирайте:
    Код:
    ВидыОтпуска = Сотрудник.ВидОтпуска;
    
    
  5. TopicStarter Overlay
    S0LNCE
    Offline

    S0LNCE

    Регистрация:
    28 окт 2011
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    сделала так. Ошибка не пропадает!
  6. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Проверьте еще раз есть ли такой реквизит (имя реквизита скопируйте из справочника). Ну и заодно отладчиком гляньте, что в переменной Сотрудник.
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В типовой - нет такого реквизита.
  8. TopicStarter Overlay
    S0LNCE
    Offline

    S0LNCE

    Регистрация:
    28 окт 2011
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Спасибо! Все получилось! :angry:
    Скажите, а как можно отсортировать по ФИО сотрудников?
  9. TopicStarter Overlay
    S0LNCE
    Offline

    S0LNCE

    Регистрация:
    28 окт 2011
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте еще раз! Сортировку сделала, создав таблицу значений. Подскажите, пожалуйста, как можно отобрать только последний отпуск сотрудника, а не все его отпуска за период (сейчас отбираются все отпуска)?
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Это если один сотрудник...
    Код:
    Если ТЗ.КоличествоСтрок()>0 Тогда
    ТЗ.ПолучитьСтрокуПоНомеру(ТЗ.КоличествоСтрок());
    КонецЕсли;
    
    
    
    Иначе в цикле


    Код:
    Сотр="";
    ТЗ.ВыбратьСтроки();
    Для к=1 По ТЗ.КоличествоСтрок() Цикл
    ТЗ.ПолучитьСтрокуПоНомеру(к);
    Если (ТЗ.Сотрудник<>Сотр)И(ПустоеЗначение(Сотр)=0) Тогда
    Сотр=ТЗ.Сотрудник;
    ТЗ.ПолучитьСтрокуПоНомеру(к-1);
    Сообщить("Этот отпуск - последний "+ТЗ.ДокОтпуск);
    ИначеЕсли к=ТЗ.КоличествоСтрок() Тогда
    Сообщить("Этот отпуск - последний "+ТЗ.ДокОтпуск);
    КонецЕсли;
    КонецЦикла;
    
    
    

Поделиться этой страницей