#0
by Stella0608
Собственно, проблема такая. Есть отчет, переписанный на SQL через 1с++. Через какое-то время (только в этом отчете) обнаружилась одна проблема. Описываю: когда указываешь дополнительную группировку и нажимаешь "сформировать", отчет формируется без проблем. Но если еще раз нажать "сформировать", 1с зависает, помогают только 3 кнопки. Наличие этой группировки добавляет еще одно внутреннее соединение в запрос. Т.е. пример: у нас есть реквизит Город типа Справочник, у этого города есть реквизит Регион типа справочник Регионы, вот только если выбрать дополнительно регион, проявляется проблема. При этом в запросе появляется строчка кода, добавляющая соединение справочника Города со справочником Регионы. Отладка показала следующую вещь. Сам запрос выполняется сколько угодно раз, и результаты запроса без проблем выгружаются в ТЗ. Но: если выполнять запрос больше одного раза, после собственно выполнения запроса, отчет зависает практически на любой строчке кода в 1с. К примеру, отчет может подвесить строчка Таб = СоздатьОбъект("Таблица"). Может проблема известная и уже знает как с ней бороться. Ах да, конфа нетиповая, 27 релиз, SQL 2000.
#4
by viktor_vv
Скорее всего текст запроса формируется динамически, и при повторном запуске неправильно формируется тест. Или со временными таблицами. Ну так, потелепатировать.
#7
by МихаилМ
все просто: не объявляются локальные переменные. при совпадении имени переменной например текста запроса может получиться мегазапрос.
#8
by Stella0608
Отчет рисовала я :). Вот строчка кода, на которой валится отчет: КонецЕсли; Переменная СоедГород в данном случае равна 1.
#11
by Stella0608
При повторном формировании отчета делаю Сообщить("Текст"). Текст запроса остается преждним. ТЗ с данными, которая выдается на экран после выполнения запроса, вроде как тоже похожа на правильную. Но построчного сравнения не делала. Базы, к сожалению, нет под рукой. Могу глянуть чуть позже. Вопрос поступил от пользователя. Отчет под рукой есть.
#12
by Stella0608
Мне, к сожалению, самой приходится телепатировать. :) Пока известно, что отчет валится после дополнительного соединения.
#13
by viktor_vv
Странно, как фото в купальнике в личке (тут все хорошо и правильно) так пожалуйста, как тест запроса, так прям тайны мадридского двора :).
#15
by Stella0608
Пытаюсь получить. Пользователь скажем так, не сидит рядом со мной :). К тому же, страшно услышать в ответ что я нуб без комментариев :))).
#18
by МихаилМ
если запрос к ms sql, то хорошо явно указывать подсказки блокировок. т.к. возможно блокировки при первом выполненни блокируют выполнение при повторном.
#21
by toypaul
обновление статистик обычно помогает. оптимзатору иногда крышу сносить при усложнении запросов, если статистка старая. ну или , но это уже сложнее. обычно помогает более простой способ. мне уже не раз помогало = в том числе при больших объемах данных.
#22
by toypaul
ой. как обычно не дочитал до конца :). чтобы зависал после определ. кол-ва выполнений, это не статистика. тем более на произвольной строчке кода = это вообще хрень какая-то.
#25
by Stella0608
В общем так. Базы нет под рукой, и не могу воспроизвести текст запроса на рабочей базе с нужными фильтрами :(. В целом - что-то подобное: СпрТов.SP3500 [Производитель $Справочник.Производитель], SUM(Kol1) Kol1, SUM(Seb1) Seb1, SUM(ST1) ST1, GROUPING (СпрТов.SP3500) as Группа1 FROM (SELECT SP6886, SP6888, FROM (SELECT SP6886, SP6888, CASE WHEN DATE_TIME_IDDOC BETWEEN :НачДата1 AND :КонДата1~ THEN SP6889 ELSE 0 END Kol1, CASE WHEN DATE_TIME_IDDOC BETWEEN :НачДата1 AND :КонДата1~ THEN SP6890 ELSE 0 END ST1, CASE WHEN DATE_TIME_IDDOC BETWEEN :НачДата1 AND :КонДата1~ THEN SP6891 ELSE 0 END Seb1, IDDOC FROM $Регистр.УчетПродажОб AS РегПрод WHERE (РегПрод.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)) AS MainTab GROUP BY SP6886, SP6888) AS MainTab2 INNER JOIN SC33 СпрТов ON MainTab2.SP6886 = СпрТов.ID INNER JOIN SC46 СпрКл ON MainTab2.SP6888 = СпрКл.ID INNER JOIN SC5677 СпрГор ON СпрКл.SP5699 = СпрГор.ID WHERE (СпрКл.SP5699 = :ВыбГород) AND (СпрГор.SP5708 = :ВыбРегион) GROUP BY СпрТов.SP3500 WITH ROLLUP Глюк происходит, когда в запросе присутствует эта строчка: INNER JOIN SC5677 СпрГор ON СпрКл.SP5699 = СпрГор.ID
#28
by Stella0608
Запросу сто лет и писался на чистом скуле (когда практически вообще его не знала :)), ну а сейчас переделывать все на метапарсер желания нет :).
#33
by viktor_vv
Смущает вот эти ступенчатые инеры INNER JOIN SC46 СпрКл ON MainTab2.SP6888 = СпрКл.ID INNER JOIN SC5677 СпрГор ON СпрКл.SP5699 = СпрГор.ID Помнится у меня что-то подобное тормознее было, чем left с условием IS NOT NULL.
#34
by Stella0608
SP5699 - реквизит справочника Контрагенты. Называется Город. Тип - Справочник.Города.
#37
by leshikkam
Поставьте признак Сортировка на реквизит Город в справочнике Контрагенты (создайте индекс)
#38
by Stella0608
Полной уверенности нет, но есть подозрение, что это не выполняется вообще никогда. Т.е. задумка была, но не реализована. Т.к. выше встречается вот такой код:
#39
by Stella0608
Все ответы, которые прямо сейчас попробовать возможности нет, обязательно приму к сведению!
#40
by Mikeware
так если заменить названия на человечьи - скорее всего, и ошибку проще увидеть будет
#41
by Stella0608
Я бы не сказала, т.к. уже день ковыряю отчет с нормальными "человеческими" именами :).
#42
by Злой Бобр
Непоможет. Не в данном случае. Или текст в студию, или лучше сохранить отчет как внешний и положить на файлопомойку. Ну так проще будет, а то угадайка неработает я так понял.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- v7: Списание товара при ОСН- зависает НДС на 19 счете!
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
В этой группе 1С
- УПП 1.3.35 универсальный отчет
- Интервалы дат в запросе в соответствии с таблицей значений...
- winscp копирование конкретного файла
- Свертка периферийного узла РИБ. 1С Розница, Магазин одежды и обуви.
- Не пишется серия затраты в регистр "Затраты на выпуск продукции"
- Настройка Proton IMS-3190 для ТиС
- ЗУП: Сотрудник в одном месяце работал в двух подразделениях, по одному не сч. ЗП
- КД2. Подстановка в приемник значения.
- v7: Нужны библиотеки AddIn.dll и EITSJPU.dll
- Справка к документу "Начисление амортизации ОС и НМА"
- Почему табличный документ не растягивается при печати?
- OFF: А кто работает из 1C с Google Maps JavaScript API V3?
- v7: BarCode - поворот на 90 градусов
- v7: Алгоритм синхронизации данных
- Запрос список складов в одну строку
- "ОбработкаПрерыванияПользователя()" - как заставить работать?!
- два периода для сравнения показателей в СКД
- Библиотека стандартных подсистем, настройка объектов подсистемы
- Таблица значений выделенные строки
- не получается подключиться к частной ВПН