Имя: Пароль:
1C
1С v8
установка параметров в запросе
,
0 alex75274
 
18.02.22
09:11
подскажите пожалуйста , не задано значение параметра номера, не пойму в чем дело, я начинающий так что не ругайте
Запрос1 = Новый Запрос;
    Запрос1.Текст =
        "ВЫБРАТЬ
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.Ссылка КАК Ссылка,
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.Номенклатура.Ссылка КАК НоменклатураСсылка1,
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.НомерСтроки КАК НомерСтроки,
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.Номенклатура.Артикул КАК НоменклатураАртикул,
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.Характеристика.Ссылка КАК ХарактеристикаСсылка,
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.Серия.Ссылка КАК СерияСсылка,
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.КоличествоУпаковок КАК КоличествоУпаковок,
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.Упаковка.Ссылка КАК УпаковкаСсылка,
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.ДатаРасхода КАК ДатаРасхода,
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.СтатьяКалькуляции.Ссылка КАК СтатьяКалькуляцииСсылка,
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.Ссылка.Номер КАК Ном1
        |ИЗ
        |    Документ.ЭтапПроизводства2_2.РасходМатериаловИРабот КАК ЭтапПроизводства2_2РасходМатериаловИРабот
        |ГДЕ
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.Ссылка.Номер = &номера";
    
          Для Каждого Стр Из Таблица Цикл
ном1=стр.номер;
номера=новый массив;
Номера.Добавить(ном1);
Конеццикла;
        Запрос1.УстановитьПараметр("Списокномеров",номера);
смотрел в отладчике в ном1 данные есть
таблица это таблицаЗначений с номерами документов, она визуальная номера вижу
1 vicof
 
18.02.22
09:14
в (&Номера)
2 Kigo_Kigo
 
18.02.22
09:16
номера=новый массив;
Для Каждого Стр Из Таблица Цикл
ном1=стр.номер;
Номера.Добавить(ном1);
Конеццикла;
3 alex75274
 
18.02.22
09:32
|    ЭтапПроизводства2_2РасходМатериаловИРабот.Ссылка.Номер = &номера";

номера=новый массив;
Для Каждого Стр Из Таблица Цикл
ном1=стр.номер;
Номера.Добавить(ном1);
Конеццикла;


тоже самое параметр не найден, но в ном1 в отладчике есть
пишу
|ГДЕ
        |    ЭтапПроизводства2_2РасходМатериаловИРабот.Ссылка.Номер = в (&номера)";
синтаксическая ошибка
4 Amra
 
18.02.22
09:36
Запрос1.УстановитьПараметр("номера",Списокномеров); тогда уж. То есть имя параметра идет первым
5 ДенисЧ
 
18.02.22
09:36
Номер = в (&номера)

Это интересное решение. Правда, чревато. Отрыванием рук...
6 alex75274
 
18.02.22
09:48
Запрос1.УстановитьПараметр("номера",Списокномеров);

{ВнешняяОбработка.ВнешняяОбработка2.Форма.Форма.Форма(181,39)}: Переменная не определена (Списокномеров)
        Запрос1.УстановитьПараметр("номера",<<?>>Списокномеров); (Проверка: Сервер)
пробовал Номер  в (&номера)  параметр не найден
7 alex75274
 
18.02.22
09:49
подскажите пожалуйста
8 hhhh
 
18.02.22
09:52
(7) Запрос1.УстановитьПараметр("номера",номера);
9 ДенисЧ
 
18.02.22
09:53
номера=новый массив;
...
УстановитьПараметр("номера",Списокномеров);


не вяжется
10 alex75274
 
18.02.22
09:59
спасибо получилось(8)
11 del123
 
18.02.22
10:20
производство то не встанет из-за таких запросов?)
12 Amra
 
18.02.22
10:24
(11) "Нифига себе у вас запросы" сказала база данных и упала
13 Dmitrii
 
гуру
18.02.22
10:31
И убери из запроса лишние ".Ссылка". Например, реквизит "Номенклатура" в табличной части это стопудово уже ссылка на элемент справочника. Зачем от этой ссылки получать ещё раз ссылку?

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


Не знаю какую задачу ты решаешь и что там у тебя за таблица с номерами, но реализация - бред.
Если есть таблица, нафига заполнять какие-то массивы, если ты можешь в запросе использовать таблицы?
А ещё подумай - как будет работать твой запрос, когда с нового года нумерация начнётся сначала и в базе появится несколько документов с одинаковым номером.
14 АгентБезопасной Нацио
 
18.02.22
10:37
(11) если на производство нанимают таких сотрудников - значит, не такое уж и важное производство.
15 Velis
 
18.02.22
10:52
Для общего развития:

Для Каждого Стр Из Таблица Цикл
ном1=стр.номер;
номера=новый массив;
Номера.Добавить(ном1);
Конеццикла;

Получается для каждой строки таблицы создается массив и в него записывается значение текущей строки ?
Тогда странно - на выходе цикла будет массив с одним элементом - последним. Зачем тогда массив использовать ?
16 ДенисЧ
 
18.02.22
10:57
(15) С чего один?
17 del123
 
18.02.22
11:02
(16) А сколько, если в запросе постоянно новый массив создавать?