1с основная таблица динамического списка задана неверно не задан ни текст запроса

Обновлено: 06.07.2024

Всем доброго дня, есть следующая проблема: Реализовал в динамическом списке формы списка документов запрос через виртуальные таблицы, долго он с разными ошибками валился, но сейчас вообще с непонятной ошибкой падает - Ошибка при выполнении запроса. Ошибка при выполнении запроса. по причине: Поле не найдено "_ПараметрСпискаИмяРазвернутойСсылки0" В запросе естественно такого параметра нет, видимо он где-то формируется, но в коде ничего похожего не нашел. в запросе у меня несколько виртуальных таблиц, все в итоге выступают источниками данных в итоговом пакете. В некоторых есть параметры, но на них он никак не ругается. Платформа 8.2.19.76. Конфа самописная.

"все в итоге выступают источниками данных в итоговом пакете" Ээ.. а когда стало возможным использовать пакетные запросы в динамических списках?

> все в итоге выступают источниками данных в итоговом пакете Документация: "Динамический список не поддерживает работу с пакетными запросами."

не, не объединение, создал несколько ВТ и в запросе пакета их все добавил и связал. ну по крайней мере платформа не выдавала ошибок когда я все это вставлял в запрос динамического списка.

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

а тут народ пользовался - есть какой-то пруф что нельзя?

Ну по ссылке как раз пример того, что не работают ВТ в ДС. Ну не может ДС в пакеты.

там нельзя в режиме конструктора создавать ВТ, а если подсунуть текст то все ОК, об этом и писалось в , и ошибки которые там были описаны у меня тоже были, но я сделал основной ВТ запрос по основной таблице списка, чтобы можно было ее выбрать в динамическом списке как основная таблица, и эти ошибки все ушли (про date и т.п.)

Описание: Динамический список предоставляет разработчику возможность описать в форме запрос практически произвольного вида, указать условное оформление данных, порядок сортировки, отборы и группировки данных. Ограничения: в запросах нельзя использовать объединения. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент. Может использоваться в реквизитах управляемой формы.

а че бы он в консоли то не отрабатывал? Вопрос в том, что данные, которые ты хочешь получить, лежат у тебя не в первом пакете запроса (ВТЗадачиПОисполнителю) , а в одном из последующих. в результирующем твоем запросе. Так вопрос то в том - в ДС у тебя есть поля из результирующего запроса? или только то получаешь, что у тебя в первом пакете лежит?

Все данные берутся из основной таблицы, другие нужны для сравнения некоторых параметров и возвращают через ВЫБОР КОГДА истину/ложь или опять реквизит основной таблицы

хотя есть пару булевских реквизитов с другой таблицы.

Есть какие-нибудь еще предложения? никто не извращался с ВТ в динамическом списке? =) ну или дайте пруф что так не работает, чтобы я узбагоился = пытаюсь оптимизировать этот динамический список.. на больших объемах тормозит.

Запросы в динамических списках

Область применения: управляемое приложение, мобильное приложение.

Методическая рекомендация (полезный совет)

При проектировании динамических списков в формах следует учитывать, что динамические списки предъявляют более высокие требования к скорости выполнения запросов, чем в других случаях (например, в отчетах, в процедурах обработки данных и пр.). Данные в динамических списках непосредственно отображаются пользователю, поэтому скорость вывода и обновления данных является критичной. В данной статье перечислены рекомендации, дополняющие общие сведения по оптимизации запросов (см. группу статей «Оптимизация запросов»).

1. Нужно стараться делать простые запросы для динамических списков. Для этого в первую очередь нужно оптимизировать архитектуру хранения данных, чтобы их было просто отображать в динамических списках.

Пример

В динамическом списке документов-распоряжений на отгрузку нужно вывести состояние отгрузки. Состояние зависит от остатков регистра накопления, и статусов двух документов другого типа.

НЕПРАВИЛЬНО

Пытаться разработать запрос для динамического списка, который будет учитывать всю сложную логику расчета состояния отгрузки.

ПРАВИЛЬНО

Сделать регистр сведений «Состояния отгрузки», в котором хранить уже рассчитанное состояние отгрузки. При этом расчет можно делать или в процессе проведения документов, которые могут влиять на состояние отгрузки, или отдельным регламентным заданием.

2. Необходимо выбрать один из трех режимов работы динамического списка:

  • Динамическое считывание данных включено (рекомендуется). Используются запросы, выбирающие записи в количестве приблизительно соответствующем количеству видимых строк в таблице;
  • Динамическое считывание данных выключено, задана не виртуальная основная таблица или одна из следующих таблиц: СрезПервых, СрезПоследних, ЗадачиПоИсполнителю, КритерииОтбора, ДвижениеСубконто. Используются запросы, выбирающие по 1000 записей в буфер на сервере, по мере необходимости данные передаются на клиент. Менее эффективно, чем динамическое считывание;
  • Динамическое считывание данных выключено, основная таблица не задана. Запрос выполняется «как есть». В буфере накапливаются данные, начиная с 1000 записей. Чем ближе к концу списка, тем больше записей. Можно использовать только для заведомо маленьких выборок.

3. При разработке динамического списка следует учитывать что запрос, который фактически будет сформирован к СУБД, зависит от предопределенных настроек отборов, порядка и группировки СКД. В частности это означает, что необходимо рассмотреть индексирование полей:

  • По которым выполняется соединение в запросе;
  • На которые наложены условия в запросе;
  • Выведенных в качестве быстрых отборов;
  • По которым выполняется упорядочивание или предусмотрена группировка;
  • По которым ожидается, что пользователь будет часто упорядочивать (группировать).

При этом не следует индексировать все поля подряд «на всякий случай», так как избыточные индексы создают неоправданную нагрузку при записи данных.

4. Настоятельно не рекомендуется использовать конструкции, «утяжеляющие» запрос:

  • конструкции РАЗЛИЧНЫЕ и СГРУППИРОВАТЬ ПО;
  • конструкции ВЫБОР в предложении ГДЕ или в условиях соединения;
  • упорядочивание по полю, полученному при помощи конструкции ВЫБОР, в том числе и пользовательское.

5.1 Соединяться в запросе следует только с небольшим количеством реальных таблиц (в оптимальном варианте в динамическом списке – только одна таблица, и она назначена основной).

Не рекомендуется выполнять соединения:

  • с большим количеством реальных таблиц. Ориентироваться стоит на количество не более 4 таблиц;
  • с вложенными запросами;
  • с виртуальными таблицами.

5.2. Соединение с виртуальными таблицами допустимо в отдельных случаях, если запрос и архитектура данных удовлетворяют ряду условий:

  • допустимо соединение с виртуальными таблицами СрезПоследних (СрезПервых), если регистр сведений содержит
    заведомо небольшое количество записей. Например, получение текущего курса валют по данным регистра сведений КурсыВалют;
  • при обращении к виртуальной таблице будут использованы хранимые итоги регистра сведений (см. Разрешение итогов для периодических регистров сведений);
  • запрос к виртуальной таблице Остатки будет преобразован платформой в простое чтение хранимой таблицы итогов без группировок (см. Эффективное обращение к виртуальной таблице «Остатки»).

5.3. Временные таблицы в динамических списках следует использовать с учетом требований описанных ниже и в стандарте про использование временных таблиц.

5.3.1. Временные таблицы в динамических списках рекомендуется использовать только тогда, когда они содержат заведомо небольшое количество записей. Иначе их использование неэффективно, т.к. значения временных таблиц в динамическом списке НЕ кешируются, а формируется при каждом считывании данных для заполнения списка.

5.3.2. В частности, если не удается переделать запрос динамического списка, используя виртуальные таблицы с ограничениями (см. п. 5.2), или вообще отказавшись от их использования, то вместо соединения с ними следует использовать соединения с временными таблицами.

5.3.3. Если последний запрос динамического списка выбирает данные только из ранее созданной временной таблицы, то это уже не динамический список и следует перепроектировать его запрос и, скорее всего, метаданные, используемые запросом.

5.4. При учете количества таблиц, участвующих в запросе, необходимо помнить, что обращение к полям «через точку» приводит к неявному соединению с дополнительными таблицами. Подробнее см.: Разыменование ссылочных полей составного типа в языке запросов

5.5. При работе со списком под неполными правами, в которых настроены ограничения доступа к данным (RLS) к таблицам, участвующим в запросе*, также автоматически присоединяются условия ограничения доступа к данным, которые замедляют работу списка. Именно в этом режиме работы следует проверять скорость работы динамических списков.

* примечание: к тем таблицам, к которым предусмотрен RLS в конфигурации.

6. Предусмотреть оптимизацию при работе с полями составного типа

  • При использовании в соединениях, отборах, упорядочивании и других конструкциях составного поля, необходимо чтобы состав типов данного поля определялся только ссылочными типами. Подробнее см.: Ограничения на использование реквизитов составного типа;
  • Если известно заранее, какого типа должно быть получено поле составного типа, то его необходимо выражать.

7. Запрос динамического списка рекомендуется менять «на лету» на более оптимальный, если это возможно.

Например, если изменение настройки позволяет переписать запрос динамического списка так, что он будет обращаться к другим метаданным, что позволит выполняться ему быстрее.

8. Если применение вышеизложенных рекомендаций не возможно, либо оно не дает должного эффекта, то можно рассмотреть следующие пути оптимизации:

8.1. Отказаться от части возможностей динамического списка.

  • От вывода не столь значимой информации, получение которой приводит к усложнению запроса;
  • От реализованных сервисных возможностей по группировке списка.

8.2. Осуществлять вывод данных не в динамический список, а в таблицу или дерево значений.

При этом появятся возможности оптимизации недоступные для динамических списков, такие как использование привилегированного режима и т.п..

Данный способ применим, если выполняется одно из условий:

  • Исходных данных заведомо мало (десятки-сотни записей).
  • Обязательные отборы, накладываемые на список, гарантируют, что данных в один момент времени записей выводится мало.
  • Порционность вывода данных организована другими средствами (вручную), например, как в результатах полнотекстового поиска.

9. В случаях, когда в динамическом списке требуется отображение вспомогательных колонок, по которым не требуется отбирать (в том числе через механизмы поиска), сортировать и группировать, и затруднительно, неэффективно или невозможно выполнить получение данных с помощью основного запроса, рекомендуется воспользоваться обработчиком ПриПолученииДанныхНаСервере таблицы управляемой формы. Например, колонки Курс на сегодня , Кратность в списке валют и т.п.

Для эффективной работы обработчика ПриПолученииДанныхНаСервере следует выбирать всю вспомогательную информацию одним запросом сразу для всех отображаемых строк, которые передаются в этот обработчик после выполнения основного запроса динамического списка.

Кроме того, для корректной работы динамического списка требуется явно ограничить выполнение отбора, сортировки и группировки по вспомогательным колонкам с помощью методов динамического списка УстановитьОграниченияИспользованияВГруппировке , УстановитьОграниченияИспользованияВПорядке и УстановитьОграниченияИспользованияВОтборе .

1. Если текст запроса динамического списка переопределяется в коде, то рекомендуется придерживаться правил, описанных ниже. Это нужно для того, чтобы:

  • разработчики, глядя на запрос в динамическом списке, могли однозначно понять, что он переопределяется в коде конфигурации;
  • не снижать производительность при открытии формы, установке текста запроса, основной таблицы и признака динамического считывания данных.

1.1. В редакторе запроса динамического списка следует устанавливать полноценный наиболее часто выполняемый текст запроса (запрос по умолчанию), чтобы при открытии формы, в большинстве случаев, не происходила программная установка текста запроса, снижающая производительность. Исключением является случай, когда текст запроса собирается программно.

ВЫБРАТЬ
НоменклатураПереопределяемый.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК НоменклатураПереопределяемый

Запрос, требующий обязательной замены в коде конфигурации, т.к. не содержит секции ИЗ:

ВЫБРАТЬ
ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК Ссылка

1.2. Псевдонимы таблиц должны заканчиваться постфиксом «Переопределяемый», чтобы визуально было заметно, что этот запрос может переопределяться в коде конфигурации.

ВЫБРАТЬ
Номенклатура Переопределяемый .Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура Переопределяемый

ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура

1.3. Установка текста запроса и основной таблицы при первичной инициализации динамического списка (в ПриСозданииНаСервере) должна выполняться до любого обращения к настройкам этого списка (в т.ч. параметрам), чтобы не снижалась производительность. В остальных случаях, если требуется изменить текст запроса и основную таблицу, между этими действиями не следует обращаться к настройкам (можно до них или после). При наличии БСП, следует использовать процедуру ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(). Это необходимо для повышения производительности и возможности автоматического сбора переопределяемых текстов запросов динамических списков.

СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ОсновнаяТаблица = "Справочник.Номенклатура";
СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список,
СвойстваСписка);
Список.Параметры.УстановитьЗначениеПараметра("Параметр1", 42);

Список.ТекстЗапроса = ТекстЗапроса;
Список.Параметры.УстановитьЗначениеПараметра("Параметр1", 42);
Список.ОсновнаяТаблица = ОсновнаяТаблица;

В этом случае снижается производительность из-за того, что при изменении текста запроса или основной таблицы сбрасывается источник доступных настроек и при обращении к Список.Параметры источник инициализируется заново.

2. Переопределяемые тексты запросов динамического списка можно размещать в любых модулях конфигурации, но следует следить за тем, чтобы текст запроса в динамическом списке был точно таким же, как и переопределяемый текст запроса по умолчанию (наиболее часто используемый).


Единственное, что понадобилось доработать мне - добавила "Многострочность" для заменяемого реквизита
Столкнулась с тем, что при загрузке однотипного описания текста он вставал в строку
заменила на многострочность, появились абзацы

Понадобиться может не всем, и при желании открыть и поставить галочку может любой:)

Удобная обработка, очень помогает при исправлении кучи реквизитов Не работает. Пишет ошибку при открытии.
Основная таблица динамического списка задана неверно. Не задан ни текст запроса, ни основная таблица динамического списка

Просмотры 9237

Загрузки 117

Рейтинг 6

Создание 01.02.12 17:29

Обновление 20.07.21 14:40

№ Публикации 115158

Конфигурация Конфигурации 1cv8

Операционная система Не имеет значения

Страна Россия

Вид учета Не имеет значения

Доступ к файлу Абонемент ($m)

Код открыт Да

См. также

Эмулятор скриптов в 1С:Документооборот Промо

В 1С:Документообороте можно использовать программный код 1С в пользовательском режиме (не в конфигураторе). Однако если в конфигураторе есть отладчик, то в пользовательском режиме протестировать скрипт достаточно сложно. Внешняя обработка Эмулятор скриптов позволяет вывести результаты скрипта и проверить работу алгоритма на разных документах.

13.12.2017 24822 106 0

Отключение создания задачи ознакомления для бизнес-процесса "Согласование" в 1С: Документооборот

В данной публикации я хочу поделиться расширением, с помощью которого можно отключить создание задачи ознакомления для бизнес-процесса "Согласование" в 1С: Документооборот.

1 стартмани

30.11.2019 19132 54 pavelpribytkin96 5

1С: Документооборот. Роли, использующие объекты адресации. Конфигурация остается типовой (используется расширение)

Расширение функционала документооборота. Реализована возможность использования ролей с объектами адресации. Конфигурация остается типовой (используется расширение)

5 стартмани

10.01.2019 18667 28 sulig 27

Год жизни с Яндекс.Почтой

Опишу свой опыт работы с Яндекс.Почтой из 1С:Документооборота. Ошибки, которые, видимо, редки и поэтому нигде не описаны, в основном побеждены и, может, мой опыт поможет кому-нибудь в его борьбе.

1 стартмани

05.01.2019 17193 5 soulner 0

Видеокурс-самоучитель "1С:Документооборот " для самостоятельного внедрения Промо

Самый детальный и самый полный самоучитель по программе 1С:Документооборот, в котором Вы научитесь правильно работать, настраивать, администрировать и внедрять конфигурацию 1С:Документооборот. Все уроки курса построены на последовательном заполнении пустой базы 1С:Документооборот КОРП в клиент-серверном варианте.

30.10.2018 32961 10 0

Печать pdf документа со штампом ЭЦП

Печать pdf файла, прикрепленного к внутреннему документу, подписанному ЭЦП, с установкой отметки о подписании.

1 стартмани

24.05.2018 25899 127 App0st0l 14

Ограничения запуска процессов в 1С:Документооборот

Расширение "Ограничение запуска процессов" позволяет для разных групп пользователей убрать не нужные типы процессов для запуска для разных видов документов.

03.04.2017 19841 34 0

Управление договорами в 1С:Документооборот

В 1С:Документооборот в релизах 2.1.7 и 2.1.8 концепция учета договоров продолжила свое развитие (появились стороны договора). Это повлияло и на бизнес-процессы (теперь вместо процесса Утверждение надо пользоваться процессом Подписание для договоров). Рассмотрим основные моменты, на которые надо обратить внимание при внедрении управления договорами в 1С:Документооборот.

24.01.2017 39221 vlush78 0

Перенос документов и процессов между двумя базами 1С:Документооборота Промо

Обработка по переносу документов поможет перенести документы и процессы из одной базы 1С:Документооборот в другую. Версии двух баз должны совпадать, а релизы конфигураций 1С:Документооборот могут быть различными. Главное, чтобы была синхронизирована НСИ.

09.06.2016 30581 8 10

Блокировка повторного запуска комплексного процесса в 1С: Документооборот 2

Острой проблемой при работе документооборота стал повторный запуск комплексного процесса. Пользователи несколько раз запускали один и тот же комплексный процесс по документу, не убедившись, что этот же процесс уже запущен. В результате наступил хаос, все возмущались и недоумевали, почему один и тот же документ приходил на согласование и исполнение несколько раз.

2 стартмани

04.10.2016 29076 96 zabaluev 25

Права доступа в 1С:Документооборот 2.1

В программе 1С:Документооборот ред 2.1 механизм системы прав доступа сильно изменился. С одной стороны, права доступа в данной версии стали проще и быстрее, с другой стороны - права по рабочим группам объектов теперь могут противоречить политикам доступа. Разберемся в данной статье как работает механизм прав доступа в 1с документообороте 2.1.

16.09.2016 88472 vlush78 0

Новое в 1С:Документооборот ред. 2.1

Фирма 1С не стоит на месте и продолжает радовать нас своими новыми версиями конфигурации 1С:Документооборот. В конце мая 2016 года вышла новая редакция 2.1, которая содержит как принципиально новые возможности, так и улучшение старых функций. В данной статье будут рассмотрены отличия конфигурации 1С:Документооборот редакции 2.1 по сравнению с редакцией 2.0.

15.06.2016 34277 vlush78 7

Нагрузочное тестирование 1С:Документооборот

Перед запуском 1С:Документооборот для средних и крупных внедрений крайне желательно провести нагрузочное тестирование, чтобы проверить корректность и скорость работы системы электронного документооборота в условиях максимальной нагрузки. В данной статье пойдет речь о том, как провести нагрузочное тестирование в 1С:Документооборот без использования 1С:КИП.

Читайте также: