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

24.01.23

База данных - Обновление 1С

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Установка нескольких обновлений типовых конфигураций одним кликом. Бухгалтерия 3.0:
.cfe 27,66Kb ver:1.0.0.1
8 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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.

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

Вступайте в нашу телеграмм-группу Инфостарт

Обновление

См. также

Инструменты администратора БД Групповая разработка (Git, хранилище) Обновление 1С Системный администратор Программист 1С v8.3 1С:Комплексная автоматизация 2.х 1С:Библиотека стандартных подсистем Абонемент ($m)

Обработка, объединяющая в себе использование инструментов БСП по администрированию кластера серверов и запуска скриптов для автоматического обновления конфигурации из хранилища.

4 стартмани

17.11.2025    608    1    KovrovtsevAS    0    

7

Обновление 1С Программист 1С v8.3 Бесплатно (free)

Обновление конфигураций с расширениями конфигураций.

13.11.2025    1014    vasilev2015    15    

6

Обновление 1С Программист 1С v8.3 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

Обработка, загружающая по расписанию пакет правил обмена в случае их изменения из установленного в настройках каталога.

2 стартмани

27.10.2025    517    2    cheiser1982    2    

1

Нейросети Рефакторинг и качество кода Обновление 1С Программист Бесплатно (free)

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

24.10.2025    1935    1c-izh    6    

6

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

Анализ конфигураций - позволяет проверять любые конфигурации и расширения на наличие ошибок, связанных с вызовом экспортных функций и процедур общих модулей и модулей менеджеров объектов. Проверяются ошибки: 1) Метод объекта не обнаружен 2) Недостаточно фактических параметров. 3) Слишком много фактических параметров. Рекомендуется выполнять при подготовке обновлений. Анализ расширений - позволяет выводить подробный количественный состав расширений по объектам, определить случаи пересечения одного и того же функционала в разных расширения, выявить использование в модулях аннотации "вместо".

10 стартмани

17.10.2025    4639    21    Suker86    13    

19

Обновление 1С Программист 1С v8.3 Бесплатно (free)

Как быстро починить обновление при ошибках в данных без использования внешних обработок.

13.10.2025    3918    VetalDV    7    

8

Обновление 1С Программист 1С v8.3 Бесплатно (free)

При обновлении конфигураций ЕРП/КА/УТ типовыми обновлениями можно получить ошибку  Превышен максимальный расход памяти сервера за один вызов". С чем это связано? Рассмотрим исправление этой ошибки.

18.08.2025    4222    iolko    10    

20
Для отправки сообщения требуется регистрация/авторизация