Имя: Пароль:
1C
 
Передача выделенных строк в запрос, что не так?
0 ig0z
 
16.12.16
09:34
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ТЧПодготовка.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ВремТаб
    |ИЗ
    |    &ТЧПодготовка КАК ТЧПодготовка
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ПеремещениеТМЦТМЦ.Ссылка,
    |    ПеремещениеТМЦТМЦ.НомерСтроки,
    |    ПеремещениеТМЦТМЦ.Номенклатура,
    |    ПеремещениеТМЦТМЦ.ЕдиницаИзмерения,
    |    ПеремещениеТМЦТМЦ.Коэффициент,
    |    ПеремещениеТМЦТМЦ.Количество,
    |    ПеремещениеТМЦТМЦ.ПроизводственныйЗаказ
    |ИЗ
    |    Документ.ПеремещениеТМЦ.ТМЦ КАК ПеремещениеТМЦТМЦ
    |ГДЕ
    |    ПеремещениеТМЦТМЦ.Ссылка В(&ВремТаб)
    |
    |СГРУППИРОВАТЬ ПО
    |    ПеремещениеТМЦТМЦ.Ссылка,
    |    ПеремещениеТМЦТМЦ.НомерСтроки,
    |    ПеремещениеТМЦТМЦ.Номенклатура,
    |    ПеремещениеТМЦТМЦ.ЕдиницаИзмерения,
    |    ПеремещениеТМЦТМЦ.Количество,
    |    ПеремещениеТМЦТМЦ.ПроизводственныйЗаказ
    |";
    
    ВыделенныеСтроки = ЭлементыФормы.ТЧДокументы.ВыделенныеСтроки;
    ТаблицыЗначений = Новый ТаблицаЗначений;
    ТаблицыЗначений.Колонки.Добавить("Ссылка");
    Для Каждого Строка Из ВыделенныеСтроки Цикл
        Стр = ТаблицыЗначений.Добавить();        
        Стр.Ссылка = Строка;
    КонецЦикла;
    
    Запрос.УстановитьПараметр("ТЧПодготовка",ТаблицыЗначений);
    Выгрузка = Запрос.Выполнить().Выгрузить();


Ошибка:
{ВнешняяОбработка.ОбработкаПеремещения.Форма.ФормаОбычная1.Форма(191)}: Ошибка при вызове метода контекста (Выполнить)
    Выгрузка = Запрос.Выполнить().Выгрузить();
по причине:
{(2, 2)}: Тип не может быть выбран в запросе
<<?>>ТЧПодготовка.Ссылка КАК Ссылка
{ВнешняяОбработка.ОбработкаПеремещения.Форма.ФормаОбычная1.Форма(191)}: Ошибка при вызове метода контекста (Выполнить)
    Выгрузка = Запрос.Выполнить().Выгрузить();
по причине:
{(2, 2)}: Тип не может быть выбран в запросе
<<?>>ТЧПодготовка.Ссылка КАК Ссылка

Таблицу значений всегда раньше нормально передавал, сейчас то что не так?
1 Cool_Profi
 
16.12.16
09:35
Колонка не типизирована
2 Fedor-1971
 
16.12.16
09:41
(0) попробуй так:

    |    ТЧ.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ВремТаб
    |ИЗ
    |    &ТЧПодготовка КАК ТЧ
3 Альбатрос
 
16.12.16
09:43
+(1) ТаблицыЗначений.Колонки.Добавить("Ссылка");
4 Альбатрос
 
16.12.16
09:44
Хде типизация?
5 aleks_default
 
16.12.16
09:44
Надо не саму таб. чать передавать а выгруженную из нее ТЗ.
6 Fedor-1971
 
16.12.16
09:46
2+ ПеремещениеТМЦТМЦ.Ссылка В(&ВремТаб)
Зачем тебе городить временную таблицу, если в запрос можно передать массив ссылок?

    ВыделенныеСтроки = ЭлементыФормы.ТЧДокументы.ВыделенныеСтроки;
    мас = Новый Массив;
    Для Каждого Стр Из ВыделенныеСтроки Цикл
      мас.Добавить(Стр);
    КонецЦикла;
    
    Запрос.УстановитьПараметр("ВремТаб",мас);

Проверь в конфигураторе, что в "Стр" именно ссылка
7 Fedor-1971
 
16.12.16
09:50
6+ ПеремещениеТМЦТМЦ.Ссылка В(&ВремТаб) - где передача параметра запроса ВремТаб или замена оного на выборку из временной таблицы?
8 Fedor-1971
 
16.12.16
09:51
(5) у ТС Строка - может быть ссылкой, если он разбирает массив выделенных строк от ДС с установленной основной таблицей
9 aleks_default
 
16.12.16
09:55
(8)ДС в обычных формах это нонсенс
10 Fedor-1971
 
16.12.16
10:03
(1)(4) типизация желательна, но не обязательна, главное, что-бы Ссылка была именно ссылкой, а не индексом строки или строка целиком (такой тип в запросе действительно не поддерживается).
(9) ТС не озвучил в каких формах работает и откуда он взял ВыделенныеСтроки. Я только предположил вариант, в котором, Строка будет именно ссылкой
11 Cool_Profi
 
16.12.16
10:05
(10) Для передачи ТЗ в запрос типизация обязательна
12 Fedor-1971
 
16.12.16
10:13
(11) Обосновать сможешь?
в Ссылка можно сложить как ссылки на N разных типов документов, так и цифры (строки) если мне это сильно нужно получить в запрос именно в одном поле. Другой вопрос, как с этой кашей работать в запросе, но к типизации сие отношения не имеет.
Типизация нужна для оптимизации работы движка запросов и только. Если мне "Надо" то можно, но работать будет медленнее (опять же "на сколько?") и есть риск вложить тип, который не поддерживает запрос
13 Cool_Profi
 
16.12.16
10:15
(12) Если в качестве источника используется таблица значений, то у этой таблицы значений должны быть явно указаны типы значений, содержащихся в колонках.
(с) 1с
14 FIXXXL
 
16.12.16
10:18
(4) (5) можно и ТЧ прям запрос параметром, но только первоначальный запрос на создание временной таблицы, а уже связи с временной таблицей
15 ig0z
 
16.12.16
10:23
так: все верно обычные формы и ДС

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

все работает только иерархии нет ((
16 ig0z
 
16.12.16
10:24
пятница ...
17 ptiz
 
16.12.16
10:24
(12) Пятнично
18 Fedor-1971
 
16.12.16
10:26
(13) Это рекомендация как и "4 нормальные формы Бекуса-Наура для разработки реляционных БД". Свою точку зрения я обосновал в (12). "Медленнее будет работать" именно из-за прохода по таблице значений для определением типов того что хранится. Если ТЗ в 20 строк, то этот проход не заметен, если в 10000 уже задумаешься над типизацией, что-бы его исключить

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

трындец вообще все путаю ...
20 Fedor-1971
 
16.12.16
10:30
(19) уже переделай на массив ссылок, зачем тебе ТаблицаЗначений с одной колонкой?

тык пятница
21 Триша
 
16.12.16
10:42
(19) Вот здесь ошибка:
Стр.Ссылка = Строка;

Строка - это строка, а не ссылка, надо:
Стр.Ссылка = Строка.Ссылка (или как там называется поле в строке)
22 Cool_Profi
 
16.12.16
10:55
(18) Это не рекомендация. Это условие использования.
23 ig0z
 
16.12.16
11:48
Процедура ТЧДокументыПриАктивизацииЯчейки(Элемент)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
        |    ПеремещениеТМЦ.Ссылка КАК Ссылка,
        |    ПеремещениеТМЦ.НомерСтроки,
        |    ПеремещениеТМЦ.Номенклатура,
        |    ПеремещениеТМЦ.Количество,
        |    ПеремещениеТМЦ.ЕдиницаИзмерения,
        |    ПеремещениеТМЦ.ПроизводственныйЗаказ
        |ИЗ
        |    Документ.ПеремещениеТМЦ.ТМЦ КАК ПеремещениеТМЦ
        |ГДЕ
        |    ПеремещениеТМЦ.Ссылка В(&ТЧ)
        |ИТОГИ ПО
        |    Ссылка";
    
    ВыделенныеСтроки = ЭлементыФормы.ТЧДокументы.ВыделенныеСтроки;
    ТаблицыЗначений = Новый ТаблицаЗначений;
    ТаблицыЗначений.Колонки.Добавить("Ссылка");
    Для Каждого Строка Из ВыделенныеСтроки Цикл
        Стр = ТаблицыЗначений.Добавить();
        Стр.Ссылка = Строка;
    КонецЦикла;
    
    Запрос.УстановитьПараметр("ТЧ",ТаблицыЗначений);
    Выгрузка = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    ТЧПодготовка = Выгрузка;
    ЭлементыФормы.ТЧПодготовка.СоздатьКолонки();    
    
КонецПроцедуры

Процедура ТЧПодготовкаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    
    ТекущаяСтрока = ЭлементыФормы.ТЧДокументы.ТекущаяСтрока;
    Если ДанныеСтроки.Ссылка = ТекущаяСтрока Тогда
        ОформлениеСтроки.ЦветТекста = WebЦвета.Черный;
        ОформлениеСтроки.ЦветФона = WebЦвета.БледноЗеленый;
    КонецЕсли;    
КонецПроцедуры

вроде бы все ...