Установка нескольких обновлений типовых конфигураций одним кликом

Публикация № 1796398 24.01.23

Администрирование БД - Обновление 1С

Обновление

Как не мучиться и все обновления конфигурации установить за один раз. Легко. В 1С: БСП все уже готово, нужно только взять.

1. Как все начиналось.

Обычно обновление конфигураций 1С мы делаем не по мере их выхода, а когда очень стало нужно (вышла новая отчетность, появился нужный нам функционал и т.д.). В этом случае нужно выбрать и установить несколько промежуточных обновлений, которые устанавливаются по одному за раз. Если мы планируем автоматическую установку ночью, когда никто не работает, то на это может уйти несколько дней. Это и нам, и пользователям неудобно, потому что проверки нужно делать после каждого этапа.

Наступил тот момент, когда мне пришлось заниматься обновлением типовых конфигураций. Т.к. я человек ленивый, поэтому хочется сразу сделать хорошо, чтобы потом не переделывать.

 

2. Начало исследования и первые сюрпризы.

Решено запланировать обновление стандартными средствами конфигурации и взять сформированные скрипты за основу.

Содержимое файла main.js с самого начала принесло сюрприз, и натолкнуло на мысль, что все будет проще, чем казалось.

// Параметры процедуры обновления
var now = new Date()
var outFileName = 'log' + now.valueOf() + '.txt' // Путь к log-файлу
var cfgFileNames = ['ПолноеИмяФайлаОбновления.cfu'] // Пути к .cf/.cfu-файлам с обновлениями
var fixFileNames = [] // Пути к .cfe файлам с исправлениями
var removeFixNames = [''] // Имена исправлений, которые необходимо удалить

Обращаем внимание, что переменная cfgFileNames, содержащая полное имя файла обновления, имеет тип массив и в комментарии "Пути" во множественном числе!? Дополнительно вспоминаем, что при установке скрипт всегда пишет "1/1". Т.е. первый из одного. Дальше по тексту модуля находим, что эта переменная обрабатывается именно как массив, и снова упоминание на "Количество файлов обновления".

  log(format('Количество файлов обновления: {0}', cfgFileNames.length))
  for (var i = 0; i < cfgFileNames.length; i++) {
    var fileInfo = GetRequired(cfgFileNames[i], null)
    var required = fileInfo.requiredVersion ? '(Обязательная)' : '';
    log(format('{0}. {1} {2}', i + 1, fileInfo.filePath, required))
  }

После каждого обновления нужно выполнить обработчики обновления и дождаться их завершения. Этот код тоже присутствует в файле update.js.

    if (fileProperties.requiredVersion || (cfgFileIndex + 1 === cfgFileNames.length)) {
      setProgress(format('Выполнение обработчиков обновления ({0}/{1})', cfgFileIndex + 1, cfgFileNames.length))
      ret = executeUpdate(cfgFileIndex + 1 === cfgFileNames.length)
      checkResult(ret)
    }

Из него мы понимаем, что для выполнения обработчиков нужны два условия: файл не должен быть последним в пакете обновления и некий флажок "requiredVersion". Не буду загромождать кодом дальше, кто захочет посмотреть, легко найдет. Просто скажу, что за этот флажок отвечает наличие символа "+" перед именем файла. Теперь становится ясно, что просто заменив одно имя файла обновления на перечисленные через запятую и с добавленным символом "+", мы сможем за один раз установить несколько обновлений. Вот так.

var cfgFileNames = ['+ПолноеИмяФайлаОбновления1.cfu,+ПолноеИмяФайлаОбновления2.cfu,+ПолноеИмяФайлаОбновления3.cfu'] // Пути к .cf/.cfu-файлам с обновлениями

 

3. А что же в самой 1С?

Находим описание функции "ОбновлениеКонфигурацииКлиент.УстановитьОбновление" и смотрим описание параметров.

// Проверяет возможность установки обновления. Если возможно, то запускает
// скрипт обновления или планирует обновление на указанное время.
//
// Параметры:
//    Форма - ФормаКлиентскогоПриложения - форма, из которой устанавливается обновление и которая должна быть закрыта в конце. 
//    Параметры - Структура - параметры установки обновления:
//        * РежимОбновления - Число - вариант установки обновления. Принимаемые значения:
//                                    0 - сейчас, 1 - при завершении работы, 2 - планирование обновления.
//        * ДатаВремяОбновления - Дата - дата планируемого обновления.
//        * ВыслатьОтчетНаПочту - Булево - признак необходимости отправки отчета на почту.
//        * АдресЭлектроннойПочты - Строка - адрес электронной почты для отправки отчета о результате обновления.
//        * КодЗадачиПланировщика - Число - код задачи запланированного обновления.
//        * ИмяФайлаОбновления - Строка - имя файла устанавливаемого обновления.
//        * СоздаватьРезервнуюКопию - Число - признак необходимости создания резервной копии.
//        * ИмяКаталогаРезервнойКопииИБ - Строка - каталог сохранения резервной копии.
//        * ВосстанавливатьИнформационнуюБазу - Булево - признак необходимости восстановления базы.
//        * ЗавершениеРаботыСистемы - Булево - признак того, что установка обновления происходит при завершении работы.
//        * ФайлыОбновления - Массив - содержит значения типа Структура.
//        * Исправления - Структура:
//           ** Установить - Массив - пути к файлам исправлений во временном хранилище,
//                                    которые требуется установить.
//           ** Удалить    - Массив - уникальные идентификаторы (Строка) исправлений, которые требуется удалить.
//        * КаталогПлатформы - Строка - путь к платформе, на которой должно быть запущено обновление, если не указано
//                                    запускается на платформе текущего сеанса.
//    ПараметрыАдминистрирования - см. СтандартныеПодсистемыСервер.ПараметрыАдминистрирования.
//
Процедура УстановитьОбновление(Форма, Параметры, ПараметрыАдминистрирования) Экспорт

И это приносит первое разочарование: параметр "ИмяФайлаОбновления" имеет тип строка. Но тут же есть описание параметра "ФайлыОбновления" имеющего тип массив. Дальнейшее исследование приводит в  функцию "ОбновлениеКонфигурацииКлиент.ИменаФайловОбновления" из кода которой становится понятно как это использовать.

Если ПустаяСтрока(Параметры.ИмяФайлаОбновления) Тогда
	ИменаФайлов = Новый Массив;
	Для Каждого ФайлОбновления Из Параметры.ФайлыОбновления Цикл
		ПрефиксФайлаОбновления = ?(ФайлОбновления.ВыполнитьОбработчикиОбновления, "+", "");
		ИменаФайлов.Добавить(Форматировать(ПрефиксФайлаОбновления + ФайлОбновления.ПолноеИмяФайлаОбновления));
	КонецЦикла;
	ИменаФайловОбновления = СтрСоединить(ИменаФайлов, ",");
Иначе
	ИменаФайловОбновления = Форматировать(Параметры.ИмяФайлаОбновления);
КонецЕсли;

Нам нужно передать пустой параметр "ИмяФайлаОбновления", и в параметре "ФайлыОбновления" передать массив структур с заполненными именами файлов обновления.

Новый Структура("ВыполнитьОбработчикиОбновления, ИмяФайлаОбновления", Истина);

 

4. Итого.

В какой версии БСП это появилось, исследовать времени не было. На версии Бухгалтерии 116 не было описания параметра "ФайлыОбновления", но сам механизм уже присутствует. В приложенном расширении в стандартную форму установки обновлений добавлена возможность выбора списка файлов обновлений. При добавлении не проверяется возможность применимости обновлений в выбранном порядке, порядок в списке должен соответствовать порядку установки.

 

 

Расширение создано на основе конфигурации Бухгалтерия 3.0 и будет работать сразу. Обновление проводилось с версии Бух 3.0.116.27. Версия БСП в ней 3.1.6.227.

Доработок немного, и можно адаптировать под любую конфигурацию.

Скачать файлы

Наименование Файл Версия Размер
Установка нескольких обновлений типовых конфигураций одним кликом. Бухгалтерия 3.0:

.cfe 27,66Kb
3
.cfe 1.0.0.1 27,66Kb 3 Скачать

Специальные предложения

Оставьте свое сообщение

См. также

Методика упрощения поддержки конфигураций. Переопределение и вызов обработчиков событий для УФ 1С 8.2-8.3 Промо

Универсальные функции Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Управляемые формы Управляемые формы Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Каждый программист 1С хотя бы раз задумывался над тем, как уменьшить в разы трудозатраты на обновления переписанных конфигураций. Как не забыть добавить некий код, команду, кнопку в форму типовой конфигурации, изменить стандартный обработчик события формы – этот список можно продолжать до бесконечности. В этой статье изложен метод для управляемых форм, который позволяет реализовать эту возможность.

1 стартмани

10.02.2013    63824    115    pbazeliuk    40    

Автоматизация обновления до последнего релиза

DevOps и автоматизация разработки Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Это механизм, который автоматически обновляет базы 1С до последнего релиза, при разработке в 1С:Enterprise Development Tools c использованием распределённой системы управления версиями GIT.

1 стартмани

28.10.2022    1468    1    Knup    0    

Автоматическое обновление конфигурации (регламентное задание) для серверных решений

Обновление 1С Инструменты администратора БД Платформа 1С v8.3 Платформа 1С v8.3 Россия Россия Абонемент ($m) Абонемент ($m)

Фоновое задание (внешняя обработка) для автоматического обновления конфигурации: при передаче изменений конфигурации и данных от центральной базы на узел РИБ с последовательным обновлением конфигурации и данных на узле и для "НЕ РИБ" баз по такому же принципу. Выполняется запуском скриптов в пакетном режиме.

1 стартмани

28.09.2022    1549    1    FoxesStyle    0    

Зацикливается обработчик документов сверки взаиморасчетов при обновлении с 2.5.8.232 на 2.5.8.240(245)

Обновление 1С Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 1С:Управление торговлей 11 1С:Управление торговлей 11 Россия Россия Абонемент ($m) Абонемент ($m)

Зацикливается обработчик документов сверки взаиморасчетов при обновлении с 2.5.8.232 на 2.5.8.240(245), платформа 8.3.19.1522. Установка исправления EF_00_00467553 от 1С не помогает.

1 стартмани

30.08.2022    1378    5    Wildcat55    0    

Модуль проверки обновлений для собственной конфигурации Промо

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Если у вас есть конфигурация/подсистема собственной разработки, или просто некоторая очень хорошая обработка, и вы хотите сообщать пользователям о выходе новых версий, можете воспользоваться данным модулем.

1 стартмани

23.11.2012    12810    29    Mogidin    1    

Быстрое обновление базы 1С из XML-файлов конфигурации (EDT-GIT)

DevOps и автоматизация разработки EDT Обновление 1С Механизмы платформы 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

Быстрое обновление конфигурации и базы данных 1С, вместо долгого обновления из EDT (1C:Enterprise Development Tools) при использовании хранилища GIT. Непосредственное обновлении базы на сервере баз данных (минуя сервер 1С) из XML-файлов конфигурации при помощи утилиты автономного сервера 1С - ibcmd.

1 стартмани

13.07.2022    6170    4    Bitnikov    19    

Удаление патчей из конфигурации

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

Иногда патчи от 1С мешают обновлению, разработке а руками удалять лень. Данная обработка работает так: через меню Файл - Открыть открывается обработка, которая удаляет - расширения (только патчи).

1 стартмани

28.04.2022    2254    7    ptkrzy    7    

Сравнение ячеек (1.0.0.4) Промо

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

Данная разработка предназначена для более наглядного отображения информации из отчетов, которые создаются по результатам сравнения объектов конфигураций. Отчеты создаются выбором одного из пунктов меню "Отчет о сравнении объектов".

1 стартмани

15.12.2008    38071    1664    alexk-is    28    

Сценарий обновления платформы 1С:Предприятие 8 для deb-based ОС Linux

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Россия Россия Абонемент ($m) Абонемент ($m)

Сценарий обновления платформы 1С:Предприятие 8 для deb-based ОС Linux для реализации простого способа обновления из установочных файлов формата производителя.

1 стартмани

10.03.2022    2221    1    masterb    0    

Пакетное обновление информационных баз (типовые конфигурации)

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Решение для пакетного обновления всех типовых баз на базе БСП (библиотеки стандартных подсистем). Скрипт написан на Python, вызывается через cmd файл с аргументом. Предназначено только для работы с сервером 1С:Предприятие. Для работы необходимо установить Python не ниже 3 версии.

1 стартмани

04.03.2022    2295    8    idm80    6    

Блокировка работы пользователей

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Расширение для типового механизма блокировки пользователей БСП.

1 стартмани

24.02.2022    2022    2    7OH    4    

"Обновление через копию" - как это использовать?

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:ERP Управление предприятием 2 Абонемент ($m) Абонемент ($m)

Описание того, как использовать "Обновление через копию" для крупных баз данных типа 1С:ERP.

1 стартмани

26.12.2021    10207    23    Brawler    43    

Обновление нетиповой конфигурации с приведением к типовой и выносом всех доработок в расширение. Часть/Способ №2

Обновление 1С 8.3.14 8.3.14 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Многие задумывались, как вынести в расширение все доработки и встать на замок обратно? Способ и ответ - ниже.

10 стартмани

13.04.2021    5308    20    cloud666    19    

Обновление нетиповой конфигурации с приведением к типовой и выносом всех доработок в расширение. Часть/Способ №1

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 8.3.14 8.3.14 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

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

1 стартмани

10.03.2021    7778    8    cloud666    19    

Блокировка пользователей БД + Рассылка

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

Блокировка работы пользователей с рассылкой на указанные e-mail.

1 стартмани

26.10.2018    9145    2    bes_d    0    

Органайзер обновления конфигураций 1С

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Абонемент ($m) Абонемент ($m)

Всем, кто забывает/не успевает/забивает следить за выходами релизов конфигураций - данная конфигурация пригодится.

1 стартмани

09.12.2015    14166    25    nbeliaev    17    

Клиентское приложение (тонкий и толстый клиент) для Калькулятора релизов 1С

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Обработка для работы с бесплатным сервисом IT-Решение: Калькулятор релизов 1С. Возможности: - расчет количества обновлений с текущей версии до требуемой - определение планового времени процедуры обновления - подсчет плановой стоимости обновления

1 стартмани

08.09.2013    16848    6    bpc222    5    

Как вносить значительные изменения в типовую конфигурацию 1С, сохранив возможность ее обновления с минимальными трудозатратами

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

На любое требование конечного пользователя у специалиста НЕ должен мгновенно срабатывать рефлекс «хватай и кодируй».

1 стартмани

10.04.2013    20430    47    mwoleg    8    

Изменение типовых Конфигураций с последующим обновлением.

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

Иногда встречаются задания, которые для своего выполнения приводят к изменению конфигураций. А иногда встречаются конфигурации в которых вместо внешней печатной формы меняли модуль объекта, всего лишь для добавления пары значений в печатную форму. Для того чтобы в будущем на такие конфигурации быстро накатывать обновления я предлагаю следующий метод.

1 стартмани

24.11.2012    12348    35    rar_xxx    12    

Осторожно: обновление ЗУП 2.5.52.*

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 2.5 1С:Зарплата и Управление Персоналом 2.5 Россия Россия Абонемент ($m) Абонемент ($m)

Наверное почти все, кто как-то связан с ЗУП столкнулись мягко сказать кривоватым обновлением 2.5.52.2. Про 2.5.52.1 вообще речи не идет, официальный ответ 1С: "восстанавливайте из копии которую сделали перед обновлением".

1 стартмани

21.06.2012    15325    33    Zero_nv    30    

Текущие интересующие релизы 1С

WEB-интеграция Обновление 1С Россия Россия Абонемент ($m) Абонемент ($m)

Пользовательский javascript для тех, кто отслеживает свои продукты на официальном сайте 1С. Скрипт работает с расширениями Tampermonkey(Google Chrome) или Greasemonkey(Mozilla Firefox).

1 стартмани

07.10.2011    9661    43    aet    20    

Автоматизация обновления доработанных типовых конфигураций

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

Данная конфигурация предназначена для автоматизации процесса внесения изменений в тексты модулей типовых конфигураций 1С после проведения очередного обновления.

1 стартмани

19.09.2011    12685    111    s.sintsov    7    

Проверка обновлений

Обновление 1С Платформа 1С v7.7 Платформа 1С v7.7 Конфигурации 1cv7 Конфигурации 1cv7 Россия Россия Абонемент ($m) Абонемент ($m)

Проверялка обновлений с изменениями от 27.09.2011 Позволяет узнать последние релизы конфигураций из списка а также последние номера комплектов регламентированной отчетности. Обработка требует наличия v7plus.dll

1 стартмани

30.01.2011    17030    441    malev    24    

Обновление КЛАДР в информационной базе

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

Обработка предназначена для быстрого обновления информации в регистре сведений "Адресный классификатор" по загруженным регионам в информационной базе.

1 стартмани

19.05.2010    19824    47    tomvlad    1    

Один способ вносить изменения в типовую конфигурацию без проблем с обновлением

Обновление 1С Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Россия Россия Абонемент ($m) Абонемент ($m)

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

1 стартмани

08.05.2010    28111    230    zfilin    37    

Сравнение диалогов (используется компонента gcomp.dll)

Обновление 1С Оперативный учет 7.7 Оперативный учет 7.7 Бухгалтерский учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Расчет 7.7 Конфигурации 1cv7 Конфигурации 1cv7 Россия Россия Абонемент ($m) Абонемент ($m)

Обработка для сравнения диалогов двух конфигураций. Чего так не хватает в средствах 1С 7.7 при обновлении.

1 стартмани

24.08.2009    7786    221    march_al    10    

Adaptersoft : АК-47

Обновление 1С Бухгалтерский учет 7.7 Бухгалтерский учет 7.7 Конфигурации 1cv7 Конфигурации 1cv7 Абонемент ($m) Абонемент ($m)

Анализатор Коллизий. Обновление сильно измененных типовых конфигураций. Бесплатно. 1cv77

1 стартмани

17.04.2009    25022    1177    adapter    100