Имя: Пароль:
1C
1С v8
"ВЫРАЗИТЬ" в языке запросов 1С 8.1
0 Сергей-88
 
03.11.11
11:58
Не очень понятна функция "Выразить" в языке запросов 1С, вот такая строчка что значит может кто подскажет?

ВЫРАЗИТЬ(СохраненныеНастройки.Пользователь КАК Справочник.ГруппыПользователей).ПользователиГруппы.Пользователь = &Пользователь
1 MatrosoV AleXXXand_R
 
03.11.11
11:59
СохраненныеНастройки.Пользователь - составной тип?
2 Fragster
 
гуру
03.11.11
12:00
Если СохраненныеНастройки.Пользователь не составного типа - то нафиг не нада. а вообще - через 2 точки в запросе условия писать - жесть
3 Jstunner
 
03.11.11
12:00
(0) ВЫРАЗИТЬ приводит значение к заданному типу
4 izekia
 
03.11.11
12:01
(2) а как посоветуешь, если там составной тип?
5 izekia
 
03.11.11
12:01
(1) да, пользователь или группа
6 Сергей-88
 
03.11.11
12:02
я не знаю составной или нет
7 izekia
 
03.11.11
12:02
я бы по-другому проверку сделал, но это неважно
8 izekia
 
03.11.11
12:02
(6) => (5)
9 Сергей-88
 
03.11.11
12:02
я вообще эту строчку не пойму... объясните ее пожалуйста?
10 izekia
 
03.11.11
12:11
у СохраненныеНастройки.Пользователи.Пользователь составной тип данных: СправочникСсылка.Пользователи, СправочникСсылка.ГруппыПользователей
так доступно?
11 Сергей-88
 
03.11.11
12:31
да. получается мы переводим тип данных ссылки пользователя МИХАИЛ с типа - справочник.пользователи на тип Справочник.ГруппыПользователей и обращанемся через точку к полю-пользователь....вроде так.?
12 Wobland
 
03.11.11
12:32
составной, не составной... на кой ВЫРАЗИТЬ в(0) вообще? и так же будет работать?
13 izekia
 
03.11.11
12:33
а мне вообще запрос в (0) не нравится, точнее условие
14 Defender aka LINN
 
03.11.11
12:34
(11) Нет, не так.
15 Сергей-88
 
03.11.11
12:34
это из типовой УТ =)
16 Сергей-88
 
03.11.11
12:34
Defender aka LINN а как?
17 izekia
 
03.11.11
12:55
(16) мы в этом случае джойним только одну таблицу вместо двух
18 Defender aka LINN
 
03.11.11
13:14
(16) Пользователь превратится в NULL.
19 izekia
 
03.11.11
13:28
(18) я прямо представил это
20 Fragster
 
гуру
03.11.11
13:50
в полночь
21 Ахиллес
 
03.11.11
13:52
(20) В полночь всё станет Неопределено.
22 Сергей-88
 
03.11.11
13:52
ни чего не понял=)
23 Ахиллес
 
03.11.11
13:54
Если ничего не получается, прочтите наконец инструкцию.
24 Сергей-88
 
03.11.11
13:58
ведь нет ее)
25 izekia
 
03.11.11
14:06
о, а кстати, вообще в (0) условие работать не будет
(24) дай текст запроса целиком?
26 Сергей-88
 
03.11.11
14:09
izekia как это не будет это типовая конфигурация УТ 10.3 =)
27 izekia
 
03.11.11
14:10
(26) текст всего запроса покажи?
28 Сергей-88
 
03.11.11
14:10
izekia можешь объяснить что значит эта строка несложным языком?)
29 Сергей-88
 
03.11.11
14:10
Функция ПолучитьНастройкуИспользоватьПриОткрытии(СтруктураНастройки) Экспорт
   
   Если ТипЗнч(СтруктураНастройки) <> Тип("Структура") Тогда
       
       Возврат Ложь;
       
   КонецЕсли;
   
   Запрос = Новый Запрос(
   "ВЫБРАТЬ ПЕРВЫЕ 1
   |    ВложенныйЗапрос.НаименованиеНастройки КАК НаименованиеНастройки,
   |    ВложенныйЗапрос.СохраненнаяНастройка КАК СохраненнаяНастройка,
   |    ВложенныйЗапрос.СохранятьАвтоматически КАК СохранятьАвтоматически
   |ИЗ
   |    (ВЫБРАТЬ ПЕРВЫЕ 1
   |        СохраненныеНастройки.НаименованиеНастройки КАК НаименованиеНастройки,
   |        СохраненныеНастройки.СохраненнаяНастройка КАК СохраненнаяНастройка,
   |        СохраненныеНастройки.СохранятьАвтоматически КАК СохранятьАвтоматически,
   |        0 КАК ВидНастройки
   |    ИЗ
   |        РегистрСведений.СохраненныеНастройки КАК СохраненныеНастройки
   |    ГДЕ
   |        СохраненныеНастройки.ИмяОбъекта = &ИмяОбъекта
   |        И СохраненныеНастройки.ИспользоватьПриОткрытии = ИСТИНА
   |        И СохраненныеНастройки.Пользователь = &Пользователь
   |    
   |    ОБЪЕДИНИТЬ ВСЕ
   |    
   |    ВЫБРАТЬ ПЕРВЫЕ 1
   |        СохраненныеНастройки.НаименованиеНастройки,
   |        СохраненныеНастройки.СохраненнаяНастройка,
   |        СохраненныеНастройки.СохранятьАвтоматически,
   |        1
   |    ИЗ
   |        РегистрСведений.СохраненныеНастройки КАК СохраненныеНастройки
   |    ГДЕ
   |        СохраненныеНастройки.ИмяОбъекта = &ИмяОбъекта
   |        И СохраненныеНастройки.ИспользоватьПриОткрытии = ИСТИНА
   |        И ВЫРАЗИТЬ(СохраненныеНастройки.Пользователь КАК Справочник.ГруппыПользователей).ПользователиГруппы.Пользователь = &Пользователь
   |    
   |    ОБЪЕДИНИТЬ ВСЕ
   |    
   |    ВЫБРАТЬ ПЕРВЫЕ 1
   |        СохраненныеНастройки.НаименованиеНастройки,
   |        СохраненныеНастройки.СохраненнаяНастройка,
   |        СохраненныеНастройки.СохранятьАвтоматически,
   |        2
   |    ИЗ
   |        РегистрСведений.СохраненныеНастройки КАК СохраненныеНастройки
   |    ГДЕ
   |        СохраненныеНастройки.ИмяОбъекта = &ИмяОбъекта
   |        И СохраненныеНастройки.Пользователь = НЕОПРЕДЕЛЕНО
   |        И СохраненныеНастройки.ИспользоватьПриОткрытии = ИСТИНА) КАК ВложенныйЗапрос
   |
   |УПОРЯДОЧИТЬ ПО
   |    ВложенныйЗапрос.ВидНастройки");
       
   Если СтруктураНастройки.Свойство("Пользователь") И ЗначениеЗаполнено(СтруктураНастройки.Пользователь) Тогда
                   
       Запрос.УстановитьПараметр("Пользователь", СтруктураНастройки.Пользователь);
                   
   Иначе
                   
       Запрос.УстановитьПараметр("Пользователь", ПараметрыСеанса.ТекущийПользователь);
                   
   КонецЕсли;
   
   Запрос.УстановитьПараметр("ИмяОбъекта", СтруктураНастройки.ИмяОбъекта);
       
   РезультатЗапроса = Запрос.Выполнить();
       
   Если РезультатЗапроса.Пустой() Тогда
           
       Возврат Ложь;
           
   Иначе
           
       ВыборкаИзРезультатаЗапроса = РезультатЗапроса.Выбрать();
       ВыборкаИзРезультатаЗапроса.Следующий();
       
       СтруктураНастройки.Вставить("НаименованиеНастройки", ВыборкаИзРезультатаЗапроса.НаименованиеНастройки);
       СтруктураНастройки.Вставить("СохраненнаяНастройка", ВыборкаИзРезультатаЗапроса.СохраненнаяНастройка.Получить());
       СтруктураНастройки.Вставить("ИспользоватьПриОткрытии", Истина);
       СтруктураНастройки.Вставить("СохранятьАвтоматически", ВыборкаИзРезультатаЗапроса.СохранятьАвтоматически);
       
   КонецЕсли;
   
   Возврат Истина;
   
КонецФункции // ПолучитьНастройкуИспользоватьПриОткрытии()
30 izekia
 
03.11.11
14:11
по идее то что она для условия делает джойн только с одной таблицей, вместо двух
31 Сергей-88
 
03.11.11
14:11
джойн -это что?
32 Сергей-88
 
03.11.11
14:12
izekia кинь аську свою)
33 izekia
 
03.11.11
14:12
забавно, не знал что так можно
джойн - это соединение, аську кинуть не могу, извини
34 izekia
 
03.11.11
14:14
то есть у тебя там составной тип, каждый раз когда ты обращаешься (здесь не надо понимать меня неправильно) к реквизиту - делается соединение с теми таблицами, которые учавствуют в составном типе, соответственно когда ты пишешь конструкцию выразить, то ты тем самым отсекаешь ненужные тебе таблицы
35 Сергей-88
 
03.11.11
14:19
понятно...  а вот дальше через точку .ПользователиГруппы.Пользователь =

это получается я обращаюсь к справочнику - группы пользователей, но ведь там нет реквизита - ПользователиГруппы..
36 izekia
 
03.11.11
14:23
(35) это табличная часть, я поэтому написал, что не думал, что такое возможно
37 Fram
 
03.11.11
14:32
(33) это догадки или проверено?
38 Fram
 
03.11.11
14:32
(37) -> (34)
39 izekia
 
03.11.11
14:35
(38) скажем так, это та информация которую я услышал не из официальных источников, но сам не проверял
считаю, что логически это и должно быть так ...
40 izekia
 
03.11.11
14:36
(38) при запросах к бухрегистрам применение выразить оптимизирует выполнение запроса именно за счет сокращения таблиц участвующих в запросе
41 Inform
 
03.11.11
14:41
42 izekia
 
03.11.11
14:41
(41)можно выдержку краткую из ссылки?
43 Inform
 
03.11.11
14:44
44 izekia
 
03.11.11
14:52
(43) ну да, спасибо
кстати, получил ответ на свой вопрос относительно временных таблиц и вложенных запросов
45 Сергей-88
 
03.11.11
15:13
izekia точно табличная часть!