8.х Создание временной таблицы из таблЗначений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Ktyf, 23 янв 2015.

  1. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Добрый день. Ситуация такова. Сначала в одной процедуре заполняется ТЗ на форме (реквизит формы), а потом мне надо сформировать запрос, где бы использовались данные из этой ТЗ. Вот текст запроса
    Код:
    "ВЫБРАТЬ
            |    ПродПотреб1.Номенклатура,
            |    ПродПотреб1.Характеристика,
            |    ПродПотреб1.Потребность
            |ПОМЕСТИТЬ ВТПродПотреб
            |ИЗ
            |    &ПродПотреб КАК ПродПотреб1
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    СпецификацииСостав.Номенклатура,
            |    СпецификацииСостав.Характеристика,
            |    СпецификацииСостав.ЕдиницаИзмерения,
            |    ЗапасыОстатки.Номенклатура КАК Номенклатура1,
            |    ЗапасыОстатки.Характеристика КАК Характеристика1,
            |    ЗапасыОстатки.Партия,
            |    ЗапасыОстатки.КоличествоОстаток КАК Наличие,
            |    СУММА(СпецификацииСостав.Количество * ВТПродПотреб.Потребность) КАК Поле1
            |ИЗ
            |    Справочник.Спецификации.Состав КАК СпецификацииСостав
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Запасы.Остатки(&Сегодня, ) КАК ЗапасыОстатки
            |        ПО СпецификацииСостав.Номенклатура = ЗапасыОстатки.Номенклатура
            |            И СпецификацииСостав.Характеристика = ЗапасыОстатки.Характеристика
            |        ЛЕВОЕ СОЕДИНЕНИЕ ВТПродПотреб КАК ВТПродПотреб
            |        ПО СпецификацииСостав.Номенклатура = ВТПродПотреб.Номенклатура
            |            И СпецификацииСостав.Характеристика = ВТПродПотреб.Характеристика
            |ГДЕ
            |    СпецификацииСостав.Ссылка.АСТ_Плановая = ИСТИНА
            |    И СпецификацииСостав.Ссылка.Владелец В(&ПродПотреб)
            |    И СпецификацииСостав.Ссылка.ХарактеристикаПродукции В(&ПродПотреб)
            |
            |СГРУППИРОВАТЬ ПО
            |    СпецификацииСостав.Номенклатура,
            |    СпецификацииСостав.Характеристика,
            |    СпецификацииСостав.ЕдиницаИзмерения,
            |    ЗапасыОстатки.Номенклатура,
            |    ЗапасыОстатки.Характеристика,
            |    ЗапасыОстатки.Партия,
            |    ЗапасыОстатки.КоличествоОстаток" ;
    
     зпСпецификаций.УстановитьПараметр("Сегодня",ТекущаяДата());
     зпСпецификаций.УстановитьПараметр("ПродПотреб",тзПродукция);
    
    И вот в этот момент (&ПродПотреб) 1с ругается!!!! Чем ТЗ ей не нравится в качестве параметра??
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Тем, что колонки в ТЗ должны быть строго типизированными.
  3. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Т.е. получается мало того, что колонки "описаны" в реквизите? А можно в тексте определить колонки уже заполненной ТЗ?
    Последнее редактирование: 23 янв 2015
  4. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Когда Вы используете конструкцию "В" (&НекоторыйПараметр), тогда НекоторыйПараметр должен быть либо массивом либо списком значений. Если там таблица, тогда нужно писать подзапрос
    Код:
    Поле В (Выбрать Т.Поле Из &НекоторыйПараметр КАК Т)
    Конкретно в Вашем примере будет что-то вроде
    Код:
    (СпецификацииСостав.Ссылка.Владелец,  СпецификацииСостав.Ссылка.ХарактеристикаПродукции) В
    (ВЫБАТЬ Т.Владелец, Т.ХарактеристикаПродукции ИЗ &ПродПотреб КАК Т)
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    что значит "колонки описаны в реквизите" и "в тексте определить колонки уже заполненной ТЗ"?
    --- Объединение сообщений, 23 янв 2015 ---
    Все верно, за исключением следующего:
    зачем еще раз выбирать все тоже самое, что уже есть в сформированной ВТ по этому набору данных?

    Код:
    (ВЫБАТЬ Т.Владелец, Т.ХарактеристикаПродукции ИЗ ВТПродПотреб КАК Т)
  6. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    спасибо! Когда дойду до этого момента - учту!

    когда я создаю реквизит формы ТЗ с его колонками, то я уже указываю типы этих колонок (число. ссылка, строка и т.д)

    у меня уже есть ТЗ, хотелось бы дописать что-то вроде

    ТЗ.Колонка("Наименование").Тип = Тип("СправочникСсылка.ИТД......");
    Но уже чую, что не вариант...
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    напрямую реквизит формы в параметры не запихаешь, т.к. это ДанныеФормыКоллекция(если я правильно понял, что речь идет о УправляемыхФормах)
    Из ТЗ, как реквизита формы, необходимо сделать ТЗ методом Выгрузить().

    В запросе конструкции вида ТЗ.Колонка("Наименование").Тип = Тип("СправочникСсылка.ИТД......"); не бывает, и тип колонки ТЗ задается совершенно по другому. В С-П есть подробное описание.
  8. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а нафига как временную тогда тз передавать в запрос, если потом ее не использовать?
    --- Объединение сообщений, 23 янв 2015 ---
    на мой взгляд вам надо концепцию своего запроса пересмотреть... если хотите использовать временную, то надо просто связи с ней настраивать, а если надо как параметр в запрос, то тз не подойдет - почему? вам ответили несколькими постами выше...
  9. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    разобралась как передать ТЗ в качестве параметра для временной таблицы, но видимо вылезла проблема с логикой т.к. данные стали затраиваться - буду думать дальше
    --- Объединение сообщений, 23 янв 2015 ---
    почему не использовать. Поле1 расчитывается с учетом Потребности из ТЗ
  10. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    да я о чем и говорю - вы вашу тз загнали как временную в первом пакете, а во втором пакете опять ее же как параметр передаете... смысл конструкции не понятен

Поделиться этой страницей