1с как обновить конфигурацию без реструктуризации

Обновлено: 16.06.2024

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

Сожаление о том, что не узнали об этой программе раньше. Сожаление о том бесчисленном количестве часов и нервов, которые были потрачены на полуручное обслуживание своих баз.

Кто бы вы ни были - системный администратор, программист или бухгалтер.

Вот 8 причин, почему вам нужен Обновлятор:

  • Он умелый. И с легкостью автоматизирует любые операции сразу для всех ваших баз - архивацию (в том числе средствами СУБД MS SQL и Postgres), обновление, тестирование и многое другое. Вы забудете про рутину.
  • Он безопасный. Все операции над базами осуществляются через пакетный запуск платформы 1с (это её документированная возможность), поэтому все результаты работы полностью идентичны тому, как если бы вы делали всё вручную из конфигуратора.
  • Он универсальный. И одинаково хорошо работает как с файловыми, так и серверными базами 1С. При этом не важно какая у вас база - полностью типовая, доработанная или разработанная собственными силами с нуля. В обновляторе реализованы полезные возможности для каждого из этих случаев.
  • Он быстрый. Поддерживается многопоточное (параллельное) выполнение любых операций над базами.
  • Он облачный. И это гарантирует вам 100% защиту созданных архивов от шифровальщиков . Поддерживаются nas, ftp, ssh, webdav, mega.nz, onedrive, google drive, яндекс-облако и другие s3-совместимые хранилища.
  • Он осторожный. И рассчитан на самых различных пользователей. Это значит, что с его помощью испортить рабочую базу или остаться без копии после выполнения опасной операции практически невозможно.
  • Он технологичный. Поддерживаются такие технологии как обновление доработанных конфигураций, обновление из хранилища, обновление расширений , написание собственных скриптов для автоматизации.
  • Ему доверяют. Программа развивается и поддерживается с 2015 года, и в нашей стране с ней работают тысячи пользователей и сотни компаний (Кнопка, Systola, Крауд, OneTek, Смарт Офис, Технопарк Новосибирского Академгородка, Айтиматика, iTeamPro, Cloudray, Анком и многие другие).

  • скачает все нужные обновления с сайта 1С или подхватит уже установленные;
  • выгонит пользователей, запретит работу регламентных заданий на сервере, завершит зависшие сеансы;
  • сделает резервную копию базы;
  • выполнит обновление базы в пакетном режиме;
  • выполнит обработчики обновления;
  • пустит всех пользователей обратно.
  • сделает резервную копию базы (zip, dt или sql);
  • если вы захотите - зашифрует созданный архив вашим паролем;
  • если вы захотите - изменит расширение архива на заданное или случайное;
  • если вы захотите - запишет архив под произвольным пользователем системы;
  • если вы захотите - продублирует архив в любые другие папки, хранилища, облака;
  • удалит старые архивы, чтобы сохранить заданное вами количество дневных, недельных, месячных, квартальных и годовых копий.

Ответы на каверзные вопросы:

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

Это документированная возможность от самой 1с для автоматизации операций над базами, которая используется во всех решениях (в том числе от 1с) для администрирования баз.

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

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

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

Да, обновлятор умеет выполнять операции с базами, которые используют базовую платформу 1с.

Базовая платформа не позволяет выполнять внешнее подключение к базам, но обновлятор обходит это ограничение при помощи вот такого приёма.

Да, обновлятор поддерживает работу с серверными базами в полной мере.

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

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

И на протяжении этих 5 лет поддержки и разработки мне совместно с ними, кажется, удалось учесть все мыслимые и не мыслимые нюансы, связанные с операциями над серверными базами из обновлятора.

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

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

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

  • обновление множества однотипных баз
  • обновление с возможным затиранием доработок
  • обновление из хранилища
  • обновление расширений

Обновлятор выполняет операции над базами последовательно одну за другой.

И в некотором смысле это правильно, так как, например, попытка обновить базы одновременно в несколько потоков на среднестатистическом компьютере приведёт к тому, что система буквально "встанет колом" - производительность упрётся в жесткий диск и процессор - и такое параллельное обновление будет идти даже дольше чем обычное последовательное.

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

В этом случае я рекомендую многопоточное (параллельное) выполнение операций: ссылка.

Да, обновлятор умеет скачивать и устанавливать нужную версию платформы 1с при минимальном участии пользователя.

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

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

И это отсутствие качественных инструментов - настоящая беда для всей экосистемы 1С.

И если даже рассматривать только операцию обновления баз - становится ясно почему наличие таких инструментов просто жизненно необходимо для всех нас.

Помимо различного рода обновлений (и всего что с ними связано) обновлятор ещё умеет:

  • выполнять архивацию баз (zip, dt, sql) с защитой архивов от шифровальщиков и удалением старых архивов с сохранением нужного количества дневных, недельных, месячных, квартальных и годовых копий;
  • выполнять тестирование баз;
  • управлять расширениями в базах;
  • управлять регламентными заданиями в базах;
  • выполнять различные блокировки-разблокировки сеансов и регламентных заданий на сервере;
  • выполнять batch скрипты над базами;
  • выполнять скрипты на onescript;
  • чистить временные файлы (кэш) 1с;
  • загружать комплекты отчётности для БГУ;
  • менять формат баз и проверять их физическую целостность;
  • ещё с десяток операций, полезных в том или ином случае.

На данный момент (30 ноября 2017 года) не считая сторонних библиотек в обновляторе:

  • 97 модулей
  • 3 мегабайта кода
  • 70 тысяч строк

Полная таблица возможностей обновлятора:

Ответы на частые вопросы:

  • Подсказки по эффективной работе
  • Какие существуют ключи для запуска из командной строки?
  • Что означает номер версии в настройках базы?
  • Как настроить обновлятор для работы с базовой платформой 1С?
  • Я настроил обновлятор для работы с базовой платформой. Всё обновлялось, но теперь перестало. Почему?
  • Какой принцип работы Обновлятора-1С?
  • Какие типовые конфигурации поддерживаются программой Обновлятор-1С?
  • Как поведёт себя обновлятор с конфигурацией, в которую внесены изменения?
  • Что будет, если база в момент обновления будет открыта?
  • Где взять логин и пароль от сайта 1С?
  • У меня уже есть выкачанные обновления, как их подсунуть Обновлятору-1С?
  • Как восстановить базу из архива, созданного перед обновлением?
  • Наиболее частые причины, по которым не работает отправка отчётов на почту.
  • Что делать, если возникает следующая ошибка: не удалось подключиться к базе, скорее всего неверно указаны имя и пароль для базы.
  • Что делать, если возникает следующая ошибка: произошла попытка обновить не поддерживаемую конфигурацию.
  • Зачем нужна настройка любимых дней для базы?
  • Зачем нужны дополнительные параметры запуска для базы?
  • Как включить второй способ поиска обновлений на сервере 1С для базы и когда это нужно?
  • Что такое обработчики обновления, зачем они нужны и в каких случаях (и как) их лучше отключить?
  • Зачем может понадобиться настройка 'Применять обновления не раньше чем через N дней после их выхода'?
  • Зачем может понадобиться настройка 'Обновлять не более чем на N релизов за один запуск'?
  • Зачем может понадобится устанавливать пароль на изменение настроек программы?
  • Зачем может понадобится устанавливать ограничение работы программы по дате?
  • Зачем может понадобиться возможность автоматической выгрузки базы в последнюю папку обновления в формате dt?
  • Зачем может понадобиться возможность автоматической выгрузки файла конфигурации базы в папку обновления в формате 1cv8.cf?
  • Что означает возможность обновлять конфигурацию сразу на последний 1cv8.cf и можно ли её применять?
  • Что означает версия 1С при обновлении платформы?
  • Не удалось найти платформу 1С по шаблону.
  • Зачем нужна возможность переопределять логин и пароль от ИТС в расширенных параметрах обновления?
  • Зачем нужна возможность только скачивать обновления без их применения к самим базам?
  • Зачем нужна возможность делать резервную копию базы после каждого промежуточного обновления?
  • Расскажите о схеме обновления множества однотипных и изменённых баз, которые не обновляются автоматически.
  • Как отключить предупреждение об антивирусе?
  • Как настроить обновлятор для работы с OneScript?
  • О каких настройках диалога запуска идёт речь?
  • Как настроить для базы индивидуальный путь к папке с обновлениями и зачем это может быть нужно?
  • Что делать, если обновлятор не видит обновление, установленное на компьютер вручную?
  • Можно ли использовать обновлятор как portable программу (запускать с флешки на разных компьютерах)?
  • Как отключить восстановление базы к первоначальному состоянию при ошибке обновления?
  • Зачем нужна возможность устанавливать отдельный пароль на изменение ограничения работы программы по дате?
  • Решение проблем с com-библиотекой для внешнего подключения к базе.
  • Как указать администратора кластера для серверной базы?
  • Что означает "грязная копия"?
  • Как изменить папку для хранения архивов?
  • Как отключить резервную копию перед обновлением?
  • Как настроить количество резервных копий для базы?
  • Как обновить базу на следующую редакцию?
  • Зачем может понадобится строгая проверка рекомендуемой версии 1с при обновлении?
  • Список внешних ресурсов, к которым может обращаться обновлятор

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

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

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

Отзывы о программе

Калинкин Евгений (Нижний новгород)
Спасибо огромное за Обновлятор. Считаю ее вторым сотрудником в моем отделе. Действительно высвобождает уйму времени для других дел.

Алена (Санкт-Петербург)
Только став обновлять базы через него, я поняла, сколько же времени (драгоценного) я тратила впустую.

Николай Козятинский (Санкт-Петербург)
Очень качественный и удобный продукт. Обновил базу легко и быстро на 2 года релизов. Заметен творческий и оптимизаторский подход при разработке.

Денис (Химки)
Ввиду обслуживания организаций с большим количеством баз 1С, существенно разгрузил себя и повысил удовлетворённость клиентов. Уникальное решение по обновлению в своей гибкости и простоте.

Шатило Юрий
За 12 лет работы мы впервые можем забыть о постоянном обновлении нашей сотни информационных баз.

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

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

Итак. Программисты 80lvl скорее всего знают все и даже больше, чем описано в статье, поэтому эта публикация будет ориентирована в первую очередь на новичков. А так как у новичка скорее всего ни репутации и стартмани - все скрипты я не буду прикреплять, а выложу в статье.

Поехали. Предположим в вашей конфигурации есть некий документ, с 5 табличными частями. В СУБД (в нашем примере PosgreSQL, но все ниже сказанное справедливо и других СУБД) такой документ предстанет в виде 6 таблиц


Предположим вам необходимо добавить реквизит в табличную часть _document39_vt415, узнать какая именно табличная часть можно либо специальными обработками, либо просто посмотрев несколько записей из таблицы в самой СУБД. Что произойдет далее, точнее что сделает платформа 1С, она создаст копии всех 6 (!) таблиц документа и начнет копирование в них данных из старых таблиц - начнется реструктуризация. Процесс этот, мягко говоря, не быстрый. Почему я вообще пишу эту статью, потому что в моем случаи: количество документов (записей в _document39 было 1М) и записей в табличных частях 25М, процесс реструктуризации документа средствами 1С занял 48 часов. Так вот мы попытаемся обмануть платформу.

Продолжаем, добавляем реквизит в табличную часть в конфигураторе, у меня это число длинной 10, точность 0 (во время всех манипуляций его можно не закрывать), сохраняем, но не обновляем. Переименовываем все таблицы документа в pgAdmin или чем вы там пользуетесь (у меня это пара pgAdmin и EMS SQL Manager PostgreSQL), например _document39 в _document39_src


И создаем копии наших переименованных таблиц (пустые) с первоначальными именами, в нашем примере делаем пустую копию _document39_src с именем _document39.

Копии я создавал в EMS SQL Manager лишь потому, что в нем это проще, но можно и в pgAdmin. В нем надо в контекстном меню таблицы выбрать Скрипты - CREATE и в окне SQL редактора изменить имя таблицы на новое.

Если посмотреть в предприятии, у нас нет ни одного документа.

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

Смотрим какое имя получила новая колонка таблицы, которая соответствует новому реквизиту.


У меня это _fld1097. Возвращаемся к нашей исходной таблице, которую мы переименовали в _document39_src, добавляем новую колонку в нее


Ставим значение по умолчанию, здесь 0 и жмем ОК. Весь процесс занял около 1 часа (в 48 раз быстрее). После того как колонка создана, стираем значение по умолчанию и переименовываем таблицу обратно (у нас в _document39)

Запускаем предприятие и проверяем. Радуемся или плачем.

Итак, это мы добавили реквизит, рассмотрим теперь случай, если нам надо изменить тип реквизита, например, было число (5, 2), надо число (10, 4), или добавить индексов.

Тут есть два варианта.

Вариант первый. Создаем копии таблиц и заливаем в них данные из основной таблицы

SELECT * INTO _document39_copy FROM _document39; SELECT * INTO _document39_vt415_copy FROM _document39_vt415; SELECT * INTO _document39_vt431_copy FROM _document39_vt431; SELECT * INTO _document39_vt434_copy FROM _document39_vt434; SELECT * INTO _document39_vt437_copy FROM _document39_vt437; SELECT * INTO _document39_vt444_copy FROM _document39_vt444;

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

NSERT INTO _document39( _idrref, _version, _marked, _date_time, _numberpfix, _number, _posted, _fld556, _fld392rref, _fld393rref, _fld394, _fld395, _fld579, _fld396, _fld397, _fld398rref, _fld399, _fld400, _fld401rref, _fld1018rref, _fld403, _fld402rref, _fld404rref, _fld405, _fld538rref, _fld406, _fld407, _fld408rref, _fld409rref, _fld410rref, _fld411rref, _fld412rref, _fld413, _fld414) select * from _document39_copy; -- ~60min (1.5 M records) INSERT INTO _document39_vt431( _document39_idrref, _keyfield, _lineno432, _fld433rref) select * from _document39_vt431_copy; INSERT INTO _document39_vt434( _document39_idrref, _keyfield, _lineno435, _fld436rref) select * from _document39_vt434_copy; INSERT INTO _document39_vt437( _document39_idrref, _keyfield, _lineno438, _fld439rref, _fld440rref, _fld441, _fld442rref) select * from _document39_vt437_copy; INSERT INTO _document39_vt444( _document39_idrref, _keyfield, _lineno445, _fld446rref) select * from _document39_vt444_copy; --3 min INSERT INTO _document39_vt415( _document39_idrref, _keyfield, _lineno416, _fld426rref, _fld423, _fld419rref, _fld421, _fld420, _fld536, _fld425, _fld418, _fld422, _fld428rref, _fld427rref, _fld417rref, _fld429, _fld424) select * from _document39_vt415_copy; --16588297 строк, 18.5 h

Запускаем предприятие и проверяем. Радуемся или плачем.

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

COPY BINARY _document39 TO 'e:/_document39'; COPY BINARY _document39_vt431 TO 'e:/_document39_vt431'; COPY BINARY _document39_vt434 TO 'e:/_document39_vt434'; COPY BINARY _document39_vt437 TO 'e:/_document39_vt437'; COPY BINARY _document39_vt444 TO 'e:/_document39_vt444'; COPY BINARY _document39_vt415 TO 'e:/_document39_vt415';

где 'e:/_document39' это файл в корне диска е.

Скрипт загружающий данные обратно

COPY BINARY _document39 FROM 'e:/_document39'; COPY BINARY _document39_vt431 FROM 'e:/_document39_vt431'; COPY BINARY _document39_vt434 FROM 'e:/_document39_vt434'; COPY BINARY _document39_vt437 FROM 'e:/_document39_vt437'; COPY BINARY _document39_vt444 FROM 'e:/_document39_vt444'; COPY BINARY _document39_vt415 FROM 'e:/_document39_vt415';

На этом, пожалуй все.

Как видно, процесс это все равно долгий (около 18 часов у меня). Что мы получили, около 19 часов против 48 при изменении типа реквизита и добавлении индексов, и около 1 часа против 48 часов при добавлении реквизита.

PS. У меня есть подозрение, что на других СУБД реструктуризация средствами платформы будет быстрей. К тому же у меня стоял старый PosgresSQL, еще 8.2.4-3.1

АКЦИЯ ГОДА

Читайте также: