Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите новичку  (Прочитано 5689 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Guashka
Новенький

ru
Offline Offline

« : 13-01-2011 07:50 » 

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

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 13-01-2011 13:11 » new

Попробуй:
      |СостФЗ = Документ.ПриказОбУвольнении.Сотрудник.СостояниеФизлица;
Потому как в твоем случае не понятна связь между документом и справочником
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #2 : 24-01-2011 06:03 » 

   ДатаН   = Дата(0);
   ДатаК   = ТекущаяДата();

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

если хочешь запросами то работай через период выбора запроса, Состояние физ лица у тебя тоже периодический реквизит скорее всего, поэтому он примет значение на последнее число периода запроса. в данный момент это у тебя на текущую дату. проверка на пустую дату возможна без ввода дополнительной переменной(глянь у меня в примере.)

Добавлено через 1 минуту и 58 секунд:
поправлюсь к предыдущему:
**проверка на пустое значение переменной возможна без ввода дополнительной переменной(глянь у меня в примере.)
« Последнее редактирование: 24-01-2011 06:05 от Radistka » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines