Запросник на управляемых формах
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Итак, что сделано:
- Дерево запросов
- Вывод результата в таблицу и дерево
- Параметры с установкой момента времени, границы, списков, таблицы значений
- Просмотр и отладка временных таблиц
- Версионирование запросов - при каждом выполнении оно запоминается, что там было
- Сохранение в файлы и всё такое
- Обход запроса с помощью настраиваемой выборки
- Конструктор в тонком клиенте при использовании 8.3.5
- Выполнение алгоритмов над результатом запроса
- Возможность отлаживать запрос, формируемый в консоли системы компоновки данных с диска ИТС
- Получение плана запроса, сформированного СУБД
- Получение текста запроса СУБД
- Отладка запроса в модуле
На последнем пункте остановлюсь подробнее, так как суть работы его поменялась.
В далёкие и прекрасные времена, когда использовались ОФ, мы могли с чистой совестью открывать любые формы из отладчика, вызывать всё это модально и вообще играться как дети.
Эта прекрасная возможность и использовалась Запросником - пишем в модуле объекта функцию с открытием формы и установкой запроса и всё работает.
Суровая реальность УФ заставила поменять подход.
Мы теперь не открываем форму обработки с передачей запроса, но мы точно также специальной строкой в отладчике делаем "дамп" запроса со всеми параметрами и временными таблицами. "дамп" сохраняется в недрах сервера и ждёт, пока его кто-нибудь подберёт.
Подбирается он нажатием одной кнопки "Загрузить дамп" - всё, что завалялось из сохранённого для текущей конфигурации тут же подгружается в деревья запросов со всеми потрохами.
Таким образом, отладка происходитв 2 этапа - вычислить выражение в отладчике вида ВнешниеОбработки.Создать(путь,Ложь).Дамп(Запрос), после чего, можно отпустить исполнение кода дальше и нажать кнопку в обработке (обычный режим), или исполнение кода не отпускать и запустить обработку во втором сеансе (модальный режим).
Строка для вычисления выражения в отладчике доступна в обработке в окне "Отладка запроса в модуле", она генерируется с учетом серверного-файлового режима, в случае серверного файл передаётся на сервер во временную папку.
Проверено на клиент-серверном и файловом вариантах, платформа 8.2, 8.3
// update 2.0.3 08.08.2014
- Добавлена отладка запросов, генерируемых стандартной консолью СКД с ИТС
Решил не присобачивать сюда еще и консоль СКД, т.к. это всё-таки другой инструмент, но я сделал интеграцию между ними.
Как это работает: в Запроснике справа сверху есть подменю с командой "Получить запрос из схемы компоновки", после нажатия вам будет предложено указать, какое из открытых сейчас окон - консоль СКД. При выборе окна запросник выбирает из него схему, настройки, генерирует макет и добавляет получившийся запрос в дерево запросов со всеми параметрами.
// update 2.0.4 08.08.2014
- Добавлена совместимость с платформой 8.2
// update 2.0.5 08.08.2014
- Исправлена ошибка открытия списка версий запросов на платформе 8.3 и ошибка открытия конструктора запросов на 8.3.5
- Добавлена возможность перетаскивать мышкой структуру запроса и параметры в текст запроса при выполении алгоритма
- Добавлено отображение версии запросника в главном окне
// update 2.0.6 16.08.2014
- Исправлена ошибка при выполнении запроса второй раз с установленным флажком "Показывать служебные колонки результата"
- Исправлена ошибка при выполнении запросов, содержащих временные таблицы, когда первая попытка выполнения закончилась ошибкой из-за
неверного синтаксиса запроса
- Произведен рефакторинг участка работы с временными таблицами. Улучшена производительность в операциях сохранения значений ВТ
для последующего отображения.
- Исправлена ошибка сохранения дампа запроса, когда сразу за именем ВТ следовал символ ";"
// update 2.0.7 19.08.2014
Улучшения производительности:
- Несколько улучшена производительность вывода результатов запроса, содержащих большое количество строк
- Уменьшены задержки при навигации по дереву запросов, когда на форме содержиться очень большая таблица результатов запроса
- Произведен рефакторинг процесса работы с алгоритмами запроса. Результат теперь не переходит в другую форму, что
значительно уменьшает время открытия формы работы с алгоритмами
// update 2.0.8 28.08.2014
- Исправлена ошибка в формируемой в файловой версии строки сохранения дампа - там не было кавычек к пути файла
- Добавлена возможность просматривать тексты запроса СУБД и план запроса СУБД
// update 2.0.9 03.09.2014
- Исправлена ошибка при формировании пакетного запроса в случае, когда включен режим получения плана запроса
- Добавлена совместимость с 8.2.16 и ниже, предположительно до 8.2.14
- Добавлена возможность формировать текст запроса для модуля
- Убрано сообщение об ошибке при открытии конструктора запросов в толстом клиенте
- Произведена некоторая оптимизация для получения плана запроса в клиент-серверном варианте
// update 2.0.10 13.09.2014
- Исправлены ошибки с параметрами дата, которые не содержали время
- Исправлена ошибка при работе с версиями запроса, после работы с которыми терялись параметр "список значений"
- Исправлена ошибка, из-за которой под платформой 8.2 не работало получение запроса из схемы СКД
- Добавлена возможность получать тексты запросов СУБД с представлениями полей 1С.
- Убраны ограничения интерактивного редактирования таблиц результата запроса
В
//update 2.0.11 18.09.2014
- Исправлен печальный баг, который загонял отладчик в бесконечный цикл при сохранении дампа запроса с >4 таблицами
- Исправлены ошибки, из-за которых некоторые ВТ не сохранялись в дамп
- Исправлена ошибка с параметром даты в составе границы
- Интерфейс в такси переведен на компактный режим
- Исправлена ошибка, когда ВТ могли задваиваться в форме, если вызывать их несколько раз с разным синтаксисом
//update 2.0.12 03.10.2014
- Улучшен парсинг запросов при получении дампа - временная таблица теперь корректно обнаруживается внутри вложенного запроса
//update 2.0.13 19.12.2014
- Для возможности нормальной отладки запросов ЗУП добавлено замещение значений NULL на неопределено во временных таблицах
- Исправлена ошибка при выполнении запроса, в котором ВТ используется несколько раз и написана в разном регистре
- Исправлена ситуация, когда иногда могли не отображаться отрицательные числа из-за бага платформы
//update 2.0.14 24.02.2015
- Реализована поддержка отладки сохраненных дампов временных таблиц, у которых есть колонки со значением "Тип"
(используется в ERP 2.0 в запросах на отражение документов в рег. учете)
- Изменен приоритет конструкторов запроса - если доступен конструктор для толстого клиента, то вызывается он.
//update 2.0.15 02.03.2015
- Исправлена ошибка в заполнении колонок таблицы значений-параметра, когда при отмене редактирования выполнялась проверка на тип колонки
- Значения полей типа "Тип" и "Момент времени" в результате запроса теперь отображают представление данных, а не просто строки "Тип" и "Момент времени"
- Реализована интерактивная работа с полями типа "Хранилище значений", "Результат запроса", "Двоичные данные"
//update 2.0.16 12.05.2015
- Добавлено выделение места в тексте запроса, в котором конструктор видит синтаксическую ошибку
- Добавлено предупреждение при попытке выхода из обработки с несохраненными изменениями
- Переработан процесс выбора типов в параметрах запроса и в списке значений с целью повышения удобства
- Исправлена ошибка при использовании команды "Удалить неиспользуемые параметры"
- Добавлена возможность удалять сохраненные версии запроса
//update 2.0.17 14.05.2015
- Добавлен новый выбор типа при настройке колонок таблицы значений
- Добавлен новый выбор типа при работе стандартной команды "Подбор" списка значений
- Исправлены некоторые ошибки с отсутствием модифицированности формы
//update 2.0.18 21.06.2016
- Доработки алгоритма формирования текста запроса (автоподстановка параметров)
- Исправлена ошибка в хоткее Ctrl+S
//update 2.0.19 07.07.2016
- Убраны хвосты раскраски кода из формы выполнения алгоритмов
//update 2.0.20 26.12.2016
- Реализована отладка промежуточных запросов в пакете, не являющихся временными таблицами (через закладку работы с ВТ)
- Убрана ошибка, когда при создании нового файла не очищалось старое имя файла запросов
В
//update 2.0.21 05.10.2017
- Устранена ошибка, связанная с уничтожением ВТ
- Исправлена ошибка, связанная с влиянием закомментированных участков запроса на логику исполнения запроса
Вступайте в нашу телеграмм-группу Инфостарт
См. также
Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)
Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.
50000 руб.
10.09.2026 13766 124 0
Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.
24900 руб.
20.08.2024 83369 432 171
Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)
Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.
16500 руб.
02.09.2020 285904 1608 423
Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Разработчик Аналитик Руководитель проекта 1С 8.3 Платные (руб)
Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.
14000 руб.
17.04.2026 16904 63 62
Пакетная печать Печатные формы Инструментарий разработчика Разработчик 1С:Предприятие 8 Платные (руб)
Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26
22570 руб.
06.10.2023 44268 122 54
Инструментарий разработчика Нейросети Платные (руб)
Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.
15250 руб.
25.08.2025 77055 147 41
Разработка Инструментарий разработчика Разработчик Руководитель проекта 1С 8.3 Платные (руб)
Pilot 1C превращает задачу, поставленную обычными словами, в техническое задание, код на встроенном языке и сценарии проверки. Прежде чем что-то предложить, он сверяется с устройством вашей конфигурации через граф Analyzer 1C: существует ли объект, из чего он состоит, кто его вызывает, какие роли дают права. Чего найти не удалось – спрашивает, а не выдумывает. Готовый код проходит более полутора сотен проверок по справочнику языка и стандартам разработки, который приезжает вместе с продуктом. Модель – ваша: любой сервер, совместимый с программным интерфейсом OpenAI, в том числе локальный. Правки в конфигурацию Pilot не вносит – их применяет разработчик.
18300 руб.
11.09.2026 3792 5 0
Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)
Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.
17000 руб.
10.11.2023 28794 103 46
Обработка понравилась) минималистично и функционально.
Написал небольшую обработку, демонстрирующую удобство работы через дамп.
На странице "Временные таблицы" при попытке нажать на кнопку "Отладить" возникает ошибка
{Форма.ФормаУпр.Форма(1811)}: Значение не является значением объектного типа (ПолучитьЭлементы)
Для Каждого Поддерево Из ТекСтрока.ПолучитьЭлементы() Цикл
{Форма.ФормаУпр.Форма(612)}: Ошибка при вызове метода контекста (ИзменитьРеквизиты)
ИзменитьРеквизиты(,МассивУдаляемыхКолонок);
по причине:
Недопустимый путь к реквизиту. Путь: "РезультатТаблицаИтогУровень"
Обработку пока не качал, немного подожду. Но хотел бы озвучить баг, который только сегодня случайно обнаружил в запроснике на ОФ. При отладке запроса, в запрос был передан параметр с 4 знаками после запятой, а запросник его принял только с 3. Все дело было в ТипЗначения для колонки параметры. Предусмотрите, пожалуйста, такие случаи.
Вот с отладкой таких запросов я долго мучился в консоли пока не допилил одну из стандартных добавив возможность исполнять некий код перед запуском запроса. Допил довольно примитивный но перегрузкой промежуточных таблиц через файл мне удалось подтягивать в консоль для отладки произвольные данные.
Не хочу заморачивать своим решением - оно написано было на коленке и далеко не идеальное, но предлагаю автору подумать над повышением функциональности разработки в этом направлении.
Чтобы был понятен принцип вешаю скрин со своей консоли.
Все работало нормально до сегодняшнего дня, а а теперь ругается на последнюю строку процедуры
ЗначениеВРеквизитФормы(Дерево,"ДеревоЗапросов");
по причине:
Недопустимое значение параметра (параметр номер '2')
Строку я закомментировал и работаю дальше, но как-то не комильфо.
"В итиповых не работает":
1. Типовые конфы не имеют включенного флага по отображению обычных форм.
"Зачем мне консоль на управляемых формах":
2. Мобильные инструменты не позволяют вызывать выполнение кода на сервере. Это значит, что выполнение алгоритмов над результатом запросов ограничено, т.к. при записи могут быть обращения к общим модулям и подписки, вызывающие передачу мутабельных значений - это просто заколебавшее меня явление, которое постоянно возникает в клиент-серверных базах на УФ при попытке что-то серьёзное делать алгоритмами из клиента. Алгоритм же, выполняющийся в консоли для управляемых форм будет работать без всех этих проблем.
3. Насколько я понимаю, "Отложенная отладка" там тоже недоступна при мобильном варианте. Мне принципиально важно иметь возможность в любой конфигурации, которая мне в работе встретится, моментально вызвать отладку запроса, вызовом одной строки из отладчика и без вмешательств в конфигурацию. Т.к. уф позволяют внешним обработкам как угодно лазить на сервер, у меня есть возможность использовать такую отладку в любых условиях - и в файловом, и в серверном на разных машинах, и проблемы начинаются только тогда, когда несколько серверов в кластере или когда ограничен доступ к файловой системе.
Почему не подходят немобильные ИР:
Мне часто приходится анализировать базы, которые я не могу менять. Я подключаюсь, в базе есть проблема, мне нужно найти и исправить. Необходим именно мобильный инструмент.
Для тех, кто работает с известным списком баз, вероятно, ИР просто незаменимая вещь.
"Типовые конфы не имеют включенного флага по отображению обычных форм"
Ну тут вроде бы давно уже описано, как запустить обычное приложение для любой конфигурации.
Действительно типовые конфигурации (особенно с БСП) содержат ошибки (передачи мутабельных значений и подключения подписок), обычно мешающие записи объектов на клиенте. Я пытался доказать разработчикам БСП, что их следует исправлять, но пока все ограничилось публикацией рекомендаций в ИТС о поддержке толстого клиента. Для обхода проблемы с записью на клиенте во всех обработках я сделал опцию "Запись на сервере", доступную пока только в варианте подсистемы.
Интерактивная отладка (вызов инструмента из отладчика) же на сервере в принципе невозможна прикладными средствами. Тут встройка подсистемы дает огромное удобство в виде отложенной отладки. Отложенную отладку (сохранение объекта на сервере) в принципе конечно можно делать и в файл, но достаточно удобного и универсального способа с файлом я пока не придумал. Возможно у тебя есть идеи на этот счет? Выполнение записи объекта в коде алгоритма действительно сейчас не обустроено для поддержки опции "Запись на сервере". Это я попробую исправить. Но если придется вызывать какой то прикладной метод, внутри которого будет такая ошибка, то тут конечно только перенос выполнения на сервер поможет.
В итоге записал задачи, конечно лишь частично решающие обозначенные проблемы
1. В подсистеме в произвольном алгоритме добавить поддержку перенаправления записи на сервер.
2. В мобильных инструментах реализовать отложенную отладку.
Собственно, моя идея на счет отложенной отладки на сервере через файл как раз и воплощена в текущей обработке. Причем её можно и не отложенно вызывать - без проблем получается держать на брекпоинте строку с запросом и отлаживать его в другом сеансе.
Принцип работы - в каталоге временных файлов сервера создаются файлы, содержащие в себе структуру запроса и сохранённые значения ВТ, которые создаются не в самом запросе, а значит, потребуются для его выполнения.
Для отделения предметов отладки разных конфигураций в файл также пишется строка соединения ИБ.
Так как внешняя обработка может залезть на сервер только в УФ, этот способ невозможен для обычного приложения.
Работает и под Linux, и под Windows, проблемы есть только при запрете в кластере работы с файловой подсистемой и при разнесенных физических серверах в рамках 1 кластера (не факт, что файл найдётся при следующем вызове, поэтому не всегда будет работать).
Но у файла есть и преимущество перед объектом базы - он пишется вне транзакций. Это значит, что откат транзакции в запросе не убьёт сохранённые данные для отладки. Допускаю, что у вас для этого запись объекта отладки производится в фоновом задании на сервере?...
Конечно. Поэтому с транзакциями проблем нет. Считаю, что у объектов в базе бесспорно больше преимуществ (при условии что подсистема уже встроена =).
Я все же попробую сделать отложенную отладку в мобильных ИР.
В версии 3.33.1 портативных инструментов разработчика реализован серверный модуль для конфигураций с БСП и соответственно поддержка опции "Запись на сервере" для всех модифицирующих данные инструментов.
2. Если в запросе есть временная таблица, то план запроса не формируется, возникает ошибка;
3. Нет кнопки "Скопировать текст для модуля...".
Можно узнать когда будут исправлены эти ошибки? И будет ли у нас возможность получить исправленную обработку бесплатно?
п. 1 не мешает открытию конструктора, просто сообщение о том, что немодально открыть не получилось, уберу если напрягает так.
п. 2 ошибка с планом запроса уже исправлена в грядущей версии 2.0.9
п. 3 думал делать или нет, раз кому-то надо то сделаю, тоже будет в следующей версии.
Повторное скачивание, если не ошибаюсь, бесплатно в течение суток. Могу на мыло выслать.
но мы обнаружили еще пару ошибок(((:
1. В параметрах запроса если указать значение параметра список значений, то при добавлении в этот список значений, он не определяет тип значения;
2. Не критичное, так для справки)), при выполнении "удалить символы модуля" в тексте запроса, если имеются строчные значения, т.е. имеются кавычки, то он их не отрабатывает, а если строчное значение указано у последнего условия, то он удаляет все кавычки с последней.
{Обработка.Запросник2_0.МодульОбъекта(197,64)}: Переменная не определена (ИспользуемоеИмяФайла)
ОбработкаВОЛЕ = мТекущееПодключение.ВнешниеОбработки.Создать(<<?>>ИспользуемоеИмяФайла); (Проверка: Сервер)
Ошибка вот такая при получении плана запроса:
{Форма.ФормаУпр.Форма(2480)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
СтруктураБД = ПолучитьИзВременногоХранилища(АдресХранилища);
по причине:
Недопустимое значение параметра (параметр номер '1')
Вот что там находится:
АдресХранилища "" Строка
Может стоит добавить проверку на "ЭтоВременноеХранилище"?
Проверка синтаксиса у меня проходит нормально в режиме обычного приложения, не понимаю, откуда у тебя эта ошибка.
Кнопочки открытия/скрытия и вопрос о закрытии добавлю в будущих версиях, спасибо за комментарий
Ну конфигурации то разные. У моей уже ставшей самопиской вот такая беда.
Я себе то поправил. Но поделиться бы хотелось.
Я уже себе добавил :)
И еще:
Я там еще поправил "СЗ" в параметрах и еще что-то. Так что кидаю ЛС.
Код комментировал. Но изменения в элементах формы. Надеюсь как-то увидишь где менял :)
з.ы.: жди ЛС :)
Возможно, добавление параметра /ClearCache в параметры запуска сможет помочь.
Я не могу воспроизвести данную ошибку ни на одной платформе.
пока из неудобств наткнулся только на 1 момент
если условие длинное, например:
НЕ ПриходныйКассовыйОрдер.Ссылка В
(ВЫБРАТЬ
ПриходныйКассовыйОрдерДополнительныеРеквизиты.Ссылка
ИЗ
Документ.ПриходныйКассовыйОрдер.ДополнительныеРеквизиты КАК ПриходныйКассовыйОрдерДополнительныеРеквизиты
ГДЕ
ПриходныйКассовыйОрдерДополнительныеРеквизиты.Ссылка.Дата >= &ДатаНач
И ПриходныйКассовыйОрдерДополнительныеРеквизиты.Ссылка.Дата <= &ДатаКон
И ПриходныйКассовыйОрдерДополнительныеРеквизиты.Свойство = &ОтборСвойство) Показатьпри первом заполнении все хорошо, но если потом требуется изменить что угодно в этом условии, все отображается в одну строку с символом перевода строки и изменить условие можно убрав его и кучу пробелов
Если на заполнено имя колонки и перешел на тип то ругается что не заполнено и не дает отменить ввод строки.
Добавил проверку на отмену редактирования.
Если Не ОтменаРедактирования И (ПустаяСтрока(ТекДанные.ИмяКолонки) ИЛИ ТекДанные.ТипЗначения = Новый ОписаниеТипов) Тогда//В общем модуле "отладка"
Функция СоздатьДампЗапроса(Запрос) Экспорт
Попытка
ВнешниеОбработки.Создать("E:\ITS\is\Запросник2_0.epf",Ложь).Дамп(Запрос);
Возврат Истина;
Исключение
Возврат ОписаниеОшибки();
КонецПопытки;
КонецФункции
//В табло на точке останова
отладка.СоздатьДампЗапроса(Запрос) ПоказатьЯдро 8.3.5.1482.
Интерфейс Такси.
В разделе "Совместимость" для "Режим использования синхронных вызовов расширений и внешних компонент" установлено "Не использовать".
При выполнении запроса получаю ошибку:
Файл = Новый Файл(КаталогВременныхФайлов()+"ZaprTemp.Sel");
по причине:
Использование синхронных методов на клиенте запрещено!
Дело в том, что в этом режиме совместимости вместо КаталогВременныхФайлов() надо использовать НачатьПолучениеКаталогаВременныхФайлов(<ОписаниеОповещения>) - это написано в справке.
Только в этой форме функция КаталогВременныхФайлов() вызывается 7 раз.
Ну вообще по теме:
1. Переписывание вызовов компоненты работы с файлами на асинхронные затронет не только "ПолучитьВременныйКаталог..", а вообще всё, что связано с файлами.
2. Переписывание вызовов на асинхронные "в общем-то несложно" при нулевом стеке вызовов. Когда у тебя функция на глубине 3 стеков лежит, то добавление там асинхронности подразумевает переписывание вообще нафиг всего и добавление 100500 дополнительных параметров для формирование правильного контекста продолжения работы.
3. Асинхронные вызовы компонент добавились только в релизе платформы 8.3.5.13хх, т.е. совместимость с 8.2 или 8.3.4 или старыми 8.3.5 летит к чёрту - это уже невозможно реализовать в рамках одной формы, нужно либо разные формы для разных релизов, либо разные обработки.
4. Включение упомянутого режима в конфигурации имеет смысл при её ориентированности на Chrome. Да и даже там запрещать синхронные компонентные вызовы имеет смысл только для контроля и симуляции "режима веб-клиента" в тонком клиенте 1С, который сам по себе работает в окружении операционной системы, а не ограничен средой javascript в браузере, и его никто никогда не будет вынуждать использовать асинхронные вызовы.
Вывод: доработка поддержки подобного режима на данный момент нецелесообразна.
1. Если запрос в области редактирования запроса написан с ошибками, то при нажатии на кнопку "Конструктор" ничего не происходит (а очень хочется увидеть описание ошибки), а при нажатии на кнопку "Выполнить" выползает стандартное окошко о программной ошибке с предложением закрыть программу (такого тоже нельзя допускать - ошибка-то не в программе, а в запросе, и случайное закрытие программы может привести к большим потерям времени работы). А запросы бывают очень большие, и искать проблему глазами зачастую достаточно накладно.
Пример запроса с ошибкой:
Выбрать Номенклатура1.Ссылка
Из Справочник.Номенклатура КАК Номенклатура2. Работаю в запроснике, что-то делаю, потом нажимаю на кнопку "Закрыть". При этом обработка просто закрывается, не выдавая никаких предупреждений и вопросов. А очень хочется увидеть вопрос типа "Сохранить изменения?". При чём независимо от того, сохранял я раньше результаты своей работы в файл или нет. Иначе можно случайно потерять достаточно большой объём работы.
3. В запросе есть условие:
Справочник1.СтатусВерсии В(&СтатусВерсии)4. При выборе типа параметра (в окне редактирования параметров при нажатии на кнопку "СЗ" или при определении типа колонки при нажатии на кнопку "ТЗ") идет список возможных типов без указания принадлежности типа к ветке конфигурации (справочник, документ, перечисление, ПВХ, и т.д.). Это очень не удобно, и чем больше конфигурация, тем неудобство больше. Во-первых, не всегда понятно где я сейчас нахожусь (в больших конфигурациях длина списка справочников занимает несколько экранов, то-же самое относится и к спискам документов, спискам регистров и т.д.); а во-вторых, не редкость одинаковые названия для справочников, документов, регистров, перечислений (когда одно имя элемента метаданных встречается в разных ветках). Поэтому ветку конфигурации надо как-то обозначать (или выводить пиктограмку, или писать "Справочник.Номенклатура", "Перечисление.ВидПрихода", или то и другое вместе).
5. В списке редактирования параметров кнопка "Удалить неиспользуемые" ведёт себя непредсказуемым образом - удаляет параметры каким-то случайным образом.
6. У меня идёт длительная работа по разработке запроса. Запрос пишется не весь сразу, а пишется и отлаживается по частям (меняется текст запроса, меняется список и значения параметров). При этом каждое действие накапливается в истории. При этом собственно история становится совершенно бесполезной из-за её большого размера. Очень хочется её почистить (или всю целиком, или оставить из всей истории несколько пунктов, при чём не обязательно последних). Но такой возможности нет. А для удобства работы очень хочется.
Не по всем пунктам всё нормально.
2. По поводу сохранения.
2.1. Открываю запросник, при этом автоматически открывается файл со списком запросов. Делаю какие-то действия (меняю существующий запрос, создаю новый запрос или удаляю существующий - действия любые, не важно какие но приводящие к появлению признака модифицированности данных), выполняю. Закрываю обработку, она закрывается без вопросов. Открываю повторно - изменений нет. Выполнение запроса сбрасывает пометку модифицированности данных.
2.2. Открываю запросник, при этом автоматически открывается файл со списком запросов и историей выполнения. Удаляю некоторые пункты истории. Закрываю. Закрывается без вопросов, при повторном открытии все удалённые пункты истории на месте.
2.3. Действия в списке параметров (добавление, удаление, изменение значения) не приводят к установке признака модифицированности (поменял что-то в параметрах, нажал на закрытие - всё закрылось без вопросов).
4. По поводу выбора типов.
4.1. Для списка значений при нажатии на кнопку "Добавить" - нормально.
4.2. Для списка значений при нажатии на кнопку "Подобрать" ничего не изменилось (всё тот-же бесконечный список без отметки о принадлежности к ветке дерева метаданных).
4.3. Для таблицы значений при определении типа значения для колонки таблицы ничего не изменилось. Такой-же бесконечный список без отметки о принадлежности к ветке дерева метаданных.
6. В том варианте, как сейчас сделан сервис с историей, множественное выделение в таблице со списком истории сбивает с толку. Здесь надо делать выделение только одной строки.
И попутно попалась ещё одна проблема (вроде и не ошибка, но как-то и не правильно):
Работаю с запросом, сохраняю запрос в файл, для одного из реквизитов (участвует в параметрах) в конфигураторе меняю тип данных (изменяю составной тип данных - добавляю несколько справочников), открываю запрос и в параметрах прежний список справочников. Что-бы обновился тип этого параметра - надо удалить параметр (кнопкой Del) и нажать на кнопку "Из запроса".
(98) DJRelax, а как ты предлагаешь? Делать еще вкладки и на них хранить разные списки? Нафиг это не надо.
При создании нового списка он не затирает сохраненный файл с огромной базой запросов, можно его легко загрузить.
Кроме того, перед выполнением запроса выполняется принудительное сохранение во временный файл - на всякий случай (видно в команде "..." в файловом меню).
По поводу оставшихся проблем. Параметр - список значений (захожу через кнопку "СЗ"). Любые манипуляции со списком (добавить элемент в список, удалить из списка, изменить элемент) не устанавливают признак модифицированности формы (после нажатия на кнопку "Сохранить") и при закрытии формы теряются сделанные изменеия.
В параметрах идет отбор по списку владельцев (в запросе в разделе "ГДЕ" стоит "... Владелец В (&Владелец)"), владелец у справочника один. При определении списка элементов при нажатии на кнопку "Подбор" сначала мне предлагают выбрать тип (при этом я могу выбрать любой тип - в том числе и документ и перечисление; здесь обязательно надо фильтровать по типу и разрешать только те, которые доступны для данного реквизита), а потом после выбора типа с формы исчезает кнопка "Сохранить" и появляется "Выбрать тип". Зачем? Из списка действий в кнопке "Ещё" пункт "Сохранить" остаётся доступным.
По поводу (98) DJRelax: сейчас посмотрел, есть такая ошибка. Воспроизводится очень просто. Открываем запросник (при этом в него загружается ранее сохранённый файл с запросами - это важный пункт). Нажимаем на кнопку "Новый файл" (при этом в заголовке имя файла остаётся неизменным). Создаём новый запрос, нажимаем "Сохранить". Всё. Прежнего файла с запросами уже нет, вместо него файл с только что созданным запросом.
А про то что не затирает, я уже писал у меня затер. Вчера весь день пытался восстановить с помощью разных утилит по восстановлению файлов на жестких дисках, я же наверное это не от хорошей жизни делал. Все было просто, открыл обработку, в ней открыл файл с запросами(он правда от другой консоли), запросов не было видно(так как он от другой консоли), так как в обработке нет кнопки "Закрыть/Отсоединить" текущий файл, была нажата кнопка "Новый!!! файл"(я знаками выделил тут главное слово), но новый файл не был создан, а просто все что было в ранее выбранном файле стерлось и записаны данные из этой обработки.
Я ни коим случаем не ищу виноватых, я просто пишу для того что бы такая ситуация больше ни кому не испортила настроение.
Исправлять ли это, это сугубо ваше решение.
Консоль позволяет вытаскивать запросы с сервера со всеми параметрами и временными таблицами, полностью воссоздаёт весь контекст исполнения.
Можно держать конфигуратор на брейкпоинте и в отдельном сеансе предприятия подгружать запросы, которые в данный момент модуль формирует - запросы выполняются с учетом разных временных данных, записанных в транзакции и т.д.
Возможность отладки разработана через парсинг запросов в модуле, вычленение из них ВТ, параметров и текстов, сохранения всего этого в файлы, передачу между клиентами-серверами и доведение в удобном виде до разработчика, с учетом особенностей типовых (запросы с типом "тип значения", "рабочие" запросы со сплошными null и т.д.)
Это - ключевое отличие от других консолей.
{Форма.ФормаУпр.Форма(329)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
Выполнить(Имя83+СтрокаПараметров);
по причине:
{(1,1)}: Процедура или функция с указанным именем не определена (НачатьПолучениеКаталогаВременныхФайлов)
<<?>>НачатьПолучениеКаталогаВременныхФайлов(ОписанОп)
Все перечисленное относится к конструктору запросов.
Если приложение запущено в режиме тонкого клиента, то стандартный конструктор запросов для толстого, который есть в конфигураторе, недоступен. Используется "тонкий" конструктор, являющийся частью платформы.
Чтобы была возможность работать с более привычным конструктором, запускайте управляемое приложение в режиме толстого клиента, тогда автоматически будет выбираться именно он.
(114) stas1kbob, Какая платформа используется? У меня давно таких ошибок не было, но на нестабильных релизах 8.3.5 случалось.
АдресВХранилище = СохранитьДеревоЗапросовВФайлНаСервере();
по причине:
При работе формы произошла системная ошибка (нарушена синхронизация состояния формы на клиенте и сервере).: "Различаются значения счётчиков для данных форм: 6.1641 != 6.1378"
А текст запроса вот такой был:
ХозрасчетныйОстаткиИОбороты.Организация КАК Организация,
ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Справочник.Контрагенты) КАК Контрагент,
ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Справочник.ДоговорыКонтрагентов) КАК Договор,
ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
ХозрасчетныйОстаткиИОбороты.Подразделение КАК Подразделение,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
&началоПериода,
&КонецПериода,
Период,
,
Счет В (&СчетаСДокументомРасчетов),
&ВидыСубконтоКДД,
ВЫРАЗИТЬ(Субконто2 КАК Справочник.ДоговорыКонтрагентов).ВидДоговора В (&ВидыДоговоров)
ИЛИ ИСТИНА) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток > 0
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ХозрасчетныйДвиженияССубконто.СубконтоДт3 КАК СубконтоДт3
ИЗ
ВременнаяТаблица КАК ВременнаяТаблица
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
&началоПериода,
&КонецПериода,
СчетДт В (&СчетаСДокументомРасчетов)
И (СубконтоДт1, ВидСубконтоДт2) В
(ВЫБРАТЬ
ВременнаяТаблица.Контрагент,
ВременнаяТаблица.Договор
ИЗ
ВременнаяТаблица КАК ВременнаяТаблица),
,
) КАК ХозрасчетныйДвиженияССубконто
ПО (ХозрасчетныйДвиженияССубконто.СубконтоДт2 = ВременнаяТаблица.Договор
И ХозрасчетныйДвиженияССубконто.СубконтоДт1 = ВременнаяТаблица.Контрагент)
он ругается {Форма.ФормаУпр.Форма(617)}: Ошибка при вызове метода контекста (Выполнить): {(8, 2)}: Таблица не найдена "ВТВсеСотрудникиОрганизации"
<<?>>ВТВсеСотрудникиОрганизации КАК ВсеСотрудникиОрганизации
Визуально разница в том что менеджер временных таблиц этому запросу присваивается полученный ранее через многоэтажные вызовы функций
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
в других нормально отлаживаемых запросах менеджер временных таблиц создавался в этой же процедуре где и сама переменная Запрос.
К сожалению, такую ситуацию запросник не отслеживает - он захватывает в дамп все ВТ, которые используются в запросе, но в этом же запросе нигде не создаются.
А если даже будет их захватывать, то после первого исполнения он запомнит уже новые данные ВТ с этим именем и дальнейшие выполнения будут некорректными.
В общем тут поразмышлять надо, может в будущих версиях поправлю.
Скорее всего об этом уже писали не раз. Я сперва не мог понять в чем дело. Нажимаешь сохранить а открывается диалог выбора файла...
ДоговорыКонтрагентов.Ссылка В ИЕРАРХИИ (&Родитель)
При выборе параметра "Родитель" не дает выбрать группу
Постоянно сталкиваюсь с необходимостью писать небольшие обработки, собственно задолбался я с параметрами.
Для версии 2.0.17 сделал небольшую доработку:
В модуле фомы "ФормаУпр" в процедуре "ПолучитьТекстДляМодуля" (строка 2950) заменить строку
ТекстМодуля = ТекстМодуля + Символы.ПС + "Запрос.УстановитьПараметр(" + Строка1Кавычка + СокрЛП(СтрокаПараметров.ИмяПараметра) + Строка1Кавычка + ", ");"следующим кодом:
ТекстПеременной = СформироватьСтрокуПолученияСсылкиПоГУИД(СтрокаПараметров.ЗначениеПараметра);
ТекстМодуля = ТекстМодуля + Символы.ПС + "Запрос.УстановитьПараметр(" + Строка1Кавычка + СокрЛП(СтрокаПараметров.ИмяПараметра) + Строка1Кавычка + ", " + ТекстПеременной + ");"И добавить две функции:
&НаКлиенте
Функция СформироватьСтрокуПолученияСсылкиПоГУИД(СсылкаНаОбъект)
Если НЕ ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
Возврат "";
КонецЕсли;
Возврат СформироватьСтрокуПолученияСсылкиПоГУИД_НаСервере(СсылкаНаОбъект);
КонецФункции
&НаСервереБезКонтекста
Функция СформироватьСтрокуПолученияСсылкиПоГУИД_НаСервере(СсылкаНаОбъект)
ТекстПеременной = "";
Если ТипЗнч(СсылкаНаОбъект) = Тип("Строка") Тогда
ТекстПеременной = """" + СсылкаНаОбъект + """";
ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("Число") Тогда
ТекстПеременной = СсылкаНаОбъект;
ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("Дата") Тогда
ТекстПеременной = Формат(СсылкаНаОбъект, "ДФ=Дата(гггг,ММ,дд,ЧЧ,мм,сс)");
ИначеЕсли ТипЗнч(СсылкаНаОбъект) = Тип("Булево") Тогда
ТекстПеременной = Формат(СсылкаНаОбъект, "БЛ=Ложь; БИ=Истина");
ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект)) Тогда
ТекстПеременной = "Документы." + СсылкаНаОбъект.Метаданные().Имя + ".ПолучитьСсылку(Новый УникальныйИдентификатор(""" + СсылкаНаОбъект.УникальныйИдентификатор() + """))";
ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект)) Тогда
ТекстПеременной = "Справочники." + СсылкаНаОбъект.Метаданные().Имя + ".ПолучитьСсылку(Новый УникальныйИдентификатор(""" + СсылкаНаОбъект.УникальныйИдентификатор() + """))";
ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект)) Тогда
ТекстПеременной = "ПланыВидовХарактеристик." + СсылкаНаОбъект.Метаданные().Имя + ".ПолучитьСсылку(Новый УникальныйИдентификатор(""" + СсылкаНаОбъект.УникальныйИдентификатор() + """))";
ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект)) Тогда
пМетаданные = СсылкаНаОбъект.Метаданные();
ИмяЗначения = пМетаданные.ЗначенияПеречисления[Перечисления[пМетаданные.Имя].Индекс(СсылкаНаОбъект)].Имя;
ТекстПеременной = "Перечисления." + СсылкаНаОбъект.Метаданные().Имя + "." + ИмяЗначения;
КонецЕсли;
Возврат ТекстПеременной;
КонецФункции ПоказатьТеперь если выполнить команду: "Получить текст для модуля", автоматически заполнятся значения параметров, пример:
Запрос.УстановитьПараметр("Свойство_КонтактноеЛицо", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПолучитьСсылку(Новый УникальныйИдентификатор("8fd8f086-7e42-11e5-80be-2aa1143b964e")));
Запрос.УстановитьПараметр("Свойство_Контрагент", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПолучитьСсылку(Новый УникальныйИдентификатор("f0df63b1-8380-11e5-80be-2aa1143b964e")));
Запрос.УстановитьПараметр("Свойство_Перечисление", Перечисления.ВариантЛогинаПароляДляЛентыНовостей.БезЛогинаПароля);
Запрос.УстановитьПараметр("Строка", "22321");
Запрос.УстановитьПараметр("Дата", Дата(2013,11,20,23,59,59));
Запрос.УстановитьПараметр("Булево", Истина);ЗаполнитьВремТаблНаСервере(Элемент);
по причине:
При работе формы произошла системная ошибка (нарушена синхронизация состояния формы на клиенте и сервере).: "Различаются значения счётчиков для данных форм: 5.1361 != 5.1265"
при выборе временной таблицы, и в некоторых случаях исполнения дубликата запроса, который видимо выдает тот же результат и форму глючит.
В последнее время стал чаще ею пользоваться и нашел пару неприятных ошибок.
1. Падает выполнение запроса, если есть уничтожение ВТ.
2. Если закомментить запрос из п.1, то обработка все равно пытается его выполнить.
P.S. Алексей, ты всё равно молодец, я сам альтруизмом давно переболел, к сожалению.
ВЫБРАТЬ
НачислениеЗарплаты.Ссылка КАК Ссылка,
НачислениеЗарплаты.НачислениеЗарплатыВоеннослужащим КАК НачислениеЗарплатыВоеннослужащим,
НачислениеЗарплаты.Начисления.(
Ссылка КАК Ссылка,
НомерСтроки КАК НомерСтроки,
Сотрудник КАК Сотрудник,
Подразделение КАК Подразделение,
ДатаНачала КАК ДатаНачала,
ДатаОкончания КАК ДатаОкончания,
Начисление КАК Начисление,
и т.д.
В результате запроса ТЧ доступны как гиперссылки. Если открыть любую гиперссылку-ТЧ, то далее при открытии тех же табличных частей других документов из результата, будет открываться таблица открытая первой. Исправьте пожалуйста
В модуле формы "ФормаУпр" в процедуре исправить БЫЛО на СТАЛО
&НаСервере
Процедура ВывестиРезультат(мРезЗапроса)
Если СпособВыгрузки = 0 Тогда
РекФормы = "РезультатТаблица"
Иначе
РекФормы = "РезультатДерево";
КонецЕсли;
//Очистим колонки результата в форме
Если СпособВыгрузки = 0 Тогда
ЭтаФорма[РекФормы].Очистить();
Иначе
ЭтаФорма[РекФормы].ПолучитьЭлементы().Очистить();
КонецЕсли;
... ... ...
Если СпособВыгрузки = 0 Тогда
Если СпособВыборки = 0 Тогда
... ... ...
Для Каждого СтрокаРез иЗ ТЗРезультата Цикл
НоваяСтрока = РезультатТаблица.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,СтрокаРез);
Если ЕстьПроблемныеТипы Тогда
// ----- Б Ы Л О ------
//ТЗРасшифровка[ТЗРезультата.Индекс(СтрокаРез)].СлужебныйРек__ = НоваяСтрока.ПолучитьИдентификатор();
//+++++ С Т А Л О +++++
НоваяСтрока.СлужебныйРек__ = НоваяСтрока.ПолучитьИдентификатор();
ТЗРасшифровка[ТЗРезультата.Индекс(СтрокаРез)].СлужебныйРек__ = НоваяСтрока.СлужебныйРек__;
КонецЕсли;
КонецЦикла;
... ... ... ПоказатьЕсли Не Файл.Существует() Тогда Продолжить КонецЕсли;
по причине:
Использование синхронных методов на клиенте запрещено!
Поправьте, пожалуйста
Файл не прикрепляю - тогда, наверное, автору стартмани за скачивание не будет начисляться.
Автор, если интересно - напиши в ЛС, отправлю файл.
1. Исправлена проверка модифицированности перед закрытием управляемой формы. Выполнялась через задний проход, постоянно вываливала ошибку.
2. Текст запроса для модуля теперь формируется без лишних символов и сразу в том виде, который наиболее часто используется. Это, возможно, очень субъективный момент.
Функция формирования текстов вынесена в модуль объекта, чтобы уйти от дублирования кода в управляемой и в обычной форме.
3. В обычной и управляемой форме кнопка "Выполнить" теперь работает по Ctrl + Enter вместо F7. Так удобнее при печати слепым методом.
4. Если в запросе есть параметры, которые не добавлены в таблицу параметров консоли, то при выполнении запроса теперь не вылетает ошибка, а открывается таблица с автоматически заполненным или дополненным список параметров.
5. Исправлена ошибка, когда из таблицы параметров в консоли удаляем параметр вручную, а запрос его всё равно запоминает вместе с последним заданным значением.
6. Кнопка "Конструктор" теперь отзывается на сочетание клавиш Ctrl + E, а кнопка "Параметры" на Ctrl + F12. Ранее из сочетаний клавиш было только Ctrl + E для контруктора только в обычной форме.
7. Ещё какие-то мелочи для удобства использования и украшательства.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 295356
Создание 07.08.14 09:44
Обновление 05.10.17 13:55
Просмотры 91970
Загрузки 1902
Рейтинг
319
Комментарии 151
Код открыт Да
Рубрики Инструментарий разработчика
Кому Разработчик
Тип файла Внешняя обработка (ert,epf)
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)