Слишком сложный поисковый запрос 1с ошибка
На данной странице задавайте вопросы по материалам и практическим заданиям девятого модуля курса «Разработка и оптимизация запросов в 1С:Предприятие 8.3».
Практические задания
К сожалению, у Вас недостаточно прав для дальнейшего просмотра.
Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.
Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.
Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.
Комментарии / обсуждение (502):
Добрый день! Подскажите, пожалуйста, предполагается, что практические задания данного модуля для самостоятельного выполнения? потому что 35, 36 и, видимо, 38 затрагивают темы, которые не разбирались в данном курсе и в курсе 21 день. Решить их самостоятельно, основываясь только на данных курсах (а я иду по рекомендованной мне на этом сайте схеме обучения) не представляется возможным. Где можно восполнить пробелы? Хотелось бы разобраться в формах, приложениях, объектной модели, руку набить. Предыдущие модули прошли хорошо, а 9 модуль с 35 задания вызывает беспокойство, что многое упущено. Спасибо!
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! В задании 35 при открытии обработки ДолгиИзВнешнейБазы выходит ошибка – во вложении. Подскажите, пожалуйста, в чем дело?
…
(текст комментария доступен только участникам Мастер-группы)
В конструкторе запроса есть закладка Построитель, а в ней ещё 5 закладок. О ней ничего не говорилось, что это такое?
…
(текст комментария доступен только участникам Мастер-группы)
Вопрос по заданию 34.
Не могу разобраться в предложенных пояснениях.
В обычном приложении создана управляемая форма. На форме Таблица с типом ДеревоЗначений.
1. Прошу дописать код для выгрузки значений в табличную часть.
2. Прошу дописать такой код для выгрузки значений в табличную часть, но только в обычном приложении для обычной формы.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Контрагент,
| ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК Долг,
| ""Долг"" КАК Показатель
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(, ) КАК ВзаиморасчетыСКонтрагентамиОстатки
| ПО (ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = Контрагенты.Ссылка)
|ГДЕ
| НЕ Контрагенты.ЭтоГруппа
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Контрагенты.Ссылка,
| ПродажиОбороты.СтоимостьОборот,
| ""Продажи""
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(, , , ) КАК ПродажиОбороты
| ПО (ПродажиОбороты.Контрагент = Контрагенты.Ссылка)
|ГДЕ
| НЕ Контрагенты.ЭтоГруппа
|
|УПОРЯДОЧИТЬ ПО
| Контрагент,
| Показатель
|ИТОГИ ПО
| Контрагент";
…
(текст комментария доступен только участникам Мастер-группы)
1. Некорректно дерево значений назвала таблицей, т.к. меняла тип с ТаблицыЗначений на ДеревоЗначений. Сканы приложила.
2. Спасибо, обработка КарточкаКонтрагентов.epf подходит, просто не глянула в неё.
У меня есть восемь таблиц, которые содержат информацию об изменениях, вносимых в приложения по всей компании. Я только хочу запросить и объединить строки для подмножества более 200 приложений. Для этого я запрашиваю каждую таблицу по коду приложения (AAA, BBB и т. Д.) И хочу объединить результаты. Когда я использую более 5 кодов приложения, я получаю ошибку «Запрос к комплексу».
Я знаю, что есть более эффективный способ сделать это, но нижеприведенное - лучшее, что я смог сделать с моими ограниченными знаниями.
Я хотел бы иметь возможность запрашивать все 200+ кодов приложений одновременно и более эффективно, чем вводить одну и ту же строку 8 раз для каждого кода.
3 ответа
Более простой подход мог бы заключаться в том, что union данные таблицы перед применяют критерии выбора, поэтому вам нужно указывать критерии только в одном месте, например:
Если вы не используете подстановочные операторы в рамках критериев для like , вы можете альтернативно использовать in и предоставить список кодов приложений:
Кроме того, вы можете создать таблицу, содержащую все коды приложений, которые вы хотите вернуть (в следующем примере я назвал такую таблицу ApplicationCodes , содержащую одно поле с именем Code ), а затем использовать простое объединение для неявного применения фильтрации, например:
Я бы порекомендовал вам создать таблицу, в которой есть все приложения, тогда вы могли бы сделать всего 8 запросов
Если вам это не нравится, вы можете попробовать предложение IN
Имена таблиц, которые содержат даты или порядковые номера и одни и те же поля, обычно должны сочетаться с именем таблицы в качестве дополнительного свойства.
Создайте таблицу (например, ApplicationChanges) с полями объединенных таблиц и добавьте дополнительное поле ChangedAt , которое будет содержать старое имя таблицы. Возможно, старые таблицы содержат поле даты, которое показывает дату ChangedAt, тогда вы можете опустить имя таблицы и запрос, какие даты принадлежат этой таблице.
Затем используйте запрос @LeeMacs для заполнения новой таблицы:
Если вам нужна старая структура данных, создайте запросы для каждой предыдущей таблицы с критерием ChangedAt. Например. Таблица [2019-07-A July 5 to 7]
База Комплексная автоматизация, файловая, 8.1. Среднее число пользователей - 10. Нужно выполнить поиск вхождений определенной строки в комментарий документов "Заказ покупателя" за весь период. За весь период документов "Заказ покупателя" в базе около 30000. Вот думаю как сделать: либо использовать объект Полнотекстовый поиск, либо старый-добный запрос с ПОДОБНО? Кто пользовал полнотекстовый поиск, как думаете, как быстрее будет?
(1) а как же "все делайте запросами!? или 1с-ники как всегда - пофиг на все?
(0) если база конфетка, все ТиИ с ней делаются, номенклатура вся такая четкая да грамотно введенная, комментарии - образцы формализации, индексация так вообще каждый день - то рули поиском.
А вообще быстрее запросов в 1с нет ничего - ни якобы встроенных поисков, ни "типа вот механизм виртуальных таблиц для запросов", ни прочих "изысков" для чоскалей-отстатыщников.
(0) Это же разовая операция, мои юзеры с такой просьбой даже постеснялись(побоялись) бы мне звонить, руками все 30 тыс. бы перелопатили :)
(5)(8) это не разовая операция, нужен сервис поиска. И пользоваться им будут операторы часто. При забитии каждого нового заказа, нужно проверить комментарий.
(13) Он обновляется рег. заданиями. В туповых. Даже если нафиг не нужен.
А вообще - классная фишка, только надо уметь пользоваться.
А что, MS уже купила 1С? не знал..
Language Integrated Query (LINQ) — проект Microsoft по добавлению синтаксиса языка запросов, напоминающего SQL.
Наверное, Павлу показалась интересной идея "а раз взяли у MS её SQL - а чтобы не взять и LINQ??" ))
(13) Знаю. Сделаю ежедневное обновление индексов, последний день нам не критичен. Нужен поиск именно в старом архиве.
До этого полнотекстовый был вообще не настроен, сейчас запустил индексацию, база висит уже час. Если убить, как думаете, не гакнет база? А то делаю прямо на живом.
(22) ха-ха. если б не было так грустно..
про "запустил и висит уже час" - скажите москалям-"отстатыщникам". Пусть опыта набираются, что ли.
2(22) индексы полнотекстового поисках хранятся не в базе, а отдельно. так что ничего с базой не будет.
(23) да, мне планирвоание в УПП тоже с каждым релизом обещали, а уж в 1.3 - так вообще всем сидеть и не рыпаться.
(25) Спасибо, не знал. Так вот он для чего каталог 1Cv8FTxt нужен.
(29) Буду ждать до последнего, если до ночи не успеет, буду рубить процесс.
(31) С файловой, по сети, при нескольких работающих пользователях, по неидексируемому полю неограниченной длины? Не думаю.
2(28) всем плевать на ваш негативный опыт. Вы можете быть не самоуверенным, неуверенный, или еще каким угодно. Я знаю что файлы хранятся отдельно и прерывать можно.
В общем все ясно.. нужно применять санкции.
(34) это всего 30000 * 100 (ну пусть 100 байт текста они введут в КАЖДЫЙ документ руками) = это целых ТРИ мегабайта. если у вас не диалап по модему, то проблем со скоростью нет.
Статья рассчитана в первую очередь на тех, кто недостаточно много работал с 1С и не успел набить шишек при встрече с часто встречающимися ошибками. Обычно можно определить для себя несколько действий благодаря которым можно определить решится ли проблема за несколько минут или же потребует дополнительного анализа. В первое время сталкиваясь с простыми ошибками тратил уйму времени на то, чтобы с ними разобраться. Конечно, интернет сильно помогает в таких вопросах, но не всегда есть возможность им воспользоваться. Поэтому надеюсь, что эта статья поможет кому-нибудь сэкономить время.
В информационных базах на платформе 1С могут возникнуть множество различных ошибок:
нарушение логической/физической целостности базы, ошибки пользователей, «кривой» код разработчика и многое другое.
Причин может быть множество: отключили свет, и не было источника бесперебойного питания, или вечер пятницы удался, и пользователь уже и не может вспомнить в понедельник, что он натворил такого.
Во-первых, стоит задать несколько уточняющих вопросов пользователю:
1) Релизы платформы/конфигурации.
4) Возникает ли если запустить 1с с другого компьютера/от другого пользователя? Это даст нам пищу для размышлений – сможет ли помочь очистка кэша, настройка прав, или очистка настроек пользователя.
Теперь немного о самих ошибках и том как их решать.
Общее:
Часть ошибок возникает при использовании нелицензионного ПО (windows, 1C и т.д.).
Распространенный пример – ломаная платформа. Один из патчей взламывает конкретную версию платформы, поэтому после установки новой версии платформы и попытке зайти в базу можно увидеть окно «Не обнаружено свободной лицензии».
Если Вы встретили ошибку в первый раз - возможно, кто-то уже ее встречал -
поищите в google, возможно кто-то уже с этим сталкивался и решил проблему, и Вы не потратите лишних пару часов своего времени.
Релиз конфигураций должен быть актуальным (в первую очередь для конфигураций из которых сдается регламентированная отчетность), неспроста на линии консультаций практически всегда предлагают вначале обновиться, а потом уже смотреть дальше.
Актуальный релиз платформы - у каждой конфигурации написано, какой релиз платформы рекомендован для работы с этой конфигурацией.
Технологический журнал позволяет протоколировать все события 1С:Предприятия (или часть, используя фильтр).
Про него можно прочитать здесь и здесь.
. ВАЖНО
Перед любыми действиями с базой - сделать архивную копию!
Если база не открывается в конфигураторе - скопировать папку с базой и выполнять все операции на копии!
1) База вообще не открывается ни в пользовательском режиме, ни в конфигураторе.
-
Самое быстрое, что можно сделать - очистить временные файлы (удалить базу из списка баз и подключить заново)
- Также можно попытаться зайти в базу от другого пользователя.
- Если база файловая, то стоит запустить утилиту для тестирования физической целостности базы chdbfl. Она находится в папке:
C:\Program Files (x86)\1cv8\8.x.x.xxx\bin\chdbfl.exe
- Если база sql-ная то тестирование средствами sql.
2) Если база при запуске уходит в дамп.
- Откройте свойства экрана. Это можно сделать через Панель управления, или просто щелкнув правой кнопкой мыши по любому месту рабочего стола, свободному от окон и значков, и выбрав пункт контекстного меню «Свойства».
- В открывшемся окне настройки дисплея перейдите на закладку «Параметры» и нажмите кнопку «Дополнительно».
- В открывшемся окне свойств видеокарты перейдите на вкладку «Диагностика».
- Передвиньте движок «Ускорение» в крайнюю левую позицию («нет») и нажмите «Применить» или «Ок». Аппаратное ускорение отключено. Изменения вступят в силу после перезагрузки системы.
- Откройте Панель управления (Пуск — Панель управления).
- Найдите и откройте элемент «Экран».
- В левой части открывшегося окна щелкните по ссылке «Настройка параметров экрана».
- В открывшемся окне нажмите на ссылку «Дополнительные параметры».
- Перейдите на вкладку «Диагностика» и нажмите кнопку «Изменить параметры».
- В открывшемся окне передвиньте движок в крайнее левое положение («нет») и нажмите «Ок». Если UAC включен, придется подтвердить, что изменения санкционированы пользователем. Аппаратное ускорение отключено. Изменения вступят в силу после перезагрузки системы.
В Windows 7 в некоторых случаях кнопка «Изменить параметры» будет неактивна. В этом случае отключить аппаратное ускорение невозможно, так как видеокарта и ее драйвер не поддерживают манипуляции аппаратным ускорением.
4) При каком-то действии выкидывает на код в конфигуратор.
- Для проверки стоит очистить кэш.
- Если не помогло то скорей всего ошибка в коде - особенно актуально для нетиповых и самописных конфигураций, но встречается иногда и в типовых.
Если конфигурация нетиповая, то тут либо обновление прошло некорректно или разработчик дорабатывавший конфигурацию не предусмотрел все возможности пользовательских ошибок – защита от дурака (если это возможно!).
Если типовая, то возможно ошибка в релизе.
В любом случае стоит пробежать в отладчике и посмотреть что не так.
5) Под одним пользователем дает что-то сделать, под другим нет.
- Настройки прав пользователей.
- Настройки пользователя.
- Очистка кэша.
6) С одного ПК заходит, с другого нет.
- Проверить в проводнике видит ли базу – может к папке с базой не предоставлен общий доступ.
- Очистка кэша.
- Зайти под другим пользователем.
7) Я ничего не делал/делала но у меня все сломалось
- Если смогут подсказать что именно «не делали» и когда, то можно воспользоваться
8) Недостаточно памяти.
Был у меня случай, пришел клиент, говорит, при закрытии месяца вылетает ошибка "Недостаточно памяти". Взялся я за эту проблему. Думал, что легко, сначала добавил оперативки - ошибка. Было 2 гигабайта, стало 4, а все равно 1с-ке мало. Размер файла подкачки менял - ошибка, переустановка системы (поставил Windows 7) дало только временный результат, где-то на неделю. Перепробовал все. Спустя некоторое время решение было найдено.
Решение
На клиентском компе запустить командную строку от имени администратора, прописать там следующее:
BCDEdit /set increaseuserva xxxx - вместо хххх пишите объем виртуального адресного пространства в мегабайтах, т.е. сколько нужно памяти под работу приложений. По умолчанию 2 гига. Вообще в 32-разрядных операционных системах выделяется 4 гигабайта: 2 - на приложения и 2 на нужды самой ОС. Я выбрал 3000 (т.е. CDEdit /set increaseuserva 3000). Однако система может подглючивать. Особенно, если у вас 2 гига оперативки, как у меня. Это для ОС семейства Windows Vista, 7, Windows 2008.
Для Windows XP \ Windows 2003 пишем
/3GB /userva=xxxx (xxxx в МБ в диапазоне 2048 - 3072) в файле boot.ini, рекомендуемый максимум значений userva 2900–3030.
9) Элементы форм налезают друг на друга и имеют неправильное расположение.
10) Ошибка СУБД Внутренняя ошибка компоненты dbeng8
- Ошибка связана с различием кода разных версий платформы, когда пользователи пытаются использовать файловый вариант. Для клиент-серверного варианта при запуске происходит контроль и работа с разными версиями платформы в принципе невозможна.
Решение: обновиться до актуального релиза на всех рабочих местах.
Если не помогло, тогда делаем следующее:
-
Тестирование и исправление
11) Ошибка в платформе 8.3.4.428
- В версии 8.3.4.428 платформы "1С:Предприятие" обнаружена критичная ошибка, возникающая при реструктуризации данных. Данная ошибка локализована и будет исправлена в следующей версии платформы.
12) Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Could not continue scan with NOLOCK due to data movement.
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=3, Severity=C, native=601, line=1
Конечно список далеко не полный, так что буду рад, если его дополнят в комментариях.
Специальные предложения
В случае, когда база открывается только в Конфигураторе, может помочь выгрузка данных с последующей загрузкой в новую "нулевую" базу. Не панацея, конечно, но иногда выручало.
При любой непонятной фигне чистить кэш потом разбираться.
У меня пользователи уже научены что сначала давят Сервис\Очистить кэш и перезапустить программу а потом уже звонить и жаловаться.
Хорошая статья! По первому пункту могу добавить. Если не получилось ничего из перечисленного, можно воспользоваться программкой Tool_1CD и с ее помощью удалить записи в таблице configsave. Только это мне и помогло в свое время.
1 пункт. Как же можно выгрузить в *.dt, если по условию не загружается конфигуратор?
8. пункт это не решение. Увеличение до 3Гб памяти под процесс зачастую не помогает. Решение - это 64-разряда для клиента и для сервера.
Вообще в 32-разрядных операционных системах выделяется 4 гигабайта: 2 - на приложения и 2 на нужды самой ОС.
Строго говоря, 4 гигабайта это адресное пространство 32-разрядных систем, а не "выделяется". Из которых MS еще что-то резервирует под аппаратную часть, плюс еще ограничивает каждый процесс 2 Гигами.
9. Проще сделать "Восстановить положение окна Alt-Shift-R"
Многократно повторенный совет использовать chdbfl.exe довольно сомнителен. Утилита известна тем, что зачастую добивает базу окончательно.
(6)(9) - присоединяюсь. С программными лицензиями проблемы возникают гораздо чаще.
Статья классная, я плюсанул. Одно но "Часть ошибок возникает при использовании нелицензионного ПО (windows, 1C и т.д.)." - очень сомнительное предложение.
Terve!R; user705520_admin; roman8115; virtmon; Sophus; Bukaska; JesteR; buganov; for-elenak; plmshka; Sergafan10; + 11 – 1 Ответить
(9) Aspire1C,
Скорее это относится к карявым патчам в которых "что-то не учли"
(0)
Статья хорошая, хотя у нас с одним клиентом, в клиент-серверном варианте, возникла ошибка, которая не была описана ни где в интернете (по крайней мере я не нашёл):
При попытки открыть форму справочника или сделать запрос хотя бы к одному его полю - рабочий сервер 1С 8.3 падает и перезапускается. Тут ни чиска кешев, ни dt, ни чекдб в скуле, ни выгрузка-загрузка через файловую базу (с проверкой chdbfl и тестированием-исправлением) не помогают :-) Хотя в файловом варианте всё работало отлично.
Там учитывать нечего.
Но из за повального спроса, их часто снабжают дополнительным потребительским сервисом - троянами.
Если в процессах висит что-то типа rundll32 C:\windows\temp\pagefile.sys - это вот оно.
(26) Aspire1C, да, часто это ошибка, возникшая вследствие незнания администратором специфики механизмов лицензирования 1С/HASP.
Это не статья. Это перечень условно известных проблем с не всегда корректными рекомендациями по их решению.
Далее по пунктам:
0) Кэш (и Local, и Roaming) чистим в первую очередь. И при возможности перезапускаем серверы приложения и СУБД.
1) Правильное решение - технологический журнал.
2) Приведена только одна из возможных причин, к тому же не самая частая. (проверьте в системном логе ошибок GDI). И даже в этом случае лучшее решение - обновлять драйвера видео. Наблюдается это только со старыми дровами встроенного видео Intel. А вообще правильное решение - технологический журнал.
3) Правильное решение - технологический журнал
4) Не нужно гадать - сразу идем в отладчик.
5) Верно.
6) Скорее всего, это какая-то проблема связи либо авторизации. В случае с файловой базой первичная рекомендация верная, а при клиент-серверной помогут всяческие пинги, телнеты, анализ системных логов и опять же - технологический журнал.
7) Не забыть написать служебку о саботаже рабочего процесса пользователем. В следующий раз пользователь будет помнить, что он делал. А так да, ЖР, минимальный ТЖ (excp, excpcntx) и логи.
8) Вообще-то в современных конфигурациях механизмы, требовательные к памяти, обычно выполняются на сервере. Может помочь оптимизация проблемных запросов. А в некоторых случаях поможет только сервер x64. Ну и о фрагментации адресного пространства памяти не забываем, спасет плановый перезапуск рабочих процессов.
9) Не факт. В УФ может быть виноват браузер, в ОФ - кривые привязки элементов формы.
10) Тоже не факт. Сбойная база к такой ошибке может приводить.
11) Версия платформы отозвана. Решение - только поднимать базу из бэкапа.
12) С чего вы вообще взяли, что конфликт блокировок - это ошибка? Это показатель некорректной работы СУБД или логики конфигурации, и dbcc checkdb Вас от этого не спасет.
"Конфликт блокировок" бывает двух видов:
а) таймаут - тут нужно выяснять, почему не удалось наложить блокировку за отведенное время.
б) дедлок - тут нужно анализировать порядок наложения блокировок, и далеко не всегда эту проблему удается решить "малой кровью".
Созинов; dutlovva; Serg O.; nnn123; roman8115; Ikarus; mms76; pallid; meuses; ojiojiowka; gigabyte_artur; quNas; anchovy; CratosX; warrior1985; mr.Kot; Bukaska; ВРедная; Yashazz; lesna; Redokov; JesteR; suggestive; TrinitronOTV; EmpireSer; + 25 – Ответить
Код запроса. Если делать перебор от одного до десяти, то все работает, как только увеличиваю, выпадает ошибка "слишком сложный запрос". Мне надо перебрать 68 чисел и выдать кол-во записей по каждому числу.
Как можно "упростить" запрос (решить проблему)?
Добавлено через 7 минут
Нашел проблему) написал здесь и сам увидел)) все просто оказывается было))) в строчке была "ошибка" я исправил ее)) еще раз повторюсь) написал здесь) и на новом фоне увидел сразу же)) Киберфорум помогает)))
Добавлено через 1 минуту
Сложный запрос
Очередная и надеюсь последняя моя тема :D В запросе нужно вывести данные из 5 таблиц (встреча.
Сложный запрос
Задача: Есть несколько ЧЕК боксов. И есть Два едита, для ввода даты. Система должна работать.
сложный запрос
Доброго времени суток! У меня есть база на аксесе, подключенная через ADO там 3 таблицы.
Сложный запрос sql
Доброго времени суток дамы и господа! Мучает такой вопрос: Имеется сложный sql запрос, где нужно.
Решение
Для того что бы почитать кол-во записей ! есть SQL Функция COUNT почему из клиентское приложение запускайте цикл FOR ?
Вы уже давно находитесь на форуме и такой вопрос от вас не ожидал .! Но, неудивительно. Я помню тоже когда вы утверждали что SQL изучать не надо. вы где то накликайте и вам скрипт готовый генерирует СУБД да, да я это помню
Ну не совсем у вас, я понял уже что это был sql server management studio. А так вдруг понадеялся что это в Delphi среде где-то такие примочки зарыты, а нет! .
На делфи есть ADO, SDAC, ODAC, MyDAC -Query который предназначено для SQL запросов, Можно еще создать T-SQL VIEW и там сохранить ваши SELECT
А на Access тоже можно сохранить запрос под какой то имя и вызвать потом его SELECT как таблица
Добавлено через 7 минут
Интересный прикол. Только просто так вызывать не интересно будет. Параметры туда писать можно в эту функцию? Например значения для фильтра или имя поля для сортировки.
Параметры туда писать можно в эту функцию? Например значения для фильтра или имя поля для сортировки.
Это запрос можно сразу пользоваться из Delphi не кто это не запрещает . Но есть некоторый момент
Что бы избавить такой неприятности .! можно это запрос запихнуть представление или функцию .
Параметры для фильтра и сортировки НЕ НУЖНО . А так функцией параметры можно . Было бы хорошо если вы почитали или хотя бы полистали Книга Автор: Роберт Виейра "Программирование баз данных Microsoft SQL Server 2005. Базовый курс.2007.pdf" и все станет на своего месте
Читайте также: