Полчаса на одну кавычку
Нужно запустить базу в пакетном режиме. Вы собираете строку, запускаете — окно моргает и закрывается. Ни ошибки, ни лога. Запускаете еще раз, уже в консоли — и видите «Пользователь ИБ не идентифицирован», хотя пользователь существует и пароля у него нет.
Дело было в кавычках. Имя пользователя содержит пробел, и 1С требует кавычки внутри значения ключа, а не вокруг него:
/NАбрамовГС (директор) — «Пользователь ИБ не идентифицирован» /N"АбрамовГС (директор)" — сеанс открывается
Причем это же сообщение платформа выдает на любое имя, включая пустое. И куда вы пойдете смотреть после такого сообщения?
В список пользователей. А проблема была в пунктуации.
Ключей запуска несколько десятков, наизусть их никто не помнит, а цена ошибки — потерянные полчаса на строке из восьми слов.
Что делает обработка
Собирает строку запуска по выбранным параметрам и проверяет ее до того, как вы нажмете Enter.
Открывается как обычная внешняя обработка. Сверху параметры: путь к каталогу bin, режим, клиент, способ подключения к базе, пользователь и пароль. Ниже таблица ключей, отфильтрованная по выбранному режиму. Внизу готовая строка и список замечаний.
Справочник на 22 ключа: каждый прогнали на живой базе
В обработке 22 ключа командной строки. Это не выписка из документации: каждый ключ мы запускали на живой базе, и в справочник он попал только после того, как сделал заявленное.
Одно исключение. /UpdateDBCfg мы гоняли на пустой одноразовой базе, где реорганизовывать было нечего: платформа ключ приняла и отработала без ошибок, но саму реорганизацию данных этот прогон не показал.
Ключи, которых подтвердить не удалось, в справочник не вошли. Например, /DumpResult: две попытки не дали файла результата, и вместо догадки о синтаксисе мы его просто выбросили. Так же поступили с ключами, проверка которых означала бы необратимые изменения в чужой базе.
По каждому ключу в таблице видно, в каких режимах он допустим, нужно ли ему значение и что он делает.
Десять проверок, которые ловят молчаливые ошибки
Часть проверок очевидна: не заполнен каталог bin, выбрана файловая база без пути, выбрана серверная база без адреса сервера, она же без имени базы, задан пароль без пользователя, не заполнено значение у ключа, который его требует.
Интереснее остальные.
В каталоге нет нужного exe. Путь указан, но файла выбранного клиента там нет — опечатка в версии платформы видна сразу, а не после запуска.
Значение уже содержит кавычки. Обработка сама оборачивает значения кавычками. Если вы скопировали путь вместе с кавычками, получится двойная пара, и строка перестанет работать.
Одновременно отмечены выгрузка и загрузка конфигурации. Здесь платформа не выдает ошибку. Выполняется только одно из двух, и по коду возврата этого не видно. Проверяли на отдельной базе для всех трех пар — DumpCfg и LoadCfg, DumpConfigToFiles и LoadConfigFromFiles, DumpIB и RestoreIB.
Ключ не соответствует выбранному клиенту. /RunModeOrdinaryApplication включает режим обычного приложения: по нашим прогонам, окно открывается в классическом виде, с текстовым меню, и это поведение толстого клиента.
Толстый и тонкий клиент — разные вещи
1cv8.exe запускает толстый клиент, 1cv8c.exe — тонкий. Обработка дает выбрать и подписывает, какой из них какой.
Это не формальность. Мы напоролись на это сами: ТекущаяДатаСеанса() в толстом клиенте доступна, а в тонком ее нет, и весь модуль перестает компилироваться. Одной такой функции хватает, чтобы код, проверенный через 1cv8.exe, у пользователя тонкого клиента не заработал вовсе. Сколько их всего, мы не считали. Если вы собираете строку, чтобы прогнать свой код, выбор клиента здесь решает, соберется ли он вообще.
Результат: буфер или bat-файл
Две кнопки: скопировать и сохранить. Файл пишется в кодировке OEM, иначе кириллица в путях ломается при запуске из cmd.
Чего обработка не делает
- Не запускает 1С сама. Это осознанное решение: обработка готовит строку, запускает человек. Кнопки «Выполнить» здесь нет и не будет.
- Не лезет в реестр и не ищет установленные платформы по диску. Путь к каталогу bin вы указываете сами.
- Не работает со списком баз
ibases.v8i. - Нет режима создания базы. Ключ
CREATEINFOBASEв справочнике описан, но собрать в форме строку создания базы нельзя. - Нет именованных наборов. Собранную строку нельзя сохранить под именем и достать позже.
- Нет ключей тестирования и отладки (
TESTMANAGER,TESTCLIENTи прочих): их не на чем было подтвердить запуском. - Двухпараметрические ключи поддержаны частично.
/LoadExternalDataProcessorOrReportFromFilesпринимает два параметра, а таблица хранит одно значение на ключ. - Нет встроенной справки. Ее роль играет колонка «Описание» в таблице ключей.
- Не заменяет документацию. По каждому ключу дано короткое описание, а не глава руководства.
Установка и требования
Обычная внешняя обработка: «Файл — Открыть» или через «Дополнительные отчеты и обработки», если у вас БСП. Механизмов БСП она не использует.
Конфигурацию не меняет и в базу ничего не пишет. Чтобы открыть обработку, нужно право на интерактивное открытие внешних обработок — как и для любой другой. От прикладного решения не зависит: в коде нет ни одного обращения к объектам конфигурации. Запускали на Бухгалтерии предприятия 3.0.206.19 и Управлении торговлей 11.5.22.149.
Один файл на обе платформы
Файл один: собран под 8.3.27.2214, открывается и на 8.5.1.1343. Все четыре сочетания — обе платформы, толстый и тонкий клиент — мы прошли живым запуском.
Минимальная версия платформы — 8.3.27, на более ранних мы обработку не запускали.
Вступайте в нашу телеграмм-группу Инфостарт