1с обработчик обновления не инициализировал параметр обработказавершена
Досталось мне по наследству выполнение обновления баз 1С Бухгалтерии 3 в количестве 100 шт и ЗУП 3 - 100 шт(измененные, но не сильно. Обновлять только из хранилища). У нас конечно написана конфа по обслуживанию такого количества баз и даже пакетное обновление реализовано, в том числе и из хранилища для измененных конфигураций, но . все этапы этого варианта обновления заточены на участие Админа.
1) Сначала надо зайти на сервер и завершить все сеансы оставленные пользователями.
2) Запустить написанную предшественниками не знаю на чем программку по блокировке регламентных заданий на сервере
3а) Обновить изменную базу в хранилище из скачанного cfu файла
4) Сформировать пакетные bat файлы (обычно делим на 4 потока - 4 файла)
5) Запустить пакетные файлы и дождаться их завершения.
6) Запустить каждый экземпляр базы в режиме Предприятия, подтвердить легальность и закрыть базу.
7) Запустить программку по разблокировке регламентных заданий.
Готово . Мы провели незабываемое время у компа и обновили 80 типовых баз, потратив на это все выходные.
Проделав дважды такую операцию, мне стало грустно и начал искать пути полной автоматизации этого процесса. В итоге было обнаружено пару достойных наработок по пакетному обновлению в открытом доступе и начался процесс их переработки и адаптации под мои нужды. Но у всех найденных вариантов был один существенный недостаток - подтвердить легальность и закончить обновление они не могли. Поэтому моя задача не автоматизируется на 100 % без этого.
Начал изучать механизм завершения обновления через отладчик и искать пути решения моей задачи. В итоге были найдены точки перехвата событий при первом открытии обновленной конфигурации и мои труды и старания вылились в расширение для конфигурации, которое умеет само подтверждать легальность обновления, дожидаться выполнения обработчиков и закрывать 1с Предприятие. Выполнено это в виде расширения что бы не вскрывать типовые БУХи . Со вскрытой конфигурацией, в частности ЗУП 3, это расширение тоже работает, т.к. используются точки входа и выхода типовых процедур.
В итоге, собрав все в одну разработку и дополнив ее механизмом отрубания пользователей от текущей базы через COM соединение с агентом сервера 1С перед стартом обновления, получил полностью 100% автоматический механизм обновления типовых баз 1С.
1) В обработке обновления выбираем тип базы ( Бухгалтерия ) и номер потока (все базы в конфе обслуживания уже поделены на потоки )
2) Нажимаем кнопку "Выполнить"
и . ложимся спать. Все базы выбранного потока обновлены, Легальность обновления подтверждена, Обработчики обновления выполнены.
Что делает обработка автоматически сама:
1) Определяет текущий релиз базы
2) Скачивает с сайта 1с файл с информацией об обновлении данного типа конфигурации. (Бух, ЗУП, УТ. )
3) Проверяет наличие в каталоге конфигураций доступного обновления из списка.
4) Если нужного обновления нет, скачивает его автоматически с сайта 1С (нужен логин и пароль для доступа на сайт 1С) и размещает его в каталог обновлений.
5) Отрубает на сервере 1С все сеансы пользователей от текущей базы
6) Запускает обновление конфигурации и базы данных.
7) Если обновились до последнего релиза и больше обновлять не надо, запускает 1С в режиме Предприятия для подтверждения легальности обновления и выполнения отложенных обработчиков обновления
и так по кругу пока не кончится список баз.
Расширение подтверждения легальности протестировано на БП 3 релиз 3.0.69.32 , ЗУП 3 релиз 3.1.9.159 работающих на MS-SQL сервере. Для файловых вариантов баз тоже должно работать, но мною не тестировалось, т.к. у нас таких баз нет.
Не сомневаюсь что для Торговли, Розницы и других типовых конфигураций от 1С это расширение будет работать.
Дополнительно прилагаю модуль обработки по автоматическому обновлению информационных баз, в котором реализованы все вышеописанные автоматические процедуры обновления. Его с легкостью можно адаптировать под собственные нужды и вариант работы (только для программистов) т.к. написан на родном языке 1С.
Данная обработка работает в самописной конфигурации по обслуживанию информационных баз.
P.S. Да я знаю про "Обновлятор". В бесплатной версии он не работает с таким количеством баз, были мысли приобрести полную версию, но было интересно решить данную задачу самому, т.к. половина функционала уже было в нашей базе обслуживания.
UPDATE лето 2021
Подняли свою автоматизацию обновления на новый уровень. Создали регламентное задание из этого модуля обновления, теперь даже запускать ничего не надо, все работает само. Разделили ВСЕ базы на 7 потоков (БП 3 и ЗУП3.1 обновляются с Пн по Пт, В субботу обновляются БП КОРП , в воскресенье БП Сельхозка). На полуавтомате остались тока БП с дописками и обновлением из хранилища.
Иногда хотелось бы конфигурацию базы данных обновить, но пропустить обработку обновления.
Причин этому много, основная - ошибки в процессе обновления.
При этом получить доступ к полному интерфейсу программы невозможно - можно только открыть внешнюю обработку или посмотреть журнал регистрации.
(Фирма 1С анонсировала ключ запуска приложения ОтключитьЛогикуПриНачалеРаботыСистемы.
цитирую:
При этом блокируется открытие всех форм на рабочем столе. Для отладки.
но у меня это не сработало)
Поэтому пойдем другим путем. Открываем внешнюю обработку ОтменитьОбновлениеИнформационнойБазы.epf
и редактируем РегистрСведений.ВерсииПодсистем
Здесь нужно сделать две вещи:
После этого 1С не будет запускать обновление при старте, и можно будет спокойно разобраться с ошибками.
Затем возвращаем все значения регистра в исходное состояние и перезапускаем программу.
Обработка обновления запустится заново.
И если вы исправили все ошибки - пройдет успешно.
В редких случаях (тут могут быть как косяки разработчиков, так и ваши) нужно пропустить отдельные шаги обновления.
Например, в моем случае я получал ошибку
: Не указана процедура заполнения данных отложенного обработчика обновления "Документы.ТранспортнаяНакладная.ПеренестиДанныеИзРеквизитовВНовыйДокумент".
хотя 100% был уверен, что у меня и документов таких нет.
А на нет, как говорится, суда нет.
Открываем вторую обработку НовыеСведенияОбОбновлении.epf находим
фильтр поля найти работает и по подстроке
Нажимаем кнопку - открыть форму удаления обработчика.
и удаляем сбоящую процедуру.
После этого запускаем обновление ИБ.
Не забываем про ключ командной строки ЗапуститьОбновлениеИнформационнойБазы
Код обработки открыт.
Проверена на конфигурации Управление торговлей, редакция 11.2 (11.2.2.106)
P.S. Появился вопрос про относительно старые конфигурации.
У них при ошибке в обработке обновления нет кнопки "Открыть внешнюю обработку", только "Завершить работу" и "Перезапустить", более того - окно открыто модально.
Для владельцев базовых версий почти патовая ситуация, т.к. перезапуск приведет к этому же окну.
Лайфхак невеликий - но выход есть.
Нажимаете F1, или по ссылке открываете технологический журнал, там будет активна кнопка - "Справка".
А из окна справки уже можно получить доступ к полному меню, в том числе и открытию файлов внешних обработок.
Читайте также: