Проверить чужой запрос 1С до запуска на боевой базе
Запрос или обработку прислал подрядчик, написал ИИ, нашли на форуме. Запускать на рабочей базе страшно, копию поднимать долго. Разбираем, что можно проверить заранее, что проверяется только запуском и как запустить без риска для данных.
Задача
Код 1С пришел со стороны. Запрос мог быть написан под другую конфигурацию, скрипт мог что-то записать в базу, а тяжелый запрос по регистру без отбора может занять базу надолго. Проверить хочется на настоящих данных, потому что на пустой тестовой базе ошибок не видно.
Как решают обычно
| Способ | Плюс | Минус |
|---|---|---|
| Копия базы | безопасно | часы на выгрузку и загрузку, копия быстро устаревает |
| Тестовая база | всегда под рукой | данные старые или выдуманные, ошибки на реальных данных не видны |
| Консоль запросов на боевой базе | реальные данные | нет защиты от тяжелого запроса и от записи в обработке |
| Ревью кода глазами | бесплатно | зависит от внимательности и знания конфигурации |
Что можно проверить через Жёлтый мост
Проверка идет в три шага, и каждый ловит свое.
Первый шаг: валидатор до отправки в базу. Мост проверяет текст модуля или скрипта BSL Language Server и возвращает замечания по строкам. Он ловит синтаксические ошибки, пустые блоки, типовые нарушения стандартов 1С. Логику он не проверяет: запись объектов в цикле или неверный регистр валидатор пропустит, это видно только на данных.
Второй шаг: запрос выполняется только на чтение. Язык запросов 1С данные не меняет. Ошибка в имени поля или таблицы приходит с текстом от 1С и меткой в месте ошибки, по ней запрос правится за минуту. Для больших регистров ставьте период, отбор и ПЕРВЫЕ N.
Третий шаг: скрипт с записью идет пробным прогоном. Скрипт выполняется в транзакции, результат виден, после чего транзакция откатывается и данные не меняются. На ключе может действовать режим "только пробный прогон": тогда даже скрипт, отправленный на настоящую запись, будет откачен. Режим включает администратор сервиса по просьбе владельца ключа.
Как сделать
1. Выпустите для проверки отдельный ключ базы и попросите поддержку включить на нем режим "только пробный прогон".
2. Отправьте текст модуля на проверку валидатором и исправьте замечания уровня Error и Warning.
3. Запрос выполните через мост с ограничением строк и посмотрите результат.
4. Скрипт с записью запустите пробным прогоном и сверьте, что именно он изменил бы.
5. Когда результат устраивает, запустите код в базе обычным способом или на ключе без ограничения пробного прогона.
Что учесть
- Откат транзакции возвращает данные базы. Скрипты через мост по умолчанию выполняются в безопасном режиме платформы, поэтому работа с файлами, сетью и внешними компонентами в них закрыта.
- Во время пробного прогона транзакция держит блокировки на изменяемых данных: тяжелый скрипт лучше запускать вне рабочего времени.
- Клиентский код форм через мост не выполнить: он требует интерфейса. Проверяются запросы и серверный код.
- Валидатор проверяет текст, а не смысл. Нулевое число замечаний не означает, что код делает то, что нужно.
Не уверены, как подключается именно ваша база - в 1С:Фреш, в аренде, своя серверная или файловая? Выберите свой случай на главной: покажем, что мешает и что меняет мост.