Имя: Пароль:
1C
 
НЕ могу разобраться в запросе из листинга по книге Радченко
0 mikkijon
 
09.10.19
14:21
Здравствуйте Друзья!!!
Помогите мне пожалуйста разобраться в запросе, а именно
"Запрос3.Текст = "ВЫБРАТЬ
| ОстаткиМатериаловОстатки.Материал,
| ОстаткиМатериаловОстатки.НаборСвойств,
| ОстаткиМатериаловОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ОстаткиМатериалов.Остатки( , (Материал, НаборСвойств) В
| (ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура,
| НоменклатураДокумента.НаборСвойств
| ИЗ
| НоменклатураДокумента) И Склад = &Склад)
| КАК ОстаткиМатериаловОстатки
|ГДЕ
| ОстаткиМатериаловОстатки.КоличествоОстаток < 0";
Запрос3.УстановитьПараметр("Склад", Склад);
РезультатЗапроса = Запрос3.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не хватает " + Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) +
" единиц материала """ + ВыборкаДетальныеЗаписи.Материал + """" +
" из набора свойств """ + ВыборкаДетальныеЗаписи.НаборСвойств + """";
Сообщение.Сообщить();
Отказ = Истина;
КонецЦикла;
…"
В данном запросе я не могу понять как воткнуть в параметр виртуальной таблицы Набор свойств листинг ниже
"РегистрНакопления.ОстаткиМатериалов.Остатки( , (Материал, НаборСвойств) В
| (ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура,
| НоменклатураДокумента.НаборСвойств
|"
1 Buster007
 
09.10.19
14:23
НоменклатураДокумента - это временная таблица. В ней должно быть поле НаборСвойств.
2 mikkijon
 
09.10.19
15:05
есть данное поле
Просто подробнее описать как там добавляется набор свойств  " (ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура,
| НоменклатураДокумента.НаборСвойств"
и "НоменклатураДокумента.НаборСвойств" по шагово
3 unregistered
 
09.10.19
15:09
Не могу понять - а что не устраивает в листинге (0), что конкретно не работает, и чего хочет автор?
В тексте запроса и в параметрах виртуальной таблицы и вложенного запроса уже присутствует поле НаборСвойств. Чего ещё надо?
4 КД5
 
09.10.19
15:15
(0) у тебя выбора нет, переучивайся на фьюжен)
5 mikkijon
 
09.10.19
15:20
| НоменклатураДокумента.Номенклатура,
| НоменклатураДокумента.НаборСвойств"
и "НоменклатураДокумента.НаборСвойств
Данную строчку нужно прописывать в параметре виртуальной таблицы. То есть нужно добавить "НаборСвойств"в строчку "(Материал, НаборСвойств)" и в строчку "(ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура,
| НоменклатураДокумента.НаборСвойств" Я не знаю как это сделать в окне произвольное выражение. В книге Радченко не описывается по поводу данного листинга а так у меня все работает
6 unregistered
 
09.10.19
15:26
(5) >> нужно добавить.

Что нужно добавить, если там уже всё есть? Или сейчас в тексте запроса этого нет, а тут ты выкладываешь уже то, что должно быть?
7 mikkijon
 
09.10.19
15:28
да
8 mikkijon
 
09.10.19
15:30
это листинг из книги
У меня не получается его создать у меня постоянно выдает ошибки
То не верный псевдоним
То неверный параметр
9 Windyhead
 
09.10.19
15:32
(0)Обзови  во вложенном запросе Номенклатуру как Материал, а то похоже он не видит поле "Материал"
"РегистрНакопления.ОстаткиМатериалов.Остатки( , (Материал, НаборСвойств) В
| (ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура КАК Материал,
| НоменклатураДокумента.НаборСвойств КАК НаборСвойств
|"
10 unregistered
 
09.10.19
15:43
(5) >> не знаю как это сделать в окне произвольное выражение.

В окне редактирования параметров виртуальной таблицы ОстаткиМатериаловОстатки в поле "Условие" нажимаешь кнопочку выбора (такая педалька с тремя точками). У тебя открывается диалог "Произвольное выражение".
В нижнем окне (текст выражения) с клавиатуры набираешь знак "(" (открывающая скобка).
Далее перетягиваешь мышкой из левой верхней секции окна поле "Номенклатура" в текст выражения после открывающей скобки.
Набираешь с клавиатуры знак "," (запятая).
Далее перетягиваешь мышкой из левой верхней секции окна поле "НаборСвойств" в текст выражения после открывающей скобки.
Набираешь с клавиатуры знак ")" (закрывающая скобка).
Набираешь с клавиатуры знак " " (пробел).
Набираешь с клавиатуры букву "В" (большая русская в).
Набираешь с клавиатуры знак " " (пробел).
Набираешь с клавиатуры знак "(" (открывающая скобка).
Набираешь с клавиатуры знак " " (пробел).
Набираешь с клавиатуры знак ")" (закрывающая скобка).

Должно получиться это


(Материал, НаборСвойств) В ( )


Затем выделяешь тот пробел, который оказался у тебя между последними скобками.
Нажимаешь правую кнопку мыши и выбираешь пункт "Конструктор запроса".
У тебя откроется конструктор запроса.
В этом конструкторе ты в источниках выбираешь временную таблицу (в самом низу) НоменклатураДокумента.
Из неё два поля - Номенклатура и НаборСвойств.
На вкладке "Объединения/Псевдонимы" можно ещё указать для поля "Номенклатура" псевдоним "Материал". Но по-моему это не обязательно.

Жмешь ОК. Конструктор вложенного запроса закроется. Получившийся текст появится в тексте произвольного выражения между скобками.

Должно получиться что-то вроде этого:


(Материал, НаборСвойств) В (ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура КАК Материал,
| НоменклатураДокумента.НаборСвойств)


Далее добавляешь в конец этого безобразия  " И Склад = &Склад". (хоть с клавиатуры, хоть перетаскивая мышью поле "Склад" из левого верхнего списка измерений.

Должно быть что-то типа этого.


(Материал, НаборСвойств) В (ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура КАК Материал,
| НоменклатураДокумента.НаборСвойств)
    И Склад = &Склад