Имя: Пароль:
1C
1С v8
Запрос с параметром
0 Ira_19
 
21.12.11
21:38
Не получается заполнить поле на управляемой форме, являющееся списком выбора. Заполняю его результатом запроса:
&НаКлиенте
Процедура НомерТехнологическогоПроцессаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
НомерУзла=Объект.НомерУзлаДетали;
ЗаполнениеСпискаНомерОперации(ВыбранноеЗначение,НомерУзла);
КонецПроцедуры
(поля НомерТехнологическогоПроцесса и НомерУзлаДетали имеют тип СправочникСсылка)

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

Занесла данные из документа, откуда делаю выборку, в регистр сведений, попробовала из него извлечь, результат тот же. Если в качестве параметра устанавливаю один, например НомерУзлаДетали, то выборка работает, но в список заносится значение "Массив", а не конкретные значения.
Попробовала результат выборки загрузить в список значений, потом из него в СписокВыбора на форме - ничего не изменилось.

Есть другой способ занести данные:
Колонка=Документы.ВедомостьНормВремениДляПроизНоменклатуры.НайтиПоРеквизиту("НомерУзлаДетали",НомерУзла).НормыВремени.ВыгрузитьКолонку("ТехнологическийНомерОперации");
Элементы.ТехнологическийНомерОперации.СписокВыбора.ЗагрузитьЗначения(Колонка);

Но в этом случае заносится содержимое только последнего документа (а если несколько документов с одинаковыми номерами узлов?), но мне же нужна выборка по двум параметрам...

Подскажите, пожалуйста, что я не так делаю.
1 H A D G E H O G s
 
21.12.11
21:47
Бррр
2 Wingless
 
21.12.11
22:10
Можно начать с того, что посмотреть Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0) в отладчике.
4 Ira_19
 
21.12.11
22:41
2
в отладчике так и показывает
Значение             Тип
Массив               Массив
5 GROOVY
 
21.12.11
22:45
Насколько я вижу у функции нет оператора ВОЗВРАТ.
6 GROOVY
 
21.12.11
22:45
Следовательно вернет она НЕОПРЕДЕЛЕНО.
7 Ira_19
 
21.12.11
22:47
И что? я же при вызове не присваиваю её результат ничему.
Переименовала функцию в процедуру - ничего не изменилось.
8 Wingless
 
21.12.11
22:47
(4)
Отлично, а в массиве что?
9 Ira_19
 
21.12.11
22:52
а в массиве таблица значений.... ужас какой
10 GROOVY
 
21.12.11
22:53
Да, прохлопал... Сорри.
11 Конфигуратор1с
 
21.12.11
22:59
ВедомостьНормВремениДляПроизНоменклатуры.НормыВремени.(
| ТехнологическийНомерОперации
| ) это что такое?
12 Ira_19
 
21.12.11
23:00
это поле табличной части документа ВедомостьНормВремениДляПроизНоменклатуры, откуда делается выборка
13 Конфигуратор1с
 
21.12.11
23:06
(12) так а почему не сделать запрос к табличной части а не к документу?
14 GROOVY
 
21.12.11
23:07
И про регистр сведений уточните что вы имели в виду?
15 Конфигуратор1с
 
21.12.11
23:12
Такое смутное подозрение, хотя может и глупость горожу что он вам не значения с табчасти выгружает а элементы строк
16 Конфигуратор1с
 
21.12.11
23:13
элементы строк читать как строки
17 Ira_19
 
21.12.11
23:31
(13) пробовала так писать
Запрос.Текст=
"ВЫБРАТЬ
| НормыВремени.ТехнологическийНомерОперации
|ИЗ
| Документ.ВедомостьНормВремениДляПроизНоменклатуры.НормыВремени КАК НормыВремени
|ГДЕ
| НормыВремени.Ссылка.НомерУзлаДетали = &НомерУзла
| И НормыВремени.Ссылка.НомерТехнологическогоПроцесса = &НомерТехПроцесса";
безрезультатно
18 GROOVY
 
21.12.11
23:32
"ВЫБРАТЬ
| ТехнологическийНомерОперации
|ИЗ
| Документ.ВедомостьНормВремениДляПроизНоменклатуры.НормыВремени
|ГДЕ
| (Ссылка.НомерУзлаДетали, Ссылка.НомерТехнологическогоПроцесса) В (&НомерУзла, &НомерТехПроцесса)"
19 GROOVY
 
21.12.11
23:33
Технологический номер операции это что?
20 Ira_19
 
21.12.11
23:34
(14) я создавала регистр сведений, в который заносилися нужные мне поля, потом выборку писала по этому регистру.
Запрос=Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
  |    НормаВремениТО.ТехнологическийНомерОперации
  |ИЗ
  |    РегистрСведений.НормаВремениТО КАК НормаВремениТО
  |ГДЕ
  |    НормаВремениТО.НомерУзлаДетали = &НомерУзла";

НормаВремениТО - регистр, который заполняется при проведении документа ВедомостьНормВремениДляПроизНоменклатуры.
21 Ira_19
 
21.12.11
23:35
(19) смотрите ответ в (12)
22 GROOVY
 
21.12.11
23:40
(21) Поле табличной части? А как называется ТЧ? Как Вы к ней обращаетесь?
23 GROOVY
 
21.12.11
23:40
Я вообще вот про это: Элементы.ТехнологическийНомерОперации
24 Ira_19
 
21.12.11
23:41
(18) ошибка((
{Документ.НормыРасходаВспомМатериалов.Форма.ФормаДокумента(45)}: Ошибка при вызове метода контекста (Выполнить)
    Колонка = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0);
по причине:
{(6, 65)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
(Ссылка.НомерУзлаДетали, Ссылка.НомерТехнологическогоПроцесса) <<?>>В (&НомерУзла, &НомерТехПроцесса)
25 Ira_19
 
21.12.11
23:45
(22) в документе ВедомостьНормВремениДляПроизНоменклатуры есть 2 реквизита НомерУзлаДетали и НомерТехнологическогоПроцесса, а также табличная часть НормыВремени, в котором колонка называется ТехнологическийНомерОперации.
С помощью запроса для определённых значений реквизитов (их передаю в параметрах) я хочу получить все значения из колонки табличной части, чтобы потом загрузить их в список выбора на другой форме.
26 GROOVY
 
21.12.11
23:47
У меня отлично все загрузилось:

РезультатЗапроса = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Элементы.Контрагент.СписокВыбора.ЗагрузитьЗначения(РезультатЗапроса);

Это не Ваш пример, но логика одинаковая.

Запрос из (17) отрабатывает? Данные получает?
27 GROOVY
 
21.12.11
23:48
Ну попробуйте так...
(Ссылка.НомерУзлаДетали, Ссылка.НомерТехнологическогоПроцесса) В (ВЫБРАТЬ &НомерУзла, &НомерТехПроцесса)
28 Ira_19
 
21.12.11
23:52
(26) Ссылка - название колонки?
Запрос из (17) даёт аналогичный результат, что и выборка из документа.
29 GROOVY
 
21.12.11
23:55
(28) Да "Ссылка" это название поля из запроса.
30 GROOVY
 
21.12.11
23:56
У самого поля ввода "РежимВыбораИзСписка" включили?
31 Ira_19
 
21.12.11
23:58
(27) Ура!!!! Работает!!!
Написала так
Запрос.Текст=
"ВЫБРАТЬ
| ТехнологическийНомерОперации
|ИЗ
| Документ.ВедомостьНормВремениДляПроизНоменклатуры.НормыВремени
|ГДЕ
|(Ссылка.НомерУзлаДетали, Ссылка.НомерТехнологическогоПроцесса) В (ВЫБРАТЬ &НомерУзла, &НомерТехПроцесса)";
Запрос.УстановитьПараметр("НомерУзла", НомерУзла);
Запрос.УстановитьПараметр("НомерТехПроцесса", НомерТехПроцесса);
Колонка = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ТехнологическийНомерОперации");
Элементы.ТехнологическийНомерОперации.СписокВыбора.ЗагрузитьЗначения(Колонка);
(29) не сработал
(30) да, а иначе я бы списка не увидела, было бы обычное поле)
Спасибо БОЛЬШОЕ!!!
32 Ira_19
 
22.12.11
00:00
сорри (29) не сработал до того, как написала (Ссылка.НомерУзлаДетали, Ссылка.НомерТехнологическогоПроцесса) В (ВЫБРАТЬ &НомерУзла, &НомерТехПроцесса)
33 Ira_19
 
22.12.11
00:01
осталось теперь разобраться, почему именно так нужно писать условие
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой