tormozit / RDT1C

Подсистема "Инструменты разработчика" для платформы 1С 8
http://devtool1c.ucoz.ru
88 stars 8 forks source link

Запуск в пакетном режиме для обновления кэша модулей без открытия конфигуратора после этого действия #549

Closed antonsm2011 closed 9 months ago

antonsm2011 commented 9 months ago

Сейчас если запустить 1С с ключом "ОбновитьКэшМодулейИР", то после обновления кэша открывается конфигуратор. Прошу добавить вариант запуска без последующего запуска конфигуратора. Такой вариант запуска мне нужен, чтобы получить кэш для ИР Адаптера в отдельной спец.базе, а не в той, где Адаптер будет работать. изображение

Платформа: 8.3.23.1865 Режим БД: файловый Конфигурация. Название: Управление нашей фирмой, редакция 1.6 (1.6.26.185) Конфигурация. Основной режим запуска: Управляемое приложение Конфигурация. Вариант встроенного языка: Русский Конфигурация. Режим управления блокировкой данных: Управляемый Конфигурация. Режим совместимости: Версия8_3_16 Конфигурация. Режим использования синхронных вызовов: Использовать Конфигурация. Версия БСП: 301 Конфигурация. Использовать обычные формы в управляемом приложении: Нет Инструменты разработчика. Версия: Расширение 7.01.1e Инструменты разработчика. Инструмент: Прочее Инструменты разработчика. Перехват клавиатурного ввода: Да Инструменты разработчика. Объекты на сервере: Да Инструменты разработчика. Асинхронность запрещена: Нет Инструменты разработчика. Разрешены имитаторы: Да Клиент. Приложение: Управляемое приложение 64б Клиент. Проверка модальных вызовов: Нет Клиент. Язык интерфейса конфигурации: ru Клиент. Язык интерфейса системы: ru Клиент. Отладка разрешена: Нет Клиент. Постоянный кэш метаданных: Да Клиент. ОС: Майкрософт Windows 10 Клиент. ОС от имени администратора: Нет Клиент. ОС выполнение BAT: Да Клиент. ОС Текущая кодовая страница: 866

tormozit commented 9 months ago

Хочу подробнее разобраться в том, что ты хочешь сделать. Итак есть база1 и база2 с примерно одинаковыми конфигурациями. В базе1 ты запустил конфигуратор и разрешил в нем подключение адаптера к приложению ИР в той же базе1. Дальше адаптер предложил тебе заполнить кэш метаданных. Что по твоей задумке должно происходить дальше? Хотелось бы с той же детализацией.

antonsm2011 commented 9 months ago

Моя итоговая цель - не закрывать конфигуратор. Это неудобно по многим причинам.

Что по твоей задумке должно происходить дальше?

  1. адаптер выгружает конфигурацию и расширения (определенный список, а не все) из базы1, не выгоняя меня из конфигуратора.
  2. адаптер загружает конфигурацию и расширения в базу2.
  3. адаптер обновляет кэш метаданных в базе2.
  4. адаптер по кэшу базы2 обновляет кэш базы1.
  5. адаптер в конфигураторе базы1 информирует, что кэш обновлен. Все эти действия идут в фоне и не прерывают работу в конфигураторе.

По п.1. Для файловой базы получить конфигурацию без закрытия конфигуратора можно с помощью tool1cd. Я попробовал с помощью этой https://github.com/oscript-library/tool1cd/blob/master/bin/cTool_1CD.exe, т.к. ее проще можно скачать через хаб оскрипта. Есть еще https://github.com/e8tools/tool1cd. Для серверной базы я еще не пробовал, но теоретически без закрытия конфигуратора можно получить конфигурацию через автономный сервер . И даже вроде бы ее выгоднее получать в виде исходников, т.к. частичная выгрузка из базы1 и загрузка в базу2 в этом случае будут быстрее, если применять специальный служебный файл ConfigDumpInfo.xml (Инкрементальная выгрузка конфигурации в XML | 1С:Зазеркалье) Доп.ссылки по автономному серверу: Глава 7. Автономный сервер :: Руководство администратора :: 1С:Предприятие 8.3.23. Документация Автономный сервер. Часть 1 - новый вариант сервера Автономный сервер. Часть 2 - утилита управления Выгрузить расширения можно в режиме предприятия, это не требует блокировать конфигуратор даже в случае файловой базы.

tormozit commented 9 months ago

Как я понял ты планируешь сделать свою ветку от репозитория ИР адаптера и периодически подливать в нее основную ветку. В своей ветке ты планируешь сделать описанные доработки.

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

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

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

изображение

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

tormozit commented 9 months ago

По поводу исходного пожелания. Кажется разумным сначала тебе реализовать сложные части этого механизма. А внести столь небольшую правку в код ИР ты пока можешь и сам. Например назови новый параметр условно Обновить1КэшМодулейИР. Обкатай его. Думаю у тебя появятся и другие пожелания, которые ты сразу и реализуешь как опцию. Затем опишешь эту доработку ИР и я ее добавлю к себе.

tormozit commented 9 months ago

При разработке скрипта рекомендую использовать мой редактор https://fastcode.im/Store/8815

antonsm2011 commented 9 months ago

В итоге в качестве MVP я сделал одну большую команду, которая с помощью враннера и хардкода делает все (или почти все) из пяти пунктов выше. Попробую в таком виде поиспользовать некоторое время, чтобы стало понятнее, насколько это вообще нужно/удобно. После, по результатам использования дальше буду думать, как и что делать.

tormozit commented 8 months ago

Создал задачу https://www.hostedredmine.com/issues/977141

tormozit commented 8 months ago

Сделано в 7.05