Имя: Пароль:
1C
1C 7.7
v7: Ну почему же не работает условие
,
0 8troyan8
 
17.11.12
14:06
Не работает запрос с условием. Ну просто не могу понять почему.
Реквизит Инвалид в спр.Сотрудники Число 1,0, Периодический.
Без условия выводит струдников. Есть идеи ?


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

КонецПроцедуры
1 m-serg74
 
17.11.12
14:13
перед запросом не помню точно но типа ИспользоватьДату
2 viktor_vv
 
17.11.12
14:14
А так ?

|Сотр = Справочник.Сотрудники.ТекущийЭлемент;
|Инвалид = Справочник.Сотрудники.Инвалид;
|Условие (Инвалид = 1);
3 viktor_vv
 
17.11.12
14:15
И это, инвалиды вообще есть в справочнике ?
4 8troyan8
 
17.11.12
14:16
Да есть конечно )
5 m-serg74
 
17.11.12
14:17
(3) реквизит "периодический"
6 viktor_vv
 
17.11.12
14:19
(5) В запросах всегда берется на дату окончания периода, если период не указан, то на рабочую вроде.
7 8troyan8
 
17.11.12
14:19
(2) Не помогло.. я уже хз что делать
8 m-serg74
 
17.11.12
14:20
тады ХЗ, *задумавшись* что мешает попробовать?
9 viktor_vv
 
17.11.12
14:22
(7) На всякий случай спрошу, тип значения реквизита Инвалид какой ?
10 m-serg74
 
17.11.12
14:22
Число 1,0, Периодический
11 viktor_vv
 
17.11.12
14:25
И такой код выведет хотя бы одну единицу ?

СпрСотр= СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент() = 1 Цикл
   Сообщить(""+СпрСотр.Инвалид.Получить(РабочаяДата()));
КонецЦикла ;
12 viktor_vv
 
17.11.12
14:30
И можно в запросе еще в явном виде период указать. А то по умолчанию может на ТА берется, вот тут не помню.


ДатаДанных = РабочаяДата() ;

ТекстЗапроса = "//{{ЗАПРОС(СписокСотрудников)
   |Период с ДатаДанных по ДатаДанных ;
   |Сотр = Справочник.Сотрудники.ТекущийЭлемент;
   |Инвалид = Справочник.Сотрудники.Инвалид;
   |Условие (Инвалид = 1);
13 m-serg74
 
17.11.12
14:32
(12) Период для чего?
14 m-serg74
 
17.11.12
14:33
(0) попробуй (1)
15 viktor_vv
 
17.11.12
14:34
(13) Не помню на какую дату берутся значения периодического реквизита, без периода. Могут браться на ТА при установленной компоненте оперучет, в конфе она может не использоваться, соотвественно ТА далеко взад стоит.
16 m-serg74
 
17.11.12
14:34
(15) - (8)
17 viktor_vv
 
17.11.12
14:38
Ага, вот из справки

Если в описании запроса оператор Период С опущен, то интервал дат форми­рования запроса устанавливается в точку актуальности итогов (ТА) (или на РабочуюДату, если не установлена компонента «Оперативный учет»), запрос формируется только на этот момент времени.
18 m-serg74
 
17.11.12
14:39
там про периобические реквизиты что то писано?
19 m-serg74
 
17.11.12
14:40
периобические читай периодические
20 viktor_vv
 
17.11.12
14:42
(18) Зуб даю, в запросе значения берутся на дату окончания периода :).
21 m-serg74
 
17.11.12
14:43
(20) - (8)
22 viktor_vv
 
17.11.12
14:52
(21) Че-то ТС пропал куда-то :).
23 8troyan8
 
17.11.12
17:00
Вот если делаю перебором то все нормально

Процедура Сформировать()
СпрСотр= СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент() = 1 Цикл
   Если СпрСотр.Инвалид.Получить(ТекущаяДата())=1 Тогда
   Сообщить(""+СпрСотр.Наименование);
   КонецЕсли;
КонецЦикла ;
КонецПроцедуры
24 ЧеловекДуши
 
17.11.12
17:25
(23)Тяжёлый, ты.
В запросе период укажи, у тебя же периодический реквизит :)
25 Азат
 
17.11.12
17:36
Функция ПолучитьИнвалида(Сотрудник)
  Возврат Сотрудник.Инвалид.Получить(ХерЗнаетКакаяТутДата);
КонецФункции

Процедура Сформировать()
ТекстЗапроса = "//{{ЗАПРОС(СписокСотрудников)

   |Сотр = Справочник.Сотрудники.ТекущийЭлемент;
   |Оклад = Справочник.Сотрудники.Оклад;
   |ТарифС = Справочник.Сотрудники.Тариф;
   |Должность = Справочник.Сотрудники.Должность;
   |Совместитель = Справочник.Сотрудники.ТипСотрудника;
   |ДатаПриема = Справочник.Сотрудники.ДатаПриема;
   |ДатаУвольнения = Справочник.Сотрудники.ДатаУвольнения;
   |Условие (ПолучитьИнвалида(Сотр)=1);
   |Группировка Сотр Упорядочить По Сотр.Наименование без групп;";
   
   Запрос = СоздатьОбъект("Запрос");
   Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
       Возврат;
   КонецЕсли;
   
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица");
   
   Пока Запрос.Группировка() = 1 Цикл
       Таб.ВывестиСекцию("Сотр");
   КонецЦикла;
   
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Таблица", "");    

КонецПроцедуры
26 8troyan8
 
17.11.12
17:38
И период указал всеровно нифига

ДатаДанных = РабочаяДата() ;
   
   ТекстЗапроса = "//{{ЗАПРОС(СписокСотрудников)
   |Период с ДатаДанных по ДатаДанных ;
   |Сотр = Справочник.Сотрудники.ТекущийЭлемент;
   |Оклад = Справочник.Сотрудники.Оклад;
   |Инвалид = Справочник.Сотрудники.Инвалид;
   |ТарифС = Справочник.Сотрудники.Тариф;
   |Должность = Справочник.Сотрудники.Должность;
   |Совместитель = Справочник.Сотрудники.ТипСотрудника;
   |ДатаПриема = Справочник.Сотрудники.ДатаПриема;
   |ДатаУвольнения = Справочник.Сотрудники.ДатаУвольнения;
   |Условие (Сотр.Инвалид=1);
   |Группировка Сотр Упорядочить По Сотр.Наименование без групп;";
27 Азат
 
17.11.12
17:40
автор, йобтвою, смотри в (25)
28 8troyan8
 
17.11.12
17:45
(27) Спасибо братуха !!!!
29 viktor_vv
 
17.11.12
17:49
(26) А если таки

   
   ТекстЗапроса = "//{{ЗАПРОС(СписокСотрудников)

   |Период с ДатаДанных по ДатаДанных ;
   |Сотр = Справочник.Сотрудники.ТекущийЭлемент;
   |Оклад = Справочник.Сотрудники.Оклад;
   |Инвалид = Справочник.Сотрудники.Инвалид;
   |Условие (Инвалид = 1) ;

А то все время так делаю, проблем не было.
30 ЧеловекДуши
 
17.11.12
17:56
(26)Может у тебя нет инвалидов :)