У многих наверняка есть обработки, позволяющие выполнять запросы и обрабатывать их результаты произвольным образом. Для обычных форм их довольно много. У меня тоже есть очень хорошая и удобная обработка, которой я пользуюсь в УПП в обычном режиме, допиленная под себя. Но все чаще сталкиваюсь с тем, что приходится работать с базами с управляемыми формами. И тут надо подзаморочитсья - открывать базу в обычном режиме, а еще иногда и общие модули рассчитаны только на тонкого клиента, если в них спрятана подписка, то в обычном режиме справочник или документ просто не запишется.
Написал аналог своей обработки для управляемых форм, с простым функционалом, оставил только для себя только нужное. Обработка не хитрая, но удобная. Основные возможности:
- Загрузка табличных документов в табличную часть и временную таблицу запроса;
- Обработка результата запроса скриптом;
- Выполнение произвольного скрипта на сервере или на клиенте;
- Возможность использования нескольких скриптов, нескольких запросов.
- Встроенные обработки удаления объектов и поиска и замены значений по выборке из запроса;
- Возможность сохранения всех введенных данных, их открытие в других базах в этой же обработке;
- Возможность передачи в запрос двух таблиц значений (например бывает полезно когда в одной таблице данные для загрузки , а в другой отбор);
Пока не реализовано за ненадобностью:
- Вычисление полей при загрузке из табличного документа. Используются только примитивные типы (привык обрабатывать уже полученную таблицу значений, а все эти вычисления по каждой строчке сильно тормозят работу, и часть являются запросом в цикле)
Обычная схема работы при обработке данных (можно посмотреть приложенный скрипт загрузки физлиц):
Пишем запрос конструктором, выполняем - заполняется таблица на закладке "результат запроса" (ТЗ2), далее, в зависимости от того что требуется выбираем на закладке данных подменю "Скрипты".
Назначение скриптов:
- Изменение объекта - формирует скрипт обхода ТЗ2, с заполнением свойств объекта, с записью в режиме ОбменДанными.Загрузка или без него
- Передать в удаление - формирует скрипт, который заполняет таблицу удаления объектов, для последующего ее открытия по кнопке "Открыть удаление"
- Передать в замену значений - формирует скрипт, который заполняет таблицу замены значений, для последующего ее открытия по кнопке "Открыть замену значений"
Загрузка из табличного документа:
- Открываем документ на закладке "ТабДок", либо копируем из источника и вставляем в табличный документ содержимое источника. Первая строка должна содержать названия колонок;
- На закладке "Настройки" нажимаем кнопку "Заполнить таблицу настроек автоматически", по умолчанию всем колонкам назначается тип "Строка", который можно изменить вручную при необходимости;
- На закладке "Загрузка таблицы" нажимаем кнопку "Загрузить из табличного документа", заполняется таблица данных ТЗ1;
- На закладке "Обработка данных" нажимаем кнопку "Скрипты" - "Передача в запрос ТЗ1", формируется текст запроса временной таблицы;
- Конструктором запроса правим запрос так как нужно указываем соединения с таблицами базы данных;
После этого можно работать также как описано в пункте выше.
UPD 24.04.2017, версия 1.1
Исправлены ошибки - не сохранялась ТЗ2 в файл, не работала замена значений, в удаление добавлен контроль на повтор ссылок.
UPD 25.04.2017, версия 1.2
Исправлена ошибка - не сохранялся скрипт в файл на клиенте
UPD 27.04.2017, версия 1.3
Добавлена возможность использования нескольких скриптов и нескольких запросов
UPD 03.08.2017, версия 1.4
Исправлена ошибка сохранения ТЗ2 в файл, ошибка при удаления комментариев из текста скрипта, оптимизирована передача ссылок в удаление объектов.
UPD 26.01.2019, версия 1.5
Исправлены ошибки. Встроены некоторые функции и процедуры из БСП, добавлены функции работы с массивами. Добавлена возможность выполнять код с других закладок, аналог собственных процедур. Доработана справка. Выложено несколько примеров скриптов. Примеры скриптов
Скрипты (архив zip):
Загрузка физлиц из табличного документа (+использование второго скрипта - алгоритма),
Скрипт для показа размера папок с журналами регистрации на сервере, со списком всех баз и их путейЮ
Пример скрипта очистки движений документов в ERP,
Пример скрипта расчет среднего и остатков отпусков для ЗУП 3,
Тестирование работы COM connector на стороне сервера.