Дуже багато часу програміст витрачає на оновлення однотипних (і не дуже) конфігурацій, позбавляємося від цього, і час, що звільнився витрачаємо на щось більш цікаве.
Працюючи в франчайзі зіткнувся з тим, що багато часу витрачається на те, щоб оновити нетипові конфігурації (хоч їх і не сильно змінили), особливо в звітний період. Бухгалтеру потрібно здавати звіти, оновлення тільки вийшло і всім треба ставити терміново, знайоме, думаю, багатьом. І ось одного разу якось все набридло, і став замислюватися, а як би їх автоматично оновлювати. Насамперед виділив групи однотипно змінених конфігурацій, вийшло близько 10 груп. Створив файли оновлення та постачання (матеріалів купа, не буду описувати). Для досвіду вибрав по базі з кожної групи і поставив їх на підтримку вже своєї поставки (на кшталт так це називається, взяв файл поставки того ж релізу, що і конфігурація, і завантажив його). Ось тепер наші конфігурації "типові", і тепер нам треба оновити вже не. цять конфігурацій, а всього 10, і зробити копії файлів оновлення. І тепер будь-хто може оновлювати як типові. Йдемо далі.
Хочеться, щоб при відкритті конфігурація перевіряла чи є оновлення, і сама встановлювала їх. Виникли питання:
1) де зберігати файли оновлень
2) як їх скачувати
3) як організувати автообновление конфігурації
2) Спочатку спробував завантажувати файл засобами 1С, але програма при цьому зависала до закінчення завантаження файлу. Вирішив зробити через bat файл, але при його запуску висіло вікно командного панелі, вирішено було його приховати, написали скрипт. Протестувавши завантаження файлу, неможливо було зрозуміти, коли він завантажився повністю. Тестуючи на Windows XP, вирішив перевіряти завантаження файлу за розміром файлу. Вже не пам'ятаю чому, але розмір файлу вказав в імені файлу, в результаті ім'я файлу оновлень стало виглядати приблизно так 2.0.64.5_ 12586125 .cfu.
3) Оновлення зробив в пакетному режимі (частина коду взяв тут //infostart.ru/public/147253/. Дякую!). Пізніше з'явилася ідея використовувати типовий механізм оновлення конфігурацій, підсунути йому свій файл оновлення, але руки так і не дійшли.
Загальний порядок вийшов такий:
У процедурі ПріНачалеРаботиСістеми перевіряємо наявність поновлення:
У відкривається формі (ЕтотОб'ект.ПолучітьФорму ( "Форма"). Відкрити () ;. код був в модулі обробки, в процедурі прочинені форми підключаємо оброблювач очікування. Вона перевіряє закінчення завантаження файлу і відкриває наступну форму:
Наступні форми перевіряють активні сеанси і, якщо є такі, просить їх закрити. Якщо активних сеансів немає, формує bat файл для оновлення, запускає його і закриває програму. Процедура формування bat файлу:
1) Блокує скачування брендмауер, Kaspersky, Avira.
2) При наявності 2 мережевих підключень завантаження не відбувається.
3) Потрібна участь користувача.
4) Іноді процес оновлення конфігурації не відбувається, користувач бачить повідомлення "конфігурація бази даних не відповідає збереженій конфігурації" і дзвонить вам.
5) Паранормальні випадки.
Перевіряв тільки на файлових версіях. Операційні системи: Windows XP, Windows 7, Windows 8, Windows Vista. Код відкритий, обробку необхідно трохи змінити (вирішити, де зберігати параметри і прописати їх отримання). З введенням і настроюванням автоматичного оновлення. Оновлення готую у вільний час (іноді пізно ввечері) і Терера, зробивши 10 файлів оновлення, оновлюємо ними більше 250 клієнтів. Ми не прив'язані до тимчасових рамок роботи бухгалтера.