Имя: Пароль:
1C
1С v8
v8: работа с запросом
,
0 iQwerty
 
28.06.13
20:06
создал запрос в консоле запросов, переношу в модуль не могу установить параметр помогите
Запрос = Новый Запрос;
     запрос.УстановитьПараметр("ДатаНачалаПериода", ДатаНачалаПериода);
     запрос.УстановитьПараметр("ДатаКонецПериода", ДатаКонецПериода);
          запрос.УстановитьПараметр("Гарантия",ПланыВидовХарактеристик.СвойстваОбъектов.Выбрать("Гарантия"));
      запрос.УстановитьПараметр("Бесплатная",ПланыВидовХарактеристик.СвойстваОбъектов.Выбрать("Бесплатная"));
      запрос.УстановитьПараметр("Доукомплектация",ПланыВидовХарактеристик.СвойстваОбъектов.Выбрать("Доукомплектация"));
      запрос.УстановитьПараметр("Гарантийная", Регистрысведений.ЗначенияСвойствОбъектов.Выбрать("Гарантийная"));
      запрос.УстановитьПараметр("Бесплатная1", Регистрысведений.ЗначенияСвойствОбъектов.Выбрать("Бесплатная"));
      запрос.УстановитьПараметр("Доукомплектация1", Регистрысведений.ЗначенияСвойствОбъектов.Выбрать("Доукомплектация"));
            Запрос.текст=  "ВЫБРАТЬ РАЗЛИЧНЫЕ
                           |    ПоступлениеТоваровУслугТовары.Ссылка,
                           |    ПоступлениеТоваровУслугТовары.Номенклатура,
                           |    ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры,
                           |    ПоступлениеТоваровУслуг.Дата
                           |ИЗ
                           |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                           |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
                           |            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
                           |            ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслуг.Ссылка
                           |        ПО ЗначенияСвойствОбъектов.Объект = ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры
                           |ГДЕ
                           |    (ЗначенияСвойствОбъектов.Свойство В (&Гарантия, &Бесплатная, &Доукомплектация)
                           |            ИЛИ ЗначенияСвойствОбъектов.Значение В (&Гарантийная, &Бесплатная1, &Доукомплектация1)
                           |                И (ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНачалаПериода И &ДатаКонецПериода))";
//                Результат=Запрос.Выполнить();
//
//                 ТЗ = Результат.Выгрузить();
                 ТЗ=Новый ТаблицаЗначений;
     ТЗ.Колонки.Добавить("ссылка");
     ТЗ.Колонки.Добавить("номенклатура");
     ТЗ.Колонки.Добавить("Характеристика");
     ТЗ.Колонки.Добавить("Дата");
               Результат=Запрос.Выполнить();

                 ТЗ = Результат.Выгрузить();
1 exwill
 
28.06.13
20:10
Колонки в ТЗ добавлять не надо, сами добавятся.
Установить параметр в запросе:
УстановитьПараметр(<Имя>, <Значение>)

Неожидано, правда?
2 iQwerty
 
28.06.13
20:11
(1)я так же устанавливал параметры же, разве нет
3 iQwerty
 
28.06.13
20:14
вот ошибка
{Обработка.Обработка1.Форма.Форма.Форма(9)}: Ошибка при вызове метода контекста (Выбрать)
      запрос.УстановитьПараметр("Гарантийная", Регистрысведений.ЗначенияСвойствОбъектов.Выбрать("Гарантийная"));
по причине:
Несоответствие типов (параметр номер '1')
4 Dionis Sergeevich
 
28.06.13
20:14
Точку останова после установки параметров и смотри установились или нет
5 exwill
 
28.06.13
20:14
"Гарантия" и пр. предопределенные элементы?
6 Dionis Sergeevich
 
28.06.13
20:15
(3) Регистрысведений.ЗначенияСвойствОбъектов.Выбрать("Гарантийная") что возвращает глянь. мб неопределено
7 iQwerty
 
28.06.13
20:15
(5) да
8 exwill
 
28.06.13
20:17
(7) Тогда:
ПланыВидовХарактеристик.СвойстваОбъектов.Гарантия

а что касается:
Регистрысведений.ЗначенияСвойствОбъектов.Выбрать("Гарантийная") что ты собрался выбрать? убери все эти параметры  нафиг.
9 iQwerty
 
28.06.13
20:20
(8) так мне нужно это! и вговорю же в кансоле запросов отработало верно
10 iQwerty
 
28.06.13
20:21
проблемы тут
запрос.УстановитьПараметр("Гарантийная", Регистрысведений.ЗначенияСвойствОбъектов.Выбрать("Гарантийная"));
      запрос.УстановитьПараметр("Бесплатная1", Регистрысведений.ЗначенияСвойствОбъектов.Выбрать("Бесплатная"));
      запрос.УстановитьПараметр("Доукомплектация1", Регистрысведений.ЗначенияСвойствОбъектов.Выбрать("Доукомплектация"));
11 iQwerty
 
28.06.13
20:26
все разобрался, всем спасибо
12 vicof
 
28.06.13
20:41
(0) По-русски писать совсем не умеем?
13 zippygrill
 
28.06.13
21:16
у тебя 2 переменные: "Запрос" и "запрос"! Определись какой будешь использовать.
14 Asmody
 
28.06.13
21:19
(13) это одна переменная. В 1С регистр в идентификаторах не имеет значения
15 iQwerty
 
28.06.13
21:46
Оказывается не все так гладко, ТабличноеПоле1 не заполняется((( думаю чтото не то в установке параметра


Запрос = Новый Запрос;    

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

                 ТЗ = Результат.Выгрузить();
              ЭлементыФормы.ТабличноеПоле1.Значение=ТЗ;
              ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
              ЭлементыФормы.ТабличноеПоле1.Значение=ТЗ;
16 iQwerty
 
28.06.13
21:50
я конечно понимаю что в пятницу вечером тема  OFF: Опять проблемы в Московском метр куда интереснее, но я тоже уже очень хочу в метро чтобы доехать до дому
17 skiller3000
 
28.06.13
21:51
убери последнюю строку
18 iQwerty
 
28.06.13
21:52
как то я написал это неверно, будто мне вы мне что то должны) (16)
19 iQwerty
 
28.06.13
21:52
(17) все так же
20 skiller3000
 
28.06.13
21:52
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
ЭлементыФормы.ТабличноеПоле1.ОбновитьСтроки() - еще можно приписать для верности
21 iQwerty
 
28.06.13
21:54
(20) что то точно в установитьпараметр связь нужно правильную понять с отбором, что то я уже овощь
22 iQwerty
 
28.06.13
21:56
Господа не проходите мимо) заранее очень благодарен!
23 skiller3000
 
28.06.13
21:58
лови, запрос тоже не очень правильный, но ты пока с этим разберись.

Запрос = Новый Запрос;    

Запрос.УстановитьПараметр("ДатаНачалаПериода", началодня(ДатаНачалаПериода));
Запрос.УстановитьПараметр("ДатаКонецПериода", Конецдня(ДатаКонецПериода));
    Запрос.УстановитьПараметр("Гарантия",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Гарантия"));
Запрос.УстановитьПараметр("Бесплатная",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Бесплатная"));
Запрос.УстановитьПараметр("Доукомплектация",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Доукомплектация"));
Запрос.УстановитьПараметр("Гарантийная", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Гарантийная"));
Запрос.УстановитьПараметр("Бесплатная1", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Бесплатная"));
Запрос.УстановитьПараметр("Доукомплектация1", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Доукомплектация"));

Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ПоступлениеТоваровУслугТовары.Ссылка,
    |    ПоступлениеТоваровУслугТовары.Номенклатура,
    |    ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры,
    |    ПоступлениеТоваровУслуг.Дата
    |ИЗ
    |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    |  ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    |ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    |ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслуг.Ссылка
    |  ПО ЗначенияСвойствОбъектов.Объект = ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры
    |ГДЕ
    |    (ЗначенияСвойствОбъектов.Свойство В (&Гарантия, &Бесплатная, &Доукомплектация)
    |ИЛИ ЗначенияСвойствОбъектов.Значение В (&Гарантийная, &Бесплатная1, &Доукомплектация1)
    |    И (ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНачалаПериода И &ДатаКонецПериода))";

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

ЭлементыФормы.ТабличноеПоле1.Значение = ТЗ;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
ЭлементыФормы.ТабличноеПоле1.ОбновитьСтроки();
24 iQwerty
 
28.06.13
21:59
(23)спасибо! ты изменил только строки с запрос.установитьпараметр?
25 skiller3000
 
28.06.13
22:00
строки и помещение результата запроса в таблицу значений на форме
26 skiller3000
 
28.06.13
22:11
я сегодня добрый:

Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    Товары.Ссылка КАК Ссылка,
|    Товары.Номенклатура КАК Номенклатура,
|    Товары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
|ПОМЕСТИТЬ ВТТовары
|ИЗ
|    Документ.ПоступлениеТоваровУслуг.Товары КАК Товары
|ГДЕ
|    Товары.Ссылка.Дата МЕЖДУ &ДатаНачалаПериода И &ДатаКонецПериода
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ЗначенияСвойствОбъектов.Объект КАК Номенклатура
|ПОМЕСТИТЬ ВТОтобраннаяНоменклатура
|ИЗ
|    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
|            Товары.Номенклатура КАК Номенклатура
|        ИЗ
|            ВТТовары КАК Товары) КАК Товары
|        ПО (ЗначенияСвойствОбъектов.Объект ССЫЛКА Справочник.Номенклатура)
|            И ЗначенияСвойствОбъектов.Объект = Товары.Номенклатура
|            И (ЗначенияСвойствОбъектов.Свойство В (&Гарантия, &Бесплатная, &Доукомплектация)
|                ИЛИ ЗначенияСвойствОбъектов.Значение В (&Гарантийная, &Бесплатная1, &Доукомплектация1))
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    Товары.Ссылка КАК Ссылка,
|    Товары.Номенклатура КАК Номенклатура,
|    Товары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
|ИЗ
|    ВТТовары КАК Товары
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТОтобраннаяНоменклатура КАК ОтобраннаяНоменклатура
|        ПО Товары.Номенклатура = ОтобраннаяНоменклатура.Номенклатура
|
|УПОРЯДОЧИТЬ ПО
|    Ссылка,
|    Номенклатура
|АВТОУПОРЯДОЧИВАНИЕ";
27 iQwerty
 
28.06.13
22:13
(26) работало и безэтого спасибо!)))) огромное, а в запросе что не так?
28 skiller3000
 
28.06.13
22:14
(27) все напихано в 1 запрос, я разнес по временным таблицам и убрал лишнее.
29 iQwerty
 
28.06.13
22:19
(28) ты про чтоли?)
30 iQwerty
 
28.06.13
22:23
(28) СТРАННО: характеристика номенклатуры в ТабличноеПоле1 стало перечислением
31 skiller3000
 
29.06.13
05:14
(30) я твою хрень к человеческому виду привел. разбирайся сам. тебе платят за это.
32 hhhh
 
29.06.13
08:30
(31) объект там - это характеристика, потому

    И ЗначенияСвойствОбъектов.Объект = Товары.Номенклатура

никогда не сравнится.
33 skiller3000
 
29.06.13
08:43
(32) да, косяк - не заметил что у него Характеристики в объектах. там немного поправить надо.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший