Имя: Пароль:
1C
 
Запрос на СКД
,
0 Gossar1C
 
02.03.15
10:43
Здравствуйте! Подскажите пожалуйста в чем ошибка?

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


ругается на ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование поле не найдено, хм я явно указываю не правильную связь? просто пока я для регистра цены номенклатуры контрагентов не добавил выборку на макс период, до этого момента все прекрасно считывалось (но увы цены контрагентов брались не последние...) Заранее спасибо!
1 Gossar1C
 
02.03.15
10:44
извиняюсь там поле ВидЦен, но ошибка все та же "поле не найдено"
2 Fragster
 
гуру
02.03.15
10:45
а у NULL какое наименование?
3 Gossar1C
 
02.03.15
10:49
(2) как такого NULL нету, просто я добавляю программно в запрос поля, тоесть сам отчет на скд, но в зависимости от вида цен пользователь их выбирает в списке и соответственно:

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


НО на это он ругается дескать мол не знаю что такое ВидЦен.Наименование. ХОТЯ! Если я добавляю точно такую же выборку только в наборе данных в схеме, то он нормально считывает и показывает цену по опту... =\
4 Gossar1C
 
02.03.15
10:50
аргх! понял ошибку, он меняет еще и ИЗ вложенных таблиц... хм как ему можно указать что именно нужно менять главную выборку? ставить метку?
5 Gossar1C
 
02.03.15
10:54
я конечно псих, но я мечту свою лелея решил проблему гениально, поставил 2 слэша -_-

  Для Каждого Элем Из СписокВидовЦен Цикл
        Если Элем.Пометка = Истина Тогда
            Текст = СтрЗаменить(Текст,"ИЗ //","
            | ,ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦен.Наименование = " + Символ(34) + Элем.Представление + Символ(34) + "
            |        ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
            |    КОНЕЦ КАК " + СтрЗаменить(Элем.Представление," ","") + "
            |ИЗ //
            |");
        КонецЕсли;
    КонецЦикла;
6 Gossar1C
 
02.03.15
11:00
только вот непонятно почему СКД ставит какой-то левый параметр ПЗ для цен номенклатуры, я ему добавляю
ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату,) КАК ЦеныНоменклатурыСрезПоследних
            ПО Номенк.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура

он ругается если я использую период..
&НаДату независимый параметр текущая дата отчета
7 Gossar1C
 
02.03.15
11:06
не подскажите как исправить эту ошибку?
8 Gossar1C
 
02.03.15
11:17
имхо в оборотах используется стандартный период, но не дата, указываю отдельный параметр &НаДату, ставлю тип дата, выражение ТекущаяДата() смотрел по отладчику в значение параметра компоновки данных дата 01.01.0001 О_о, ну это просто бред какой-то. Соответственно если ставлю &КонецПериода из стандартного, то ругается все равно подставляет свой левый параметр
9 Web00001
 
02.03.15
11:18
(6)СКД он такой, запрос модифицирует как посчитает нужным перед отправкой или отборы, сортировки из формы настроек не смогли бы правильно работать.
(7)Какую ошибку?
10 D_E_S_131
 
02.03.15
11:21
Почему бы "СписокВидовЦен" не передать как параметр виртуальной таблицы "ЦеныНоменклатурыСрезПоследних" и не прекратить мучать мозг?
11 Gossar1C
 
02.03.15
11:23
(9)(10) Ребят спасибо. Решил через ж может быть :) Не знаю может кому пригодится! Сделал тест и с периодом выводит и без, по идее все правильно.



ВЫБРАТЬ
    ПродажиОбороты.Регистратор КАК Регистратор,
    ПродажиОбороты.ПериодСекунда,
    ПродажиОбороты.ПериодМинута,
    ПродажиОбороты.ПериодЧас,
    ПродажиОбороты.ПериодДень,
    ПродажиОбороты.ПериодНеделя,
    ПродажиОбороты.ПериодДекада,
    ПродажиОбороты.ПериодМесяц,
    ПродажиОбороты.ПериодКвартал,
    ПродажиОбороты.ПериодПолугодие,
    ПродажиОбороты.ПериодГод,
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Характеристика,
    ПродажиОбороты.Партия,
    ПродажиОбороты.Документ,
    ПродажиОбороты.СтавкаНДС,
    ПродажиОбороты.Организация,
    ПродажиОбороты.ЗаказПокупателя,
    ПродажиОбороты.Документ.Контрагент КАК Контрагент,
    ВЫБОР
        КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.АвансовыйОтчет
            ТОГДА ЗНАЧЕНИЕ(Справочник.СтруктурныеЕдиницы.ПустаяСсылка)
        КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.ПриходнаяНакладная
            ТОГДА ПродажиОбороты.Документ.СтруктурнаяЕдиница
        ИНАЧЕ ПродажиОбороты.Документ.Подразделение
    КОНЕЦ КАК Подразделение,
    ВЫБОР
        КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.ЗаказПокупателя
            ТОГДА ПродажиОбороты.Документ.СтруктурнаяЕдиницаРезерв
        ИНАЧЕ ПродажиОбороты.Документ.СтруктурнаяЕдиница
    КОНЕЦ КАК Склад,
    ПродажиОбороты.Номенклатура.ЕдиницаИзмерения,
    ПродажиОбороты.Документ.Ответственный КАК Ответственный,
    ПродажиОбороты.КоличествоОборот КАК Количество,
    ПродажиОбороты.СуммаОборот КАК Сумма,
    ПродажиОбороты.СуммаНДСОборот КАК СуммаНДС,
    ПродажиОбороты.СебестоимостьОборот КАК Себестоимость,
    ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК ЦенаЗакупочная,
    Номенк.Ссылка
ИЗ //
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ПродажиОбороты
        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенк
            ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({&КонецПериода},) КАК ЦеныНоменклатурыСрезПоследних
            ПО Номенк.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
            ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних({&КонецПериода}, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
            ПО Номенк.Ссылка = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Период) КАК Период,
                ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура
            ИЗ
                РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних({&КонецПериода}, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
                    ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                        МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Период) КАК Период,
                        ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура
                    ИЗ
                        РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних({&КонецПериода}, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
                    
                    СГРУППИРОВАТЬ ПО
                        ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура) КАК ГруппировкаНоменклатура
                    ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Период = ГруппировкаНоменклатура.Период
                        И ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура = ГруппировкаНоменклатура.Номенклатура
            
            СГРУППИРОВАТЬ ПО
                ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура) КАК МаксПериод
            ПО (ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура = МаксПериод.Номенклатура)
                И (ЦеныНоменклатурыКонтрагентовСрезПоследних.Период = МаксПериод.Период)
        ПО ПродажиОбороты.Номенклатура = Номенк.Ссылка
12 D_E_S_131
 
02.03.15
11:27
(11) "Решил через ж может быть :) Не знаю может кому пригодится!" — конечно пригодится! Это просто "нетленный" запрос.