[РЕШЕНО] Ошибка в запросе

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

  1. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Всем доброго времени суток!

    Конфа: Розница, редакция 1.0 (1.0.18.1) (обычное приложение)
    Платформа: 1С:Предприятие 8.3 (8.3.5.1231)
    В модуле обработки ЗакрытиеКассовойСмены в Процедуре ОбработкаЧековККМ, в запрос :

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

    ТоварыОбщие.ТарифныйПлан
    Док.ТарифныйПлан КАК ТарифныйПлан .
    Для того чтобы в документ ООП попадал реквизит ТарифныйПлан.
    При закрытии смены, документ ООП формируется и данные реквизита ТарифныйПлан, нормально передаются. Но, при проведении документа ООП, выскакивает ошибка:

    upload_2015-7-29_12-15-26.png

    Вложения:

  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    реквизит ТарифныйПлан находится в ТЧ "Товары" документа ЧекККМ?
    Или все же это реквизит самого документа?
    Если второе, то нужно делать Док.Ссылка.ТарифныйПлан вместо Док.ТарифныйПлан.
  3. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Это реквизит табличной части "Товары".
    Я же сделал акцент на том, что, в при отрабатывании запроса в обработке закрытия смены, запрос по сути отрабатывается-то нормально и данные в ООП по данному реквизиту попадают.
    Загвоздка происходит, насколько я смог понять, уже при формировании запроса в :ОбщийМодуль.УправлениеЗапасами. На функции "Функция СформироватьЗапросПоТабличнойЧасти"
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Приведенный запрос из этой функции?
  5. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    При чём, что самое мне не понятное. Пробегая отладчиком эту функцию, я вижу что реквизит передается и при формирован
    Нет. Вот функция:

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

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Перед Возврат Запрос.Выполнить() какой текст запроса получается и не может отработать?
    Сдается мне, что запрос к какой-то другой ТЧ строится, в которой нет указанного реквизита.
  7. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Вот запрос получаемый в функции:

    Код:
    ВЫБРАТЬ
    Док.НомерСтроки ,
    Док.Номенклатура КАК Номенклатура,
    Док.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    Док.ТарифныйПлан КАК ТарифныйПлан,
    Док.Коэффициент КАК Коэффициент,
    Док.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    Док.Количество *
        ВЫБОР
            КОГДА ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)
                ТОГДА 1
            ИНАЧЕ
                Коэффициент /ЕСТЬNULL(Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 1)
        КОНЕЦ
    КАК Количество,
    Док.Цена КАК Цена,
    Док.Сумма КАК Сумма,
    Док.СтавкаНДС КАК СтавкаНДС,
    Док.СуммаНДС КАК СуммаНДС,
    Док.УдалитьПроцентАвтоматическихСкидок КАК УдалитьПроцентАвтоматическихСкидок,
    Док.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
    Док.УдалитьУсловиеАвтоматическойСкидки КАК УдалитьУсловиеАвтоматическойСкидки,
    Док.УдалитьЗначениеУсловияАвтоматическойСкидки КАК УдалитьЗначениеУсловияАвтоматическойСкидки,
    Док.РегистрацияПродажи КАК РегистрацияПродажи,
    Док.Штрихкод КАК Штрихкод,
    Док.Склад КАК Склад,
    Док.КлючСтроки КАК КлючСтроки,
    Док.Продавец КАК Продавец,
    Док.ДисконтнаяКарта КАК ДисконтнаяКарта,
    Док.Количество КАК КоличествоТЧ,
    Док.Склад.Организация КАК Организация,
    Док.СуммаНДС КАК НДС,
    Док.Склад.ТипСклада КАК ТипСклада,
    Док.Склад.Магазин КАК Магазин,
    Док.Номенклатура.Услуга КАК Услуга,
    Док.Номенклатура.Комплект КАК Комплект,
    ЗНАЧЕНИЕ(Справочник.ХозяйственныеОперации.РеализацияТоваров) КАК ХозяйственнаяОперация
    ИЗ
          Документ.ОтчетОРозничныхПродажах.Товары КАК Док
         ГДЕ Док.Ссылка = &ДокументСсылка
    И Док.Склад.ТипСклада <> &СкладТипСклада
    Док .Ссылка, в данном запросе получается ссылка на документ ООП, там такой реквизит есть
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    и это - так же реквизит ТЧ "Товары", а не самого документа ООП?
  9. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Да это реквизит ТЧ "Товары"
    --- Объединение сообщений, 29 июл 2015 ---
    Нашёл. В табличную часть "ВозвращенныеТовары" документа ООП, нужно тоже добавить реквизит ТарифныйПлан
    Последнее редактирование: 29 июл 2015

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