Меню Закрыть

1С автоматическое обновление конфигурации

Содержание

В свойствах баз обновлятора (в версиях после 3 ноября 2017 года) появилась вот такая замечательная опция:

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

Когда она может быть полезна

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

При этом все дописки вы знаете и они у вас задокументированы.

В таком случае может быть проще и быстрее:

  1. Сначала обновить конфигурацию обновлятором (установив соотв. галку в свойствах базы)
  2. Затем посмотреть отчёт обновления в обновляторе (там будут указаны свойства,измененные дважды)
  3. И только после этого проверить, что все доработки на месте и вернуть те, что были утеряны (об этом смотрите ниже, где я рассказываю как работает автоматическое обновление доработанных конфигураций)

При таком способе работы вам не нужно:

  1. Скачивать необходимые обновления
  2. Открывать конфигуратор и применять эти обновления
  3. Ожидать пока выполнится обновление конфигурации
  4. Ожидать пока выполнится обновление базы данных

Вы вообще можете запланировать такое обновление на ночь, а уже утром произвести контроль и доработку, если она потребуется.

И если доработки конфигурации небольшие, то в большинстве случаев вам после обновления вообще не придётся ничего делать.

Ваше вмешательство будет нужно тогда, когда в обновлении будет изменен тот же самый объект, что изменен у вас (это и называется "измененные дважды"). И вы можете легко находить такие объекты, просматривая отчёт обновлятора:

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

Само обновление происходит при помощи того же пакетного ключика updatecfg, но при этом обновлятор дополняет эту команду специальным файлом настроек в формате xml.

Обновление происходит с приоритетом новой конфигурации, при этом:

  1. Если вы добавляли в конфигурацию новый объект — обновление его не затронет.
  2. Если вы добавляли в конфигурацию новый реквизит в уже существующий объект типовой (от поставщика) — обновление его также не затронет.
  3. Если вы меняли в конфигурации объект поставщика, но он не изменился в этом обновлении, то он останется как есть.
  4. Но, если вы меняли в конфигурации объект поставщика, и он изменился в этом обновлении, то возьмётся версия из обновления. При этом в отчёте обновлятора этот объект будет отмечен как "дважды измененный".

При этом, при настройке по умолчанию.

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

Я очень надеюсь, что эта возможность позволит высвободить ещё немного часов от ручного, монотонного труда.

Если у вас есть замечания или пожелания по этой возможности — я всегда рад вас выслушать, пишите мне на [email protected]

Как настроить финальное объединение с эталонной конфигурацией

Чтобы стало понятнее о чём речь, приведу рабочий пример у одного из пользователей обновлятора.

У него 40 бухгалтерских баз. Все они содержат одну и ту же доработанную конфигурацию.

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

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

"В ручном режиме обновляю до последнего релиза одну базу; в последнем релизе тестирую, добавляю все изменения, которые были потеряны, в модулях форм документов, общих модулях. Затем обновляю остальные базы до последнего релиза и в конце объединяю с подготовленным cf файлом из первой базы."

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

С пакетным обновлением доработанных баз до последнего релиза обновлятор (учитывая возможность, описанную выше) справляется на ура, но вот объединять конфигурацию с подготовленным cf в пакетном режиме обновлятор не умел.

И я доработал эту возможность.

Чтобы заставить обновлятор после применения обновления следом выполнить ещё и объединение с конфигурацией из файла — необходимо расположить файл с конфигурацией для объединения в папку обновления под именем MergeThisFileAfterUpdate.cf

Читайте также:  Get set c что это

В рассмотренном выше примере предположим, что требуется обновить все 40 конфигураций на следующие релизы (и пусть они для упрощения задачи будут ключевыми, то есть их нельзя перескакивать): 2.0.60.1, 2.0.60.2 и 2.0.60.3.

Алгоритм наших действий с учётом автоматизации обновлятором будет следующим:

  1. Обновить при помощи обновлятора одну из конфигураций до версии 2.0.60.3
  2. Добавить все изменения, которые были потеряны. проверить работоспособность обновлённой конфигурации.
  3. Выгрузить эту конфигурацию в папку с обновлением 2.0.60.3 под именем MergeThisFileAfterUpdate.cf
  4. Запустить обновление (с включенной возможностью обновления доработанных конфигураций) оставшихся 39 баз.
  5. Обновлятор в этом случае для каждой из 39 баз:
  1. выполнит пакетное обновление на 2.0.60.1
  2. выполнит обработчики обновления
  3. выполнит пакетное обновление на 2.0.60.2
  4. выполнит обработчики обновления
  5. выполнит пакетное обновление на 2.0.60.3
  6. обнаружит, что в папке с обновлением 2.0.60.3 лежит файл MergeThisFileAfterUpdate.cf
  7. выполнит пакетное объединение нашей конфигурации с конфигурацией из файла MergeThisFileAfterUpdate.cf (о настройках такого объединения смотрите ниже)
  8. выполнит обработчики обновления

При этом пакетное объединение выполняется через пакетный ключик конфигуратора mergecfg и следующий файл настроек (передаётся через ключ settings):

Такие настройки объединения позволяют нам привести нашу конфигурацию (которая всё ещё на поддержке) к конфигурации в файле MergeThisFileAfterUpdate.cf, в которую мы внесли и исправили все наши доработки.

Объединение с эталонной конфигурацией как отдельная операция

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

Эта возможность доступна на закладке "Скрипты" в главном окне программы.

Тип скрипта "Пакетный". Из меню следует выбрать пункт "Обновлятор"->"Методы"->"Объединить с конфигурацией из файла":

В скрипт вставится вот такой текст:

Путь к файлу, с которым нужно выполнить автоматическое объединение, у вас, конечно, будет свой.

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

Получается, что в начале мы выполняем объединение конфигураций при помощи команды обновлятора merge_cfg, а затем выполняем обновление конфигураций баз данных при помощи пакетного ключика конфигуратора UpdateDBCfg.

Вторую команду можно вставить в скрипт из меню шаблонов:

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Как автоматически обновить 1С? Этот вопрос волнует многих неподготовленных и порой даже квалифицированных IT-специалистов. Механизм автоматического обновления 1С рассчитан на разные категории пользователей. Среди них могут быть как неподготовленные пользователи, так и администраторы внедрений.

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

Функциональные свойства механизма обновления следующие:

  1. Автоматический. Практически не требует настройки и уровня подготовки пользователя.
  2. Настраиваемый. Пользователь может переопределить параметры по умолчанию.
  3. Транзакционный. Свойство подразумевает откат системы в случае некорректной установки.
  4. Аудируемый. В случае появления ошибки пользователь оперативно узнает о ней и влияет на ход обновления.

Получение обновлений с помощью сети Интернет

Для этого необходимо посетить веб-сайт поставщика обновлений. Если обновление имеется в наличии, то помощник сообщит вам номер версии (например автоматическое обновление платформы 1с 8 3), краткое описание и размер, а затем предложит вам его установить. Не забудьте указать логин и пароль, если сайт поставщика требует авторизацию. Получение файлов обновления может занять продолжительное время, но это не должно быть причиной беспокойства.

Читайте также:  Yadi sk 1 сентября

Установка обновлений

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

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

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

Диагностика нештатных ситуаций

Записи обо всех операциях и возникших ошибках помещаются автоматически в журнал регистрации информационной базы. Во время установки обновлений во временной папке пользователя система создает лог-файл, который содержит записи о ходе обновления. Его содержимое потом попадает в журнал регистрации. Последний каталог, имеющий вид %temp%1CUpdate., соответствует последней обновленной версии. Результаты обновления записываются также и в журнал событий системы. По вашему желанию может быть организовано уведомление об обновлении по электронной почте.

Внедрение в конфигурацию

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

Проверка и получение обновлений происходят в результате взаимодействия с веб-сайтом поставщика. Часть сайта в открытом доступе предоставляет вам анонимный доступ к информации об обновлениях. Но доступ к самим продуктам зачастую требует входа на сайт. Вот так может выглядеть полный путь к файлу обновлений, содержащий открытую и закрытую части сайта: http://downloads.v8.1c.ru/tmplts/1с/Accounting/2_0_32_6/1cv8.zip.

Формат файлов обновления

Пример UpdInfo.txt. На рисунке представлены примеры содержания таких файлов

Итак, чтобы получить и установить обновления через сеть интернет, выполните следующие действия:

  • Помещайте файлы на веб-сервер. У них должна быть структура каталогов, которая соответствует каталогу шаблонов, а каталог с названием 1с.ru определяется «открытой» частью сайта. Также и с каталогом downloads, он соответствует той части сайта, которая требует авторизации. Веб-сервер никогда не входил в поставку демонстрационной конфигурации, обратите на это внимание. Далее, в модуле, который переопределяется (с названием «Обновление Конфигурации»), укажите адреса обеих частей сайта. Создайте исходный файл поставки конфигурации версии 1.0.0.0 и к нему добавьте два инкрементальных обновления: 1.0.1.1и 1.1.2.3.
  • Измените версию конфигурации на 1.0.1.1 и создать файлы поставки (cf) и обновления (cfu).
  • Во время создания файла обновления укажите предыдущий файл поставки версии 1.0.0.0.
  • Файл обновления сохраните в каталог downloads mplts1cAutoUpdate1_0_1_1.

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

Как внедрить обновление?

Чтобы внедрить обновление 1С, необходимо выполнить ряд несложных действий:

  1. обеспечить предусловия, при которых будет возможность в полном объеме внедрить библиотеку в конфигурацию;
  2. перенести объекты предметы метаданных из необходимой конфигурации;
  3. проверить правильность внедрения.

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

На рисунке ниже представлены требования к различным компонентам системы.

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

Читайте также:  Проблемы с учетной записью скайп

Хочется, чтобы при открытии конфигурация проверяла есть ли обновления, и сама устанавливала их. Возникли вопросы:

1) где хранить файлы обновлений

2) как их скачивать

3) как организовать автообновление конфигурации

1) По поводу хранения файлов обновления остановился на ftp сервере ([хорошая скорость отдачи, легкий доступ, . ). Нашел инструкцию по настройке ftp сервера на Windows 7, благо был внешний статический ip. Если нет такового, то провайдер может его предоставить или же воспользоваться специальной программкой DynDNS. Но для доступа к ftp серверу нужен логин и пароль, да и сам адрес, хранить его в коде не хотелось, сохранил во внешнем файле и, когда нужно, получал их. Также встал вопрос, как проверить релиз, ну тут просто имя файла сделал (2.0.64.5.cfu).

Так как не всем клиентам можно автоматически обновляться, а только тем, у кого есть действующая подписка ИТС, под каждого клиента была создана папка, в которой будет лежать обновление (и обновление мы будем проверять именно в этой папке). Отсюда вытекло, что хранить имя папки также где-то надо, сначала хотел хранить в константе, но потом решил хранить вне программы.

Руками раскидывать файлы обновлений и отслеживать, кому откуда копировать, а кому и не копировать (действующая подписка ИТС), трудоемко, для этих целей сделал обработку.

2) Сначала попробовал скачивать файл средствами 1С, но программа при этом зависала до окончания скачивания файла. Решил сделать через bat файл, но при его запуске висело окно командной панели, решено было его скрыть, написали скрипт. Протестировав загрузку файла, невозможно было понять, когда он загрузился полностью. Тестируя на Windows XP, решил проверять загрузку файла по размеру файла. Уже не помню почему, но размер файла указал в имени файла, в итоге имя файла обновлений стало выглядеть примерно так 2.0.64.5_ 12586125 .cfu.

3) Обновление сделал в пакетном режиме (часть кода взял тут //infostart.ru/public/147253/, Спасибо!). Позже появилась идея использовать типовой механизм обновления конфигураций, подсунуть ему свой файл обновления, но руки так и не дошли.

Общий порядок получился такой:

В процедуре ПриНачалеРаботыСистемы проверяем наличие обновления:

В открываемой форме ( ЭтотОбъект.ПолучитьФорму("Форма").Открыть(); , код был в модуле обработки, в процедуре ПриОткрытии формы подключаем обработчик ожидания. Она проверяет окончание загрузки файла и открывает следующую форму:

Следующие формы проверяют активные сеансы и, если есть такие, просит их закрыть. Если активных сеансов нет, формирует bat файл для обновления, запускает его и закрывает программу. Процедура формирования bat файла:

Позже переделал это всё в обработку (её и выкладываю) и указывал дополнительные параметры запуска "/Execute "C:Загрузка.epf", обновляем типовые конфигурации. Нам только необходимо определиться с местом хранения параметров: адрес ftp, логин, пароль, папка клиента на ftp и папка, куда мы будем скачивать обновления. Велись работы по изменению окна обновления, чтобы не висело окно командной панели, заменить чем-нибудь красивым. И вроде как бы получилось, если кому-то надо, поищу исходники. Проблемные места:

1) Блокирует скачивание брэндмауер, Kaspersky, Avira.

2) При наличии 2 сетевых подключений загрузка не происходит.

3) Требуется участие пользователя.

4) Иногда процесс обновления конфигурации не происходит, пользователь видит сообщение "конфигурация базы данных не соответствует сохраненной конфигурации" и звонит вам.

5) Паранормальные случаи.

Проверял только на файловых версиях. Операционные системы: Windows XP, Windows 7, Windows 8, Windows Vista. Код открытый, обработку необходимо немного изменить (решить, где хранить параметры и прописать их получение). С вводом и настройкой автоматического обновления. Обновление готовлю в свободное время (иногда поздно вечером) и терерь, сделав 10 файлов обновления, обновляем ими более 250 клиентов. Мы не привязаны к временным рамкам работы бухгалтера.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.