Имя: Пароль:
1C
1С v8
УНФ 8,2 Запрос
, ,
0 polkin
 
26.11.13
23:27
Обработка.
Запросом найти документы с номенклатурой, перечисленной в таблице.

Есть табличка с номенклатурой (5 или 15 или 100шт). Нужно найти все "заказы поставщику" с этой номенклатурой.
1 dj_serega
 
26.11.13
23:48
"ВЫБРАТЬ
|    ТЧНоменклатура.Номенклатура
|ПОМЕСТИТЬ ТаблицаНоменклатуры
|ИЗ
|    ТЧНоменклатура КАК ТЧНоменклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ЗаказПоставщикуТовары.Ссылка
|ИЗ
|    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
|ГДЕ
|    ЗаказПоставщикуТовары.Номенклатура В
|            (ВЫБРАТЬ
|                ТаблицаНоменклатуры.Номенклатура
|            ИЗ
|                ТаблицаНоменклатуры КАК ТаблицаНоменклатуры)"

Естественно поставить отборы на выборку документов.
2 Remark
 
26.11.13
23:51
(1) <irony> А в УНФ это сработает? </irony>
3 polkin
 
27.11.13
00:09
ВЫБРАТЬ
|    ТЧНоменклатура.Номенклатура
|ПОМЕСТИТЬ ТаблицаНоменклатуры
|ИЗ
|    ТЧНоменклатура КАК ТЧНоменклатура;

С этим не понятно. где это делать. можно подробнее?
4 polkin
 
27.11.13
00:33
Таблица1 - это там, где собрана номенклатура.
Вот что получилось. Выдает ошибку Таблица не найдена ТаблицаВременная. Где ошибка?


    Запрос = Новый Запрос();
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Таблица1.Номенклатура
        |ПОМЕСТИТЬ ТаблицаВременная
        |ИЗ
        |    Таблица1 КАК Таблица1";



    Запрос = Новый Запрос();
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказПоставщику.Ссылка КАК Ссылка
        |ИЗ
        |    Документ.ЗаказПоставщику КАК ЗаказПоставщику
        |ГДЕ
        |    ЗаказПоставщику.Запасы.Номенклатура В
        |            (ВЫБРАТЬ
        |                ТаблицаВременная.Номенклатура
        |            ИЗ
        |                ТаблицаВременная КАК ТаблицаВременная)";
5 Remark
 
27.11.13
00:55
Запрос = Новый Запрос("ВЫБРАТЬ
    ЗаказПоставщикуТовары.Ссылка
ИЗ
    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
ГДЕ
    ЗаказПоставщикуТовары.Номенклатура В &СписокНоменклатуры";

Запрос.УстановитьПараметр("СписокНоменклатуры", ТаблицаНоменклатуры.ВыгрузитьКолонку("Номенклатура")); //Короче номенклатуру надо выгрузить в список значений
6 H A D G E H O G s
 
27.11.13
00:57
ВЫБРАТЬ РАЗЛИЧНЫЕ
7 polkin
 
27.11.13
01:14
Метод объекта не обнаружен (ВыгрузитьКолонку)
8 polkin
 
27.11.13
11:04
Ну как правильно? Может у кого ссылки есть?
9 grayshadow
 
27.11.13
11:17
&НаСервере

        "ВЫБРАТЬ
        |    Таблица1.Номенклатура
        |ПОМЕСТИТЬ ТаблицаВременная
        |ИЗ
        |    &Таблица1 КАК Таблица1";

Запрос.УстановитьПараметр("Таблица1", Таблица1)
10 polkin
 
27.11.13
11:29
Запрос.УстановитьПараметр("Таблица1", Таблица1);
    Запрос = Новый Запрос();
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Таблица1.Номенклатура
        |ПОМЕСТИТЬ ТаблицаВременная
        |ИЗ
        |    &Таблица1 КАК Таблица1";



    Запрос = Новый Запрос();
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказПоставщикуЗапасы.Ссылка КАК Ссылка
        |ИЗ
        |    Документ.ЗаказПоставщику.Запасы КАК ЗаказПоставщикуЗапасы
        |ГДЕ
        |    ЗаказПоставщикуЗапасы.Номенклатура В
        |            (ВЫБРАТЬ
        |                ТаблицаВременная.Номенклатура
        |            ИЗ
        |                ТаблицаВременная КАК ТаблицаВременная)";
    


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

Ошибка переменная Таблиц1 не определена
11 dj_serega
 
27.11.13
11:52
(10)

ЗапросЗаказПоставщикам = Новый Запрос(
"ВЫБРАТЬ
|    ТЧНоменклатура.Номенклатура
|ПОМЕСТИТЬ ТаблицаНоменклатуры
|ИЗ
|    &ТЧНоменклатура КАК ТЧНоменклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////

|ВЫБРАТЬ
|    ЗаказПоставщикуТовары.Ссылка
|ИЗ
|    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
|ГДЕ
|    ЗаказПоставщикуТовары.Номенклатура В
|            (ВЫБРАТЬ
|                ТаблицаНоменклатуры.Номенклатура
|            ИЗ
|                ТаблицаНоменклатуры КАК ТаблицаНоменклатуры)"
;
ЗапросЗаказПоставщикам.УстановитьПараметр("ТЧНоменклатура", ТаблицаСНоменклатурой");

Запросы должны быть едины. Если хочешь через два запроса, тогда нужно подключать менеджер временных таблиц.
12 hhhh
 
27.11.13
12:20
не, менеджер этот умер давно. НЕ выдержал конкуренцию с пакетами.
13 polkin
 
27.11.13
17:50
{Обработка.Цены.Форма.Форма.Форма(1462)}: Ошибка при вызове метода контекста (Выполнить)
    Результат = Запрос.Выполнить().Выгрузить();
по причине:
{(5, 2)}: Неверные параметры "ТЧНоменклатура"
<<?>>&ТЧНоменклатура КАК ТЧНоменклатура

Блин, где я протупил?

Запрос = Новый Запрос(
"ВЫБРАТЬ
|    ТЧНоменклатура.Номенклатура
|ПОМЕСТИТЬ ТаблицаНоменклатуры
|ИЗ
|    &ТЧНоменклатура КАК ТЧНоменклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ЗаказПоставщикуЗапасы.Ссылка
|ИЗ
|    Документ.ЗаказПоставщику.Запасы КАК ЗаказПоставщикуЗапасы
|ГДЕ
|    ЗаказПоставщикуЗапасы.Номенклатура В
|            (ВЫБРАТЬ
|                ТаблицаНоменклатуры.Номенклатура
|            ИЗ
|                ТаблицаНоменклатуры КАК ТаблицаНоменклатуры)");
;
Запрос.УстановитьПараметр("ТЧНоменклатура",Объект.Таблица1);
        
    
    Результат = Запрос.Выполнить().Выгрузить();
    Объект.ТаблицаДок.Загрузить(Результат);
14 viktor_vv
 
27.11.13
19:13
Есть подозрение, что в управляемых формах
Объект.Таблица1 совсем не таблица значений.
15 polkin
 
27.11.13
20:49
таблица в обработке.
16 viktor_vv
 
28.11.13
00:53
(15) Вообще-то

Объект.Таблица1 имеет тип ДанныеФормыКолекция, и никак ее в запрос не засунешь.

Запрос.УстановитьПараметр("ТЧНоменклатура",Объект.Таблица1.Выгрузить());
17 polkin
 
28.11.13
01:12
{Обработка.Цены.Форма.Форма.Форма(1463)}: Ошибка при вызове метода контекста (Выполнить)
    Результат = Запрос.Выполнить().Выгрузить();
по причине:
{(5, 2)}: Не задано значение параметра "Таблица1"
<<?>>&Таблица1 КАК Таблица1

ошибка поменялась....

Запрос = Новый Запрос(
"ВЫБРАТЬ
|    Таблица1.Номенклатура
|ПОМЕСТИТЬ ВременнаяТаблицаНоменклатуры
|ИЗ
|    &Таблица1 КАК Таблица1
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ЗаказПоставщикуЗапасы.Номенклатура
|ИЗ
|    Документ.ЗаказПоставщику.Запасы КАК ЗаказПоставщикуЗапасы
|ГДЕ
|    ЗаказПоставщикуЗапасы.Номенклатура В
|            (ВЫБРАТЬ
|                ВременнаяТаблицаНоменклатуры.Номенклатура
|            ИЗ
|                ВременнаяТаблицаНоменклатуры КАК ВременнаяТаблицаНоменклатуры)");
;
Запрос.УстановитьПараметр("Номенклатура",Объект.Таблица1);
18 polkin
 
28.11.13
01:16
Запрос.УстановитьПараметр("Таблица1",Объект.Таблица1.Выгрузить());
вообще ничего не происходит...
19 viktor_vv
 
28.11.13
01:38
(18) Что должно произойти ? Отладчик что говорит ?
20 polkin
 
28.11.13
03:36
должно вывести все документы ЗаказПоставщику имеющие номенклатуру из таблицы Таблица1
21 catena
 
28.11.13
05:54
Запрос.УстановитьПараметр("Номенклатура",Объект.Таблица1);
Запрос.УстановитьПараметр("Таблица1",Объект.Таблица1.Выгрузить());

Где правда?
22 Wobland
 
28.11.13
05:57
(21) она в том, что параметр Номенклатура никому в запросе не нужен
23 catena
 
28.11.13
06:04
(22)А параметр Таблица1 при этом не установлен. А ваще не понятно, что с этой ошибкой делать, блин.
24 Wobland
 
28.11.13
06:07
(23) не, после (18) другая ошибка - её нет. автора смущает пустой результат запроса
25 Noob_Of_1C
 
28.11.13
06:10
у меня вопрос: там написано стаж ~5 лет, за 5 лет не было необходимости в запросах? О_о
походу это угарает чел
26 Wobland
 
28.11.13
06:15
(25) Pr-Mex вот тут ваще 6.5 и чо?
27 Noob_Of_1C
 
28.11.13
06:19
(26) такой же чтоли? О_о
28 Wobland
 
28.11.13
06:24
(27) вроде как музыканты
29 polkin
 
28.11.13
10:53
Чего пристали? Ну нужно подправить свои обработки для себя периодически. Ну задаю вопросы по мере необходимости....
Вот пробую по разному решить задачу - не получается.
Лучше помогли бы, чем ржать.
30 polkin
 
28.11.13
10:56
Запрос = Новый Запрос(
"ВЫБРАТЬ
|     ТЧНоменклатура.Номенклатура
|ПОМЕСТИТЬ ВременнаяТаблицаНоменклатуры
|ИЗ
|     &ТЧНоменклатура КАК  ТЧНоменклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ЗаказПоставщикуЗапасы.Номенклатура
|ИЗ
|    Документ.ЗаказПоставщику.Запасы КАК ЗаказПоставщикуЗапасы
|ГДЕ
|    ЗаказПоставщикуЗапасы.Номенклатура В
|            (ВЫБРАТЬ
|                ВременнаяТаблицаНоменклатуры.Номенклатура
|            ИЗ
|                ВременнаяТаблицаНоменклатуры КАК ВременнаяТаблицаНоменклатуры)");
;
Запрос.УстановитьПараметр("ТЧНоменклатура",Объект.Таблица1);
        
    
    Результат = Запрос.Выполнить().Выгрузить();
    Объект.ТаблицаДок.Загрузить(Результат);
31 polkin
 
28.11.13
10:56
{Обработка.Цены.Форма.Форма.Форма(1463)}: Ошибка при вызове метода контекста (Выполнить)
    Результат = Запрос.Выполнить().Выгрузить();
по причине:
{(5, 3)}: Неверные параметры "ТЧНоменклатура"
<<?>>&ТЧНоменклатура КАК  ТЧНоменклатура
32 viktor_vv
 
28.11.13
11:04
По десятому кругу :)
Запрос.УстановитьПараметр("ТЧНоменклатура",Объект.Таблица1.Выгрузить());
33 viktor_vv
 
28.11.13
11:07
Ты бы уже отладчиом посмотрел тип значения

Объект.Таблица1

И тем же отладчиком смотри, что у тебя в результат попало, после выполнения запроса.
34 polkin
 
28.11.13
11:56
Объект.Таблица1    ДанныеФормыКоллекция    ДанныеФормыКоллекция
35 polkin
 
28.11.13
11:59
Результат все 5 номенклатур есть
36 polkin
 
28.11.13
12:10
ВременнаяТаблицаНоменклатуры    {(1,1)}: Переменная не определена (ВременнаяТаблицаНоменклатуры)    
ТЧНоменклатура    {(1,1)}: Переменная не определена (ТЧНоменклатура)
37 hhhh
 
28.11.13
22:09
(36) блин, в отладчике набери

Запрос.ВыполнитьПакет()[0].Выгрузить()
38 polkin
 
28.11.13
23:13
ВСЕ!!!!!!!!!!
МОЗГИ ЗАКИПЕЛИ!!!!!!!!
files.mail.ru/CEDA1759A6A64A49B4307F93C6E025BA
ссылка на внешнюю обработку.
Помогите, у кого есть время.
Программист всегда исправляет последнюю ошибку.