Имя: Пароль:
1C
1С v8
ВЫБРАТЬ ИЗ &СписокЗначений
0 varyag
 
13.02.15
12:24
Товарищи!
"Выбрать из &ТЗ" использовал сто раз. А Можно ли в качестве источника передать список значений?
1 piter3
 
13.02.15
12:25
для зачем
2 varyag
 
13.02.15
12:26
ну надо.. В консоли то запросов работает:
        "ВЫБРАТЬ
        |    СписокАртикулов.Значение КАК Артикул
        |ПОМЕСТИТЬ ВТ_СписокАртикулов
        |ИЗ
        |    &СписокАртикулов КАК СписокАртикулов
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ГруппыАналогов.ИдентификаторГруппы,
        |    ВТ_СписокАртикулов.Артикул
        |ПОМЕСТИТЬ ВТ_Аналоги
        |ИЗ
        |    ВТ_СписокАртикулов КАК ВТ_СписокАртикулов
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыАналогов КАК ГруппыАналогов
        |        ПО ВТ_СписокАртикулов.Артикул = ГруппыАналогов.Артикул
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_Аналоги.Артикул КАК АртикулНоменклатуры,
        |    ГруппыАналогов.Артикул КАК АртикулАналога,
        |    ВЫБОР
        |        КОГДА ГруппыАналогов.Производитель = ЗНАЧЕНИЕ(Справочник.Производители.ПустаяСсылка)
        |            ТОГДА ""Не указан""
        |        ИНАЧЕ ГруппыАналогов.Производитель.Наименование
        |    КОНЕЦ КАК Производитель,
        |    ГруппыАналогов.Наименование
        |ИЗ
        |    ВТ_Аналоги КАК ВТ_Аналоги
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыАналогов КАК ГруппыАналогов
        |        ПО (ГруппыАналогов.ИдентификаторГруппы = ВТ_Аналоги.ИдентификаторГруппы)
        |            И (ГруппыАналогов.Артикул <> ВТ_Аналоги.Артикул)
        |
        |УПОРЯДОЧИТЬ ПО
        |    АртикулНоменклатуры
        |ИТОГИ ПО
        |    АртикулНоменклатуры";
3 varyag
 
13.02.15
12:31
А в реале пишет
Ошибка при вызове метода контекста (Выполнить)
    Результат = Запрос.Выполнить();
по причине:
{(2, 2)}: Тип не может быть выбран в запросе
<<?>>СписокАртикулов.Значение КАК Артикул
4 salvator
 
13.02.15
12:35
(3) Колонки должны быть явно типизированы.
5 mikecool
 
13.02.15
12:35
(3) надо жестко типизировать значение, иначе работать не будет
для ТЗ указываются типы колонок, для СЗ такого не сделаешь
6 varyag
 
13.02.15
12:38
(5) Т.е. СЗ вообще невозможно типизировать?
7 Timon1405
 
13.02.15
12:38
(0) Надо СЗ в массив переделать
8 kosts
 
13.02.15
12:38
Всегда так делал

"ВЫБРАТЬ
        |    Ссылка КАК Артикул
        |ПОМЕСТИТЬ ВТ_СписокАртикулов
        |ИЗ Справочник.Артикулы как Артикулы
        |ГДЕ    Ссылка в (&СписокАртикулов)
        |;
9 varyag
 
13.02.15
12:39
(7) легко) а поможет? щас попроую
10 varyag
 
13.02.15
12:39
(8) не то...
11 WebberNSK
 
13.02.15
12:45
Создай таблицу заполни колонку по массиву значений из списка и все
12 Timon1405
 
13.02.15
12:50
(11) Зачем такие сложности,если можно просто массив передать?
13 varyag
 
16.02.15
05:18
(11) Делаю так:

    МассивАртикулов = СписокАртикулов.ВыгрузитьЗначения();
    
    ЗапросМассив = Новый Запрос("ВЫБРАТЬ
        |*
        |ПОМЕСТИТЬ ВТ_МассивАртикулов
        |ИЗ
        |    &МассивАртикулов КАК СписокАртикулов
        |");
    ЗапросМассив.УстановитьПараметр("МассивАртикулов", МассивАртикулов);


{Форма.Форма.Форма(22)}: Ошибка при вызове метода контекста (Выполнить)
    Результат = ЗапросМассив.Выполнить().Выгрузить();
по причине:
{(5, 2)}: Неверные параметры "МассивАртикулов"
<<?>>&МассивАртикулов КАК СписокАртикулов

    Результат = ЗапросМассив.Выполнить().Выгрузить();
14 varyag
 
16.02.15
05:21
(13) к (12)
(11) это понятно - создавать лишние объекты. Интересно так решить, если нельзя - тогда уже буду ТЗ юзать
15 varyag
 
16.02.15
05:40
Уже решил через ТЗ попробовать - так она не заполняется через ВыгрузитьЗначения(), неужели перебором строк только?
http://storage3.static.itmages.ru/i/15/0216/h_1424054406_2578905_c415e3b056.jpg
16 SeraFim
 
16.02.15
06:18
Все нормально работает
    СписокЗначений = Новый СписокЗначений;
    СписокЗначений.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");
    СписокЗначений.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Колбаска"));
    СписокЗначений.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Печеньки"));
    СписокЗначений.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Пряники"));
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("СписокНоменклатуры", СписокЗначений);
    Запрос.Текст =
        "ВЫБРАТЬ
        |    СписокНоменклатуры.Значение КАК Номенклатура
        |ПОМЕСТИТЬ ВТНоменклатура
        |ИЗ
        |    &СписокНоменклатуры КАК СписокНоменклатуры
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТНоменклатура.Номенклатура
        |ИЗ
        |    ВТНоменклатура КАК ВТНоменклатура";

    Результат = Запрос.Выполнить();

    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл
        Сообщить(Выборка.Номенклатура);
    КонецЦикла;
17 varyag
 
16.02.15
06:30
(16) У меня в списке тип строка. Может в этом дело, щас попробую
    СписокАртикулов.ТипЗначения = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(25,ДопустимаяДлина.Переменная));
18 varyag
 
16.02.15
06:34
(16) Заработало)
А можно ли представление списка типизировать?))
19 varyag
 
16.02.15
06:47
Всем спасибо. Сделал в итоге добавление еще одной ВТ. А для списка значений жесткое типизирование:

Процедура КнопкаВыполнитьНажатие(Кнопка)

    // Для работы запроса необходимо жесткое типизирование
    СписокНоменклатуры.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    СписокНоменклатуры.Значение КАК Номенклатура
        |ПОМЕСТИТЬ ВТ_Номенклатура
        |ИЗ
        |    &СписокНоменклатуры КАК СписокНоменклатуры
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_Номенклатура.Номенклатура.Артикул КАК Артикул
        |ПОМЕСТИТЬ ВТ_СписокАртикулов
        |ИЗ
        |    ВТ_Номенклатура КАК ВТ_Номенклатура
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ГруппыАналогов.ИдентификаторГруппы,
        |    ВТ_СписокАртикулов.Артикул
        |ПОМЕСТИТЬ ВТ_Аналоги
        |ИЗ
        |    ВТ_СписокАртикулов КАК ВТ_СписокАртикулов
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыАналогов КАК ГруппыАналогов
        |        ПО ВТ_СписокАртикулов.Артикул = ГруппыАналогов.Артикул
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_Аналоги.Артикул КАК АртикулНоменклатуры,
        |    ГруппыАналогов.Артикул КАК АртикулАналога,
        |    ВЫБОР
        |        КОГДА ГруппыАналогов.Производитель = ЗНАЧЕНИЕ(Справочник.Производители.ПустаяСсылка)
        |            ТОГДА ""Не указан""
        |        ИНАЧЕ ГруппыАналогов.Производитель.Наименование
        |    КОНЕЦ КАК Производитель,
        |    ГруппыАналогов.Наименование
        |ИЗ
        |    ВТ_Аналоги КАК ВТ_Аналоги
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыАналогов КАК ГруппыАналогов
        |        ПО (ГруппыАналогов.ИдентификаторГруппы = ВТ_Аналоги.ИдентификаторГруппы)
        |            И (ГруппыАналогов.Артикул <> ВТ_Аналоги.Артикул)
        |
        |УПОРЯДОЧИТЬ ПО
        |    АртикулНоменклатуры
        |ИТОГИ ПО
        |    АртикулНоменклатуры";

    Запрос.УстановитьПараметр("СписокНоменклатуры", СписокНоменклатуры);

    Результат = Запрос.Выполнить();

    ВыборкаАртикулы = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
20 yavasya
 
16.02.15
07:34
(16) голодный)
21 varyag
 
16.02.15
10:21
(20) :D
AdBlock убивает бесплатный контент. 1Сергей