Имя: Пароль:
1C
1С v8
Ошибка при передаче массива в запрос в качестве параметра - УФ
0 Григорополисец
 
22.04.22
23:00
Здравствуйте!

Опять я решил обратиться к гуру 1С.
В общем, у меня проблема, связанная с ошибкой при исполнении метода ВЫПОЛНИТЬ() запроса.

Написание:

-----------------------------------------------------
    СписокМагазиновМассив = Новый Массив;
    Для каждого Стр Из ЭтаФорма.СписокМагазинов Цикл
        СписокМагазиновМассив.Добавить(Стр);
    КонецЦикла;    
    
    Узнать = Новый Запрос;
    Узнать.Текст = "ВЫБРАТЬ
               |    ХозрасчетныйОстатки.Счет КАК Счёт,
               |    ХозрасчетныйОстатки.Подразделение КАК Подразделение,
               |    ХозрасчетныйОстатки.Субконто1 КАК РасходБудущихПериодов,
               |    СУММА(ХозрасчетныйОстатки.СуммаОстаток) КАК Сумма
               |ИЗ
               |    РегистрБухгалтерии.Хозрасчетный.Остатки(
               |            КОНЕЦПЕРИОДА(&Дата1, ДЕНЬ),
               |            Счет = &СчётУчёта,
               |            ,
               |            Подразделение В (&СписокМагазинов)
               |                И Организация В (&Организация)) КАК ХозрасчетныйОстатки
               |
               |СГРУППИРОВАТЬ ПО
               |    ХозрасчетныйОстатки.Счет,
               |    ХозрасчетныйОстатки.Субконто1,
               |    ХозрасчетныйОстатки.Подразделение
               |
               |УПОРЯДОЧИТЬ ПО
               |    Счёт,
               |    РасходБудущихПериодов,
               |    Подразделение
               |АВТОУПОРЯДОЧИВАНИЕ";
    
    Узнать.УстановитьПараметр("Дата1", ЭтаФорма.ДатаОстатка);
    Узнать.УстановитьПараметр("СчётУчёта", ПланыСчетов.Хозрасчетный.НайтиПоНаименованию("Прочие расходы будущих периодов", Истина));
    Узнать.УстановитьПараметр("СписокМагазинов", СписокМагазиновМассив);
    Узнать.УстановитьПараметр("Организация", Справочники.Организации.НайтиПоКоду("00-000001", Истина));
    
    Вып = Узнать.Выполнить();
-----------------------------------------------------
Выдаёт это дело следующую ошибку.

Ошибка при вызове метода контекста (Выполнить)
    Вып = Узнать.Выполнить();
по причине:
{(11, 21)}: Неверные параметры
Подразделение В (<<?>>&СписокМагазинов)
-----------------------------------------------------

Уже второй день очень счастлив, не понимая, что не так. Похожие темы на форумах есть, но я там ответа не нашёл. Либо не увидел ввиду недостаточности опыта.
P.S. Пробовал на простой форме точно такую же конструкцию, там всё отлично.

Пожалуйста, помогите советов или киньте хотя бы ссылку на ликбезную ветку.

Заранее благодарен!
1 Григорополисец
 
22.04.22
23:04
И ещё обнаружил, что в обычной форме у массива тип элемента это тип непосредственно тип объекта, а в управляемой форме - это ДанныеФормыЭлементКоллекции.
2 Ёпрст
 
22.04.22
23:48
(0) открой отладчик и посмотри, чему равна переменная стр в цикле вот тут :
СписокМагазиновМассив.Добавить(Стр);
3 ДедМорроз
 
23.04.22
00:13
Так данные формы элемент коллекции - это строка таблицы на форме,а вам нужно получить поле этой таблицы,то есть поставить еще точку и имя поля.
4 Григорополисец
 
23.04.22
07:00
(3) Благодарю Вас! Вы решили проблему. Дело было действительно в том, что "Стр сама по себе помещала в массив не элемент справочника "Подразделения", а ДанныеФормыЭлементКоллекции. Решение, конечно же, лежало на поверхности.
5 Григорополисец
 
23.04.22
07:03
(2) Решение было предложено ДедМорозом. Как он и заметил, в данном случае мною через "Стр" помещалось в массив не сам элемент справочника.
Но всё равно я благодарен Вам за внимание!
6 Ненавижу 1С
 
гуру
25.04.22
07:49
Откуда желание называть переменные глаголами?
7 XLife
 
25.04.22
08:09
(6) а ники?
8 Ненавижу 1С
 
гуру
25.04.22
08:16
(7) это другое, понимать надо (с)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан