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

Публикация № 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    63873    115    pbazeliuk    40    

Помощник установки и обновления сервера 1С:Предприятие для Linux (единый дистрибутив, DEB-based)

Инструменты администратора БД Обновление 1С Абонемент ($m) Абонемент ($m)

Установка и обновление сервера 1С:Предприятие после перехода на единый дистрибутив стала еще проще. Но хорошо, если у вас один сервер и достаточно времени. А если сервер не один? Каждый раз вводить одни и те же команды - это не то, что обрадует настоящего администратора, тем более что Linux дает нам в руки мощный инструмент автоматизации - командную оболочку bash. Это дает возможность один раз описать все необходимые действия, а затем все необходимые действия будет выполнять скрипт. В данной статье мы поделимся подобным скриптом, на основе собственных наработок и коротко разберем работу с ним.

1 стартмани

04.02.2023    654    1    oldcopy    0    

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

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

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

1 стартмани

28.10.2022    1532    1    Knup    0    

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

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

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

1 стартмани

28.09.2022    1586    1    FoxesStyle    0    

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

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

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

1 стартмани

23.11.2012    12827    29    Mogidin    1    

Зацикливается обработчик документов сверки взаиморасчетов при обновлении с 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    1415    5    Wildcat55    0    

Быстрое обновление базы 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    6273    5    Bitnikov    19    

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

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

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

1 стартмани

28.04.2022    2288    7    ptkrzy    7    

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

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

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

1 стартмани

10.03.2022    2258    1    masterb    0    

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

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

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

1 стартмани

04.03.2022    2332    9    idm80    6    

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

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

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

1 стартмани

15.12.2008    38100    1664    alexk-is    28    

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

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

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

1 стартмани

24.02.2022    2044    2    7OH    4    

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

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

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

1 стартмани

26.12.2021    10292    23    Brawler    43    

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

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

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

10 стартмани

13.04.2021    5340    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    7823    8    cloud666    19    

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

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

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

1 стартмани

26.10.2018    9166    2    bes_d    0    

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

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

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

1 стартмани

09.12.2015    14177    25    nbeliaev    17    

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

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

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

1 стартмани

08.09.2013    16867    6    bpc222    5    

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

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

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

1 стартмани

10.04.2013    20447    47    mwoleg    8    

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

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

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

1 стартмани

24.11.2012    12368    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    15339    33    Zero_nv    30    

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

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

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

1 стартмани

07.10.2011    9681    43    aet    20    

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

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

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

1 стартмани

19.09.2011    12701    111    s.sintsov    7    

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

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

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

1 стартмани

30.01.2011    17042    441    malev    24    

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

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

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

1 стартмани

19.05.2010    19843    47    tomvlad    1