Имя: Пароль:
1C
1С v8
Помогите с запросом
0 cifromantika
 
11.08.12
13:47
Просьба помочь с запросом в ЗУП КОРП 2.5:
есть дописанный отбор, требуется его откорректировать.

Отбор по Совместителям, ВДикретномОтпуске, Работают, НеРаботают.
По Совместителям, ВДикретномОтпуске попадают уволенные.
Подскажите как убрать уволенных.

Заранее спасибо.
1 izekia
 
11.08.12
13:58
ВДикретномОтпуске
из-за этого видимо
2 cifromantika
 
11.08.12
14:11
Процедура СовместителиПриИзменении(Элемент)
   
   Если Совместители Тогда
       
       ВДикретномОтпуске = Ложь;
       Работают          = Ложь;
       НеРаботают        = Ложь;
       
   // получаем запросом список с установленными критериями отбора
       СЗ = ВернутьСписокСовместителей();

       // устанавливаем отбор на ссылки, входящие в возвращенный список ссылок
         ЭтаФорма.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
       ЭтаФорма.Отбор.Ссылка.Значение = СЗ;
       ЭтаФорма.Отбор.Ссылка.Использование = Истина;

   Иначе
       
       // сбросим отбор
       ЭтаФорма.Отбор.Ссылка.Использование = Ложь;
       
   КонецЕсли;
   
КонецПроцедуры

Функция ВернутьСписокСовместителей()
   
   Запрос = Новый Запрос;

   // устанавливаем параметры запроса введенными критериями
   Запрос.УстановитьПараметр("ВнешСовм", Перечисления.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство);
   Запрос.УстановитьПараметр("ВнутСовм", Перечисления.ВидыЗанятостиВОрганизации.Совместительство);
   Запрос.УстановитьПараметр("ДатаУвольнения", РегистрыСведений.РаботникиОрганизаций.СрезПоследних());
 
   // нам нужна только ссылка для построения списка значений
   Запрос.Текст =
   
   
   "ВЫБРАТЬ
   |    СотрудникиОрганизаций.Ссылка
   |ИЗ
   |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
   |ГДЕ
   |    (СотрудникиОрганизаций.ВидЗанятости = &ВнутСовм
   |            ИЛИ СотрудникиОрганизаций.ВидЗанятости = &ВнешСовм)";
   
           
   Результат = Запрос.Выполнить();

   // создаем новый список значений и выгружаем в него колонку «Ссылка» из  результата запроса
   СЗ = Новый СписокЗначений;
   СЗ.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("Ссылка"));

   // возвращаем результат - полученный список зачений
   Возврат СЗ;
   
КонецФункции    

Процедура ВДикретномОтпускеПриИзменении(Элемент)
   
   Если ВДикретномОтпуске  Тогда
       
       Совместители      = Ложь;
       Работают          = Ложь;
       НеРаботают        = Ложь;

       // получаем запросом список с установленными критериями отбора
       СЗ = ВернутьСписокДикретников();

       // устанавливаем отбор на ссылки, входящие в возвращенный список ссылок
       ЭтаФорма.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
       ЭтаФорма.Отбор.Ссылка.Значение = СЗ;
       ЭтаФорма.Отбор.Ссылка.Использование = Истина;

   Иначе
       
       // сбросим отбор
       ЭтаФорма.Отбор.Ссылка.Использование = Ложь;
       
   КонецЕсли;
   
КонецПроцедуры

Функция ВернутьСписокДикретников()
   
   Запрос = Новый Запрос;

   // устанавливаем параметры запроса введенными критериями
   Запрос.УстановитьПараметр("Состояние1", Перечисления.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам);
   Запрос.УстановитьПараметр("Состояние2", Перечисления.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком);
 
   // нам нужна только ссылка для построения списка значений
   Запрос.Текст =
   "ВЫБРАТЬ
   |    СотрудникиОрганизаций.Ссылка
   |ИЗ
   |    РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
   |        ПО СостояниеРаботниковОрганизаций.Сотрудник = СотрудникиОрганизаций.Ссылка
   |ГДЕ
   |    (СостояниеРаботниковОрганизаций.Состояние = &Состояние1
   |            ИЛИ СостояниеРаботниковОрганизаций.Состояние = &Состояние2)";
       
   Результат = Запрос.Выполнить();

   // создаем новый список значений и выгружаем в него колонку «Ссылка» из  результата запроса
   СЗ = Новый СписокЗначений;
   СЗ.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("Ссылка"));

   // возвращаем результат - полученный список зачений
   Возврат СЗ;
   
КонецФункции

Процедура РаботаютПриИзменении(Элемент)
   
   БИТ_Работают  Тогда
       
       Совместители      = Ложь;
       ВДикретномОтпуске = Ложь;
       НеРаботают        = Ложь;

       // получаем запросом список с установленными критериями отбора
       СЗ = ВернутьСписокРаботающих();
       
       // устанавливаем отбор на ссылки, входящие в возвращенный список ссылок
       ЭтаФорма.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
       ЭтаФорма.Отбор.Ссылка.Значение = СЗ;
       ЭтаФорма.Отбор.Ссылка.Использование = Истина;

   Иначе
       
       // сбросим отбор
       ЭтаФорма.Отбор.Ссылка.Использование = Ложь;
       
   КонецЕсли;
   
КонецПроцедуры

Функция ВернутьСписокРаботающих()
   
   Запрос = Новый Запрос;

   // устанавливаем параметры запроса введенными критериями
   Запрос.УстановитьПараметр("Состояние1", Перечисления.СостоянияРаботникаОрганизации.НеРаботает);
   
    Запрос.Текст =
   "ВЫБРАТЬ
   |    СотрудникиОрганизаций.Ссылка
   |ИЗ
   |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(, ) КАК РаботникиОрганизацийСрезПоследних
   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
   |        ПО РаботникиОрганизацийСрезПоследних.Сотрудник = СотрудникиОрганизаций.Ссылка
   |ГДЕ
   |    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Перемещение)";

   Результат = Запрос.Выполнить();

   // создаем новый список значений и выгружаем в него колонку «Ссылка» из  результата запроса
   СЗ = Новый СписокЗначений;
   СЗ.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("Ссылка"));

   // возвращаем результат - полученный список зачений
   Возврат СЗ;
   
КонецФункции    

Процедура НеРаботаютПриИзменении(Элемент)
   
   Если НеРаботают  Тогда
       
       Совместители      = Ложь;
       ВДикретномОтпуске = Ложь;
       Работают          = Ложь;

       // получаем запросом список с установленными критериями отбора
       СЗ = ВернутьСписокНеРаботающих();

       // устанавливаем отбор на ссылки, входящие в возвращенный список ссылок
       ЭтаФорма.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
       ЭтаФорма.Отбор.Ссылка.Значение = СЗ;
       ЭтаФорма.Отбор.Ссылка.Использование = Истина;

   Иначе
       
       // сбросим отбор
       ЭтаФорма.Отбор.Ссылка.Использование = Ложь;
       
   КонецЕсли;
   
КонецПроцедуры

Функция ВернутьСписокНеРаботающих()
   
   Запрос = Новый Запрос;

   // устанавливаем параметры запроса введенными критериями
 
   // нам нужна только ссылка для построения списка значений
    Запрос.Текст =
   "ВЫБРАТЬ
   |    СотрудникиОрганизаций.Ссылка
   |ИЗ
   |    РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
   |        ПО РаботникиОрганизаций.Сотрудник = СотрудникиОрганизаций.Ссылка
   |ГДЕ
   |    РаботникиОрганизаций.ПричинаИзмененияСостояния =
   |        ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)";
       
   Результат = Запрос.Выполнить();

   // создаем новый список значений и выгружаем в него колонку «Ссылка» из  результата запроса
   СЗ = Новый СписокЗначений;
   СЗ.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("Ссылка"));

   // возвращаем результат - полученный список зачений
   Возврат СЗ;
   
КонецФункции
3 Wobland
 
11.08.12
14:39
(1) хм, а нет ;)

>БИТ_Работают
вот и авторы этого дикрета
4 sanja26
 
11.08.12
14:41
к вопросу о русском языке... стремно даже смотреть

ВернутьСписокДикретников()
5 ILM
 
гуру
11.08.12
17:09
Декрет - наше всё. А Дикрет - даже представить страшно.
6 ILM
 
гуру
11.08.12
17:10
А что из БИТ уже на мисте сидят, в субботу... Прикованый к батарее? Доширак то есть?
7 m-serg74
 
11.08.12
17:41
(0) хоть бы помеченных на удаление выкинули)

"ВЫБРАТЬ
   |    СотрудникиОрганизаций.Ссылка
   |ИЗ
   |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
   |ГДЕ
   |    (СотрудникиОрганизаций.ВидЗанятости = &ВнутСовм
   |            ИЛИ СотрудникиОрганизаций.ВидЗанятости = &ВнешСовм)";
8 cifromantika
 
11.08.12
17:56
Да я не из БИТ, говорю дописанный ЗУП был, вот пытаюсь исправить. Да вообще то я понял что за народ на мисте сидят.
Спасибо за издевательство, единственный раз обратился, и вот БОГИ запели, больше не буду Вас тревожить и друзьям посоветую сменить форум.
9 ILM
 
гуру
11.08.12
18:03
(8) Ну раз не из БИТ - тогда нужно условие ещё добавить для проверки. ЗУПа под рукой нет, но если как в УПП, то последняя запись в регистре сведений не должна быть увольнение, тогда работает.
10 shuhard
 
11.08.12
18:05
(8)[ больше не буду Вас тревожить и друзьям посоветую сменить форум.]
мощный пук в лужу
11 m-serg74
 
11.08.12
18:07
))))
12 m-serg74
 
11.08.12
18:09
(9) какой регистр если он тупо из справочника берет