Имя: Пароль:
1C
1С v8
Как в запросе передать параметром тип?
0 Amiralnar
 
15.08.11
12:28
Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ОбъектыДоступаДокументов.ДокументСсылка
   |ИЗ
   |    РегистрСведений.ОбъектыДоступаДокументов КАК ОбъектыДоступаДокументов
   |ГДЕ
   |    ОбъектыДоступаДокументов.ДокументСсылка ССЫЛКА &ТипОбъекта";
   Запрос.УстановитьПараметр("ТипОбъекта", ОбъектДоступа);
   Результат = Запрос.Выполнить();


ОбъектДоступа - описание типов. щас попробую передать там "Тип", но ругается на то, что ожидается описание таблицы.


Нужно выделить регистраторы определенного типа, которые указывает пользователь.
1 Axel2009
 
15.08.11
12:29
текст запроса рисуй
2 asady
 
15.08.11
12:29
(0) тупо строку туда
3 vde69
 
15.08.11
12:29
ОбъектыДоступаДокументов.ДокументСсылка ССЫЛКА Справочник.Номенклатура
4 Axel2009
 
15.08.11
12:29
ЗЫ а что в объектдоступа написано?
5 Amiralnar
 
15.08.11
12:32
(4) ОписаниеТипов
6 Amiralnar
 
15.08.11
12:32
(3) Нужно выделить регистраторы определенного типа, которые указывает пользователь.
7 Живой Ископаемый
 
15.08.11
12:33
8.2?
8 vde69
 
15.08.11
12:34
примерно так

   |ГДЕ
   |    ОбъектыДоступаДокументов.ДокументСсылка ССЫЛКА Документ.ПКО
   |    ИЛИ ОбъектыДоступаДокументов.ДокументСсылка ССЫЛКА Документ.РКО";
9 Maxus43
 
15.08.11
12:35
или ТипЗнч(ОбъектыДоступаДокументов.ДокументСсылка) В (&Типы)
10 Живой Ископаемый
 
15.08.11
12:36
ГДЕ
ТипЗначения(ОбъектыДоступаДокументов.ДокументСсылка) = ТипЗначения(Значение(Документ.ПКО.ПустаяССылка))

или
11 Maxus43
 
15.08.11
12:39
(10) быстрей чем (8) будет? там меньше писать хоть)
12 Живой Ископаемый
 
15.08.11
12:40
можно короче, но щас...
13 Amiralnar
 
15.08.11
12:40
(10) ОК.

ГДЕ
ТипЗначения(ОбъектыДоступаДокументов.ДокументСсылка) В (&ТипыЗначения)
14 Amiralnar
 
15.08.11
12:44
получилось так:

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



Кстати, полезно при обновлениях на 8.2. Ибо в этом регистре не очищается запись, если удаляется тип документа,и появляется сообщение о невозможности обновления из-за неуникальности записей этого регистра.
Закон Брукера: Даже маленькая практика стоит большой теории.