7.7 Периодические реквизиты

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем Guashka, 13 янв 2011.

  1. TopicStarter Overlay
    Guashka
    Offline

    Guashka

    Регистрация:
    12 янв 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! У меня такая проблема: Конфигурация ЗиК, отчет по работающим-уволенным. Необходимо сделать выборку по уволенным сотрудникам по должности. Должность- периодический реквизит. У меня отображаются только те сотрудники, которые впоследствии опять устроились на работу, а остальные нет, не пойму, что не так. Подскажите, пожалуйста!
    Код:
    Код:
    Процедура Сформировать()
    Н=0;
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Сотр=СоздатьОбъект("Справочник.Сотрудники");
    Сост=ПолучитьПустоеЗначение("Перечисление.СостояниеФизлица");
    Таб.ВывестиСекцию("Заголовок");
    Таб.ВывестиСекцию("Шапка");
    Запрос1 = СоздатьОбъект("Запрос");
    ТекстЗапроса1 =
    "//{{ЗАПРОС(Обучение)
    |Сотр = Документ.ПриказОбУвольнении.Сотрудник.ТекущийЭлемент;
    |Док = Документ.ПриказОбУвольнении.ТекущийДокумент;
    |ДатаДок = Документ.ПриказОбУвольнении.ДатаУвольнения; 
    |СостФЗ = Справочник.Сотрудники.СостояниеФизлица;
    |Должность = Документ.ПриказОбУвольнении.Сотрудник.Должность;   
    |Подразделение = Документ.ПриказОбУвольнении.Сотрудник.Подразделение;
    |Группировка Сотр без групп;
    |Условие ((ДатаДок>=НачДата) и (ДатаДок<=КонДата));
    |Условие (Должность в ВыбДол);
    |Условие (СостФЗ<>Сост);
    |"
    ; 
    Если Запрос1.Выполнить(ТекстЗапроса1) = 0 Тогда
    Возврат;
    КонецЕсли;
    Пока Запрос1.Группировка("Сотр") = 1 Цикл
    Сотр.ВыбратьЭлементы();
    Сотр.НайтиЭлемент(Запрос1.Сотр);
    ДатаДок=Запрос1.ДатаДок;
    дол = Сотр.Должность.Получить(ДатаДок);
    Если ПустоеЗначение(Сотр.ДокументУдЛичность)=0 Тогда
    СЗ = глРазложитьДокУдостоверяющийЛичность(Сотр.ДокументУдЛичность);
    Серия= СЗ.ПолучитьЗначение(2);
    Номер= СЗ.ПолучитьЗначение(3);
    Иначе
    Серия="";
    Номер="";
    КонецЕсли;
    если дол = выбдол тогда
    Н=Н+1;
    Таб.ВывестиСекцию("Ув");
    таб.показать ("список работающих/уволенных");
    Таб.ТолькоПросмотр(1);
    Таб.Опции(0,0,3,0);
    иначе      Таб.ВывестиСекцию("Сотр");
    конецесли;
    
    
  2. Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    в запросе вот это у тебя есть
    Код:
    	|Период с НачДата по КонДата;
    
  3. TopicStarter Overlay
    Guashka
    Offline

    Guashka

    Регистрация:
    12 янв 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Это для принятых запрос, для уволенных 2
  4. Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    вот мой код и результат:
    Код:
    Процедура Сформировать()
    Н=0;
    Сотр=СоздатьОбъект("Справочник.Сотрудники");
    Сост=ПолучитьПустоеЗначение("Перечисление.СостояниеФизлица");
    Запрос1 = СоздатьОбъект("Запрос");
    ТекстЗапроса1 =
    "//{{ЗАПРОС(Обучение)  
    |Период с НачДата по КонДата;
    |Сотр = Документ.ПриказОбУвольнении.Сотрудник.ТекущийЭлемент;
    |Док = Документ.ПриказОбУвольнении.ТекущийДокумент;
    |ДатаДок = Документ.ПриказОбУвольнении.ДатаУвольнения; 
    |СостФЗ = Справочник.Сотрудники.СостояниеФизлица;
    |Должность = Документ.ПриказОбУвольнении.Сотрудник.Должность;   
    |Подразделение = Документ.ПриказОбУвольнении.Сотрудник.Подразделение;
    |Группировка Сотр без групп;
    |Условие ((ДатаДок>=НачДата) и (ДатаДок<=КонДата));
    |Условие (Должность в ВыбДол);
    |Условие (СостФЗ<>Сост);
    |"
    ; 
    Если Запрос1.Выполнить(ТекстЗапроса1) = 0 Тогда
    Возврат;
    КонецЕсли;
    Пока Запрос1.Группировка("Сотр") = 1 Цикл
    Сотр.ВыбратьЭлементы();
    Сотр.НайтиЭлемент(Запрос1.Сотр);
    ДатаДок=Запрос1.ДатаДок;
    дол = Сотр.Должность.Получить(ДатаДок);
    Если ПустоеЗначение(Сотр.ДокументУдЛичность)=0 Тогда
    СЗ = глРазложитьДокУдостоверяющийЛичность(Сотр.ДокументУдЛичность);
    Серия= СЗ.ПолучитьЗначение(2);
    Номер= СЗ.ПолучитьЗначение(3);
    Иначе
    Серия="";
    Номер="";
    КонецЕсли;  
    
    Если дол = выбдол тогда
    Н=Н+1;
    Сообщить(Сотр);
    иначе    
    Сообщить("!!!");
    КонецЕсли;  
    
    КонецЦикла;
    КонецПроцедуры
    
    
    и результат сообщает только уволенных. за этот период.

    Вложения:

  5. TopicStarter Overlay
    Guashka
    Offline

    Guashka

    Регистрация:
    12 янв 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Уволенных в общем у меня тоже выводит, проблема в том, если я выбираю на форме должность, то он не делает выборки среди уволенных, только среди вновь принятых, хотя должность и дату увольнения указывает правильно
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    НЕ ЗАБЫВАЕМ что в запросе периодическое значение можно получить только на КОНЕЧНУЮ дату
  7. TopicStarter Overlay
    Guashka
    Offline

    Guashka

    Регистрация:
    12 янв 2011
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Спасибо за совет, все получилось
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    ...для это есть кнопка "спасибо")))

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