Имя: Пароль:
1C
1С v8
странная ошибка отчета
0 patapum
 
03.07.14
16:07
УТ 11.0.9.15, доработанная. Движок 8.2.19.80.
Есть отчет, в одной базе он выполняется нормально, в другой (сравнимой по объему) при большой выборке выдает ошибку. При включении фильтров, вырезающих небольшой объем - все нормально. При превышении некоторого предела - ошибка.
Куда копнуть можно, кто знает?
Ошибка:
http://savepic.org/5752828.png
1 Господин ПЖ
 
03.07.14
16:12
телепаты в отпуске
2 patapum
 
03.07.14
16:20
(1) насчет телепатов не понял. все данные по ошибке выложил. проблема в том и есть, что копать непонятно куда. может кто сталкивался или предположить может...
3 anatoly
 
03.07.14
16:21
посмотреть текст запроса, покрутить его в консоли.
картинка ниочом.
4 patapum
 
03.07.14
16:27
(3) еще раз описываю диагностику ошибки.
есть две базы, идентичные по конфигурации, примерно равные по размеру. вторая сейчас готовится к запуску, в нее загружаются документы. в первой отчет строится идеально. во второй, при наложении фильтров, если они вырезают небольшой объем данных, строится нормально. если фильтров слишком мало или нет, такая ошибка. сейчас попробую то же самое в консоли запустить, ок
5 Dionisious
 
03.07.14
16:29
Текст запроса выложи. И какой отбор с ошибкой валится.
6 patapum
 
03.07.14
16:33
(5) текст
ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Номенклатура,
    ВидыЦен.Ссылка КАК ВидЦен,
    дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.Цена,
    дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.Валюта,
    дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Значение КАК ЗначениеКоэффициента,
    дрКоэффициентыПересчетаЦен.Ссылка КАК Коэффициент,
    "Н" КАК К,
    ВЫБОР
        КОГДА НЕ дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Значение ЕСТЬ NULL
            ТОГДА 1
        ИНАЧЕ 100
    КОНЕЦ КАК Приоритет,
    ВЫБОР
        КОГДА дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.ВидЦены <> дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.ВидЦеныБазовый
            ТОГДА "+"
        ИНАЧЕ ""
    КОНЕЦ КАК А
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.дрКоэффициентыПересчетаЦен КАК дрКоэффициентыПересчетаЦен
            ПО ВидыЦен.дрКоффициентПересчета = дрКоэффициентыПересчетаЦен.Ссылка
        ПО (ВидыЦен.дрНомерВывода > 0)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.дрИтоговыйПересчетЦенПоНоменклатуре.СрезПоследних КАК дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних
        ПО СпрНоменклатура.Ссылка = дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.Номенклатура
            И (ВидыЦен.Ссылка = дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.ВидЦены)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.дрЗначенияКоэффициентовПересчетаЦен.СрезПоследних(, Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК дрЗначенияКоэффициентовПересчетаЦенСрезПоследних
        ПО СпрНоменклатура.Ссылка = дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Номенклатура
            И (дрКоэффициентыПересчетаЦен.Ссылка = дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Коэффициент)
ГДЕ СпрНоменклатура.ЭтоГруппа = ЛОЖЬ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    СпрНоменклатура.Ссылка,
    ВидыЦен.Ссылка,
    дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.Цена,
    дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.Валюта,
    дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Значение,
    дрКоэффициентыПересчетаЦен.Ссылка,
    "СП",
    ВЫБОР
        КОГДА НЕ дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Значение ЕСТЬ NULL
            ТОГДА 2
        ИНАЧЕ 100
    КОНЕЦ,
    ВЫБОР
        КОГДА дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.ВидЦены <> дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.ВидЦеныБазовый
            ТОГДА "+"
        ИНАЧЕ ""
    КОНЕЦ
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.дрКоэффициентыПересчетаЦен КАК дрКоэффициентыПересчетаЦен
            ПО ВидыЦен.дрКоффициентПересчета = дрКоэффициентыПересчетаЦен.Ссылка
        ПО (ВидыЦен.дрНомерВывода > 0)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента
        ПО СпрНоменклатура.Ссылка = НоменклатураСегмента.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.дрИтоговыйПересчетЦенПоНоменклатуре.СрезПоследних КАК дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних
        ПО СпрНоменклатура.Ссылка = дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.Номенклатура
            И (ВидыЦен.Ссылка = дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.ВидЦены)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.дрЗначенияКоэффициентовПересчетаЦен.СрезПоследних(
                , Сегмент <> ЗНАЧЕНИЕ(Справочник.СегментыНоменклатуры.ПустаяСсылка)) КАК дрЗначенияКоэффициентовПересчетаЦенСрезПоследних
        ПО (НоменклатураСегмента.Сегмент = дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Сегмент)
            И СпрНоменклатура.Производитель = дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Производитель
            И (дрКоэффициентыПересчетаЦен.Ссылка = дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Коэффициент)
ГДЕ СпрНоменклатура.ЭтоГруппа = ЛОЖЬ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    СпрНоменклатура.Ссылка,
    ВидыЦен.Ссылка,
    дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.Цена,
    дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.Валюта,
    дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Значение,
    дрКоэффициентыПересчетаЦен.Ссылка,
    "П",
    ВЫБОР
        КОГДА НЕ дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Значение ЕСТЬ NULL
            ТОГДА 3
        ИНАЧЕ 100
    КОНЕЦ,
    ВЫБОР
        КОГДА дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.ВидЦены <> дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.ВидЦеныБазовый
            ТОГДА "+"
        ИНАЧЕ ""
    КОНЕЦ
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.дрКоэффициентыПересчетаЦен КАК дрКоэффициентыПересчетаЦен
            ПО ВидыЦен.дрКоффициентПересчета = дрКоэффициентыПересчетаЦен.Ссылка
        ПО (ВидыЦен.дрНомерВывода > 0)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.дрИтоговыйПересчетЦенПоНоменклатуре.СрезПоследних КАК дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних
        ПО СпрНоменклатура.Ссылка = дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.Номенклатура
            И (ВидыЦен.Ссылка = дрИтоговыйПересчетЦенПоНоменклатуреСрезПоследних.ВидЦены)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.дрЗначенияКоэффициентовПересчетаЦен.СрезПоследних(
                , Производитель <> ЗНАЧЕНИЕ(Справочник.Производители.ПустаяСсылка)
                И Сегмент = ЗНАЧЕНИЕ(Справочник.СегментыНоменклатуры.ПустаяСсылка)) КАК дрЗначенияКоэффициентовПересчетаЦенСрезПоследних
        ПО (СпрНоменклатура.Производитель = дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Производитель)
            И (дрКоэффициентыПересчетаЦен.Ссылка = дрЗначенияКоэффициентовПересчетаЦенСрезПоследних.Коэффициент)
ГДЕ СпрНоменклатура.ЭтоГруппа = ЛОЖЬ
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший