|
условие в тексте запроса | ☑ | ||
---|---|---|---|---|
0
Alex1979rak
03.06.12
✎
16:32
|
Уважаемые коллеги.
Заранее прошу вас сильно не ругаться. Но... Помогите, пожалуйста, разобраться. В условии запроса можно применять две конструкции: В и В ИЕРАРХИИ. Внимательно читал ИТС, Синтакс-Помощник. Но так и не понял в каких случаях применяется В, а в каких В ИЕРАРХИИ. Первое условие, вроде, создано для того чтобы сравнить выражение со списком значений, а второе условие применяется, если сравниваю ссылку со списком, составленным из ссылок на объекты иерархического справочника. Объясните, пожалуйста, нюансы использования данной конструкции. |
|||
1
GROOVY
03.06.12
✎
16:38
|
Открой консоль запросов (на ИТС есть), попробуй выбрать элементы справочника, в качестве условия попробуй применять обе конструкции в параметр которых передавай группы, списки групп, списки элементов.
|
|||
2
aleks-id
03.06.12
✎
16:40
|
если используешь "В" то в качестве параметра передаешь список значений или массив
если используешь "В ИЕРАРХИИ" то в качестве параметра передаешь группу иерархического справочника |
|||
3
GROOVY
03.06.12
✎
16:41
|
Оператор В позволяет проверить, совпадает ли значение выражения, указанного справа от него, с одним из значений, описанных слева. Если совпадает хотя бы с одним – результатом оператора будет Истина, иначе – Ложь. Применение НЕ изменяет действие оператора на обратное. Сравнение значений производится по правилам сравнения значений.
Пример: ВЫБРАТЬ Справочник.Номенклатура.Наименование ГДЕ Справочник.Номенклатура.Родитель.Наименование В ("Бытовая техника", "Оргтехника") -------------------------------------------------------------------------------- Для справочников проверка может осуществляться и на принадлежность по иерархии. Результатом оператора В ИЕРАРХИИ будет ИСТИНА, если значение выражения слева является ссылкой на элемент справочника и входит во множество значений справа или иерархически принадлежит какой-нибудь группе, содержащейся в этом множестве: Пример: // В качестве параметра Группа в запрос передается ссылка // на какую-либо группу справочника Номенклатура. ВЫБРАТЬ Справочник.Номенклатура.Наименование ГДЕ Справочник.Номенклатура.Ссылка В ИЕРАРХИИ (&Группа) В качестве множества значений, на совпадение с которыми выполняется проверка, может фигурировать и результат запроса. В этом случае справа от оператора В необходимо указать описание запроса. Пример: ВЫБРАТЬ Справочник.Номенклатура.Наименование ГДЕ Справочник.Номенклатура.Ссылка В ИЕРАРХИИ ( ВЫБРАТЬ Справочник.Номенклатура.Ссылка ГДЕ Справочник.Номенклатура.Наименование = "Одежда" ) -------------------------------------------------------------------------------- Конфигуратор 1С:Предприятие 8 Форма оператора В для проверки совпадения значения с одним из результата запроса Примером применения данного оператора может послужить следующее: Пример: // Выбрать названия товаров, которые присутствовали в расходных накладных ВЫБРАТЬ Товары.Наименование ИЗ Справочник.Товары КАК Товары ГДЕ Товары.Ссылка В ( ВЫБРАТЬ РасхНаклСостав.Товар ИЗ Документ.РасхНакл.Состав КАК РасхНаклСостав ) Результат запроса: Товары Кран Вантус Стол Стул Для получения противоположного результата, то есть, если нужно определить, что значение не совпадает ни с одним из результата запроса, запрос выглядит следующим образом: Пример: // Выбрать названия товаров, которые присутствовали в расходных накладных ВЫБРАТЬ Товары.Наименование ИЗ Справочник.Товары КАК Товары ГДЕ Товары.Ссылка НЕ В ( ВЫБРАТЬ РасхНаклСостав.Товар ИЗ Документ.РасхНакл.Состав КАК РасхНаклСостав ) Результат запроса: Товары Сантехника Мебель Заметим, что из запроса операции В возможно обращение к полям таблиц, которые встречались во внешнем запросе до появления операции. Пример: // Выбрать названия товаров, которые присутствовали в расходных накладных ВЫБРАТЬ Товары.Наименование ИЗ Справочник.Товары КАК Товары ГДЕ Товары.Ссылка В ( ВЫБРАТЬ РасхНаклСостав.Товар ИЗ Документ.РасхНакл.Состав КАК РасхНаклСостав ГДЕ РасхНаклСостав.Товар = Товары.Ссылка ) Результат запроса: Товары Кран Вантус Стол Стул -------------------------------------------------------------------------------- © ООО "1С", 1996-2011. Все права защищены. |
|||
4
aleks-id
03.06.12
✎
16:42
|
(3) ядрен-батон... хоть бы скрыл такое полотенце
|
|||
5
GROOVY
03.06.12
✎
16:44
|
Такое полотенце должен по идеи скрывать движок форума.
|
|||
6
aleks-id
03.06.12
✎
16:45
|
стало еще хуже :)))
|
|||
7
Alex1979rak
03.06.12
✎
17:11
|
Объясню, почему встал такой вопрос.
Конечно, это для другого сайта. Решаю задачу 2.1 по специалисту. Там в доке ПриходДенег нужно составить запрос, в котором используется виртуальная таблица остатков регистра бухгалтерии. В параметрах этого регистра нужно указать условие с участием субконто Договор и Контрагент. Вот. |
|||
8
Alex1979rak
03.06.12
✎
17:13
|
(1, 2) спасибо
|
|||
9
GROOVY
03.06.12
✎
17:20
|
(7) Не забудь сначала отбор по видам субконто сделать.
|
|||
10
Alex1979rak
03.06.12
✎
17:38
|
Раз пошла такая пьянка...
В общем вот он сам "не совсем понятный, а точнее правильный ли" запрос: ВЫБРАТЬ УправленческийОстатки.Счет, УправленческийОстатки.Субконто1, УправленческийОстатки.Субконто2, ЕСТЬNULL(УправленческийОстатки.СуммаОстатокДт, 0) КАК СумОст, Табл.Сумма ИЗ Документ.ПриходДенег.Таблица КАК Табл ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки( &Дата, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В ИЕРАРХИИ (ВЫБРАТЬ РАЗЛИЧНЫЕ ТЧ.Контрагент ИЗ Табл КАК ТЧ ГДЕ ТЧ.ссылка = &Ссылка) И Субконто2 В ИЕРАРХИИ (ВЫБРАТЬ РАЗЛИЧНЫЕ ТЧ.Договор ИЗ Табл КАК ТЧ ГДЕ ТЧ.ссылка = &Ссылка)) КАК УправленческийОстатки ПО Табл.Контрагент = УправленческийОстатки.Субконто1 И Табл.Договор = УправленческийОстатки.Субконто2 ГДЕ Табл.Ссылка = &Ссылка Запрос.УстановитьПараметр("Дата",МоментВремени()); Запрос.УстановитьПараметр("Счет",ПланыСчетов.Управленческий.Покупатели); Запрос.УстановитьПараметр("Ссылка",Ссылка); Т.е. получается, что в этом запросе есть ошибка, что не указан отбор по видам субконто. Плюс на форуме уважаемого Павла Чистова один из форумчан высказался и по поводу параметра МоментВремени(), что его надо задавать как НОВЫЙ Граница(МоментВремени(), ВидГраницы.Включая). Насколько это правильно? |
|||
11
aleks-id
03.06.12
✎
17:40
|
Субконто1 В (ВЫБРАТЬ РАЗЛИЧНЫЕ
запрос не изучал. лень. |
|||
12
GROOVY
03.06.12
✎
17:46
|
(10) Не... ваапще все не так...
1. условие на значение счета, зачем Иерархия? 2. Нет отбора по видам субконто. 3. Условие на субконто правильнее накладывать как (Субконто1, Субконто2) В (ВЫБРАТЬ блаблабла), где "блаблабла" - это выбор заначения фильтра для отбора. В противном случае парсер запросов составит 2 условия и оно будет накладываться в 2 разе дольше. 4. Про моментВремени - тут надо понять какие остатки нужны с движениями или без? По регистрам бухгалтерии это маловероятно. Хотя зависит от задачи. Рекомендую: http://www.spec8.ru/dev-attestation-training |
|||
13
Alex1979rak
03.06.12
✎
17:50
|
(12) спасибо. вроде кое-что прояснилось. а на счет подготовки к аттестации, так я бы и рад, но... как всегда напряг со временем, ну и денег пока маловато. вот.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |