10.10.2024 Егор Баукин 7382
Обновление тонких клиентов 1С через Apache и PHP

Содержание:



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


1. Преимущества автоматического обновления 1С

 

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

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

Повышение безопасности: Своевременное применение патчей и обновлений снижает риски уязвимостей.

Повышение стабильности работы системы: Обновления часто включают исправления ошибок и оптимизацию производительности.   


2. Механизм обновления тонких клиентов 1С

 

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


Как работает обновление в 1С:

1. Чтение конфигурации: При запуске тонкий клиент обращается к файлу 1cestart.cfg для чтения параметров.

2. Проверка параметров обновления: Если в конфигурации установлено AutoUpdate=yes, клиент инициирует проверку обновлений.

3. Запрос к серверу обновлений: Клиент обращается по адресу, указанному в UpdateURL, передавая текущую версию.

4. Сравнение версий 1С: Сервер сравнивает версию клиента с доступной на сервере.

5. Предоставление обновления: Если на сервере есть более новая версия, клиент скачивает ее и запускает процесс обновления.

6. Установка обновления 1С: После скачивания клиент автоматически устанавливает обновление и перезапускается.


Роль Apache и PHP в обновлении:

Apache: Выступает в роли веб-сервера, обрабатывающего запросы от тонких клиентов.

• PHP-скрипт: Отвечает на запросы клиента, сравнивает версии и предоставляет обновления при необходимости.   


3. Необходимые компоненты 1С: Предприятие

 

Веб-сервер Apache: Для обработки HTTP-запросов от тонких клиентов.

Интерпретатор PHP: Для выполнения логики сравнения версий и передачи обновлений.

Дистрибутивы обновлений тонкого клиента 1С: Последние версии тонкого клиента 1С.


Шаг 1: Установка и настройка Apache

Установка Apache и PHP

Установите Apache и PHP на сервер, который будет использоваться для распространения обновлений.

Для Linux (Ubuntu/Debian):


sudo apt-get update

sudo apt-get install apache2 php libapache2-mod-php


Для Windows:

Скачайте и установите XAMPP, который включает Apache и PHP.


Настройка виртуального хоста

Создайте файл конфигурации 1С для вашего виртуального хоста.

Linux:

Создайте файл /etc/apache2/sites-available/update.conf с содержимым:


<VirtualHost *:80>

    ServerName updates.yourdomain.com

    DocumentRoot /var/www/updates

    <Directory /var/www/updates>

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>


Активируйте виртуальный хост и перезапустите Apache:


sudo a2ensite update.conf

sudo systemctl reload apache2


Windows (XAMPP):

Редактируйте файл httpd-vhosts.conf, добавив:


<VirtualHost *:80>

    ServerName updates.yourdomain.com

    DocumentRoot "C:/xampp/htdocs/updates"

    <Directory "C:/xampp/htdocs/updates">

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>


Перезапустите Apache через панель управления XAMPP.


Шаг 2: Подготовка директории обновлений

Создайте структуру каталогов для хранения скриптов и файлов обновлений.


Linux:

sudo mkdir -p /var/www/updates/{scripts,files}

sudo chown -R www-data:www-data /var/www/updates


Windows:

Создайте папку C:\xampp\htdocs\updates и внутри нее папки scripts и files.


Шаг 3: Разработка PHP-скрипта для обновлений

Создайте файл update.php в директории scripts, который будет отвечать на запросы от тонких клиентов 1С.


Содержание update.php:

<?php

// Получаем версию клиента из параметров запроса

$clientVersion = $_GET['version'] ?? '';

 

// Указываем актуальную версию тонкого клиента

$latestVersion = '8.3.20.1686';

 

// Функция для сравнения версий

function versionGreaterThan($ver1, $ver2) {

    return version_compare($ver1, $ver2, '>');

}

 

if (!$clientVersion) {

    http_response_code(400);

    echo 'Не указана версия клиента.';

    exit;

}

 

if (version_compare($clientVersion, $latestVersion, '<')) {

    // Путь к файлу обновления

    $filePath = __DIR__ . '/../files/1C_ThinClient_' . $latestVersion . '.msi';

 

    if (file_exists($filePath)) {

        // Отправляем файл обновления клиенту

        header('Content-Type: application/octet-stream');

        header('Content-Disposition: attachment; filename="1C_ThinClient_Update.msi"');

        header('Content-Length: ' . filesize($filePath));

 

        // Выводим содержимое файла

        readfile($filePath);

    } else {

        http_response_code(404);

        echo 'Обновление не найдено.';

    }

} else {

    echo 'Ваш клиент актуален.';

}

?>


Разбор скрипта:

Получение версии клиента: Скрипт получает версию клиента из параметра запроса version.

Сравнение версий: Используется функция version_compare для определения, нужна ли обновление.

Отправка обновления: Если требуется обновление, скрипт отправляет клиенту файл MSI для установки.

Обработка ошибок: Скрипт возвращает соответствующие HTTP-коды и сообщения об ошибках при необходимости.


<a name="step4"></a>


Шаг 4: Размещение файлов обновлений

Скопируйте установочный файл тонкого клиента 1С: Предприятие в директорию files.


Linux:

sudo cp 1C_Enterprise_ThinClient_8.3.20.1686.msi /var/www/updates/files/

sudo chown www-data:www-data /var/www/updates/files/1C_Enterprise_ThinClient_8.3.20.1686.msi


Windows:

Скопируйте файл 1C_Enterprise_ThinClient_8.3.20.1686.msi в C:\xampp\htdocs\updates\files\.

Важно: Убедитесь, что имя файла в скрипте update.php совпадает с фактическим именем файла.


Шаг 5: Настройка тонких клиентов 1С: Предприятие

На компьютерах пользователей необходимо настроить файл конфигурации 1cestart.cfg.


Параметры конфигурации:

[Options]

AutoUpdate=yes

UpdateURL=http://updates.yourdomain.com/scripts/update.php


AutoUpdate: Включает автоматическое обновление клиента.

UpdateURL: Указывает URL для проверки обновлений. Этот адрес должен быть доступен клиенту и вести к вашему скрипту update.php.


Расположение файла 1cestart.cfg:

Windows: Обычно находится в папке установки тонкого клиента, например, C:\Program Files (x86)\1cv8\conf\1cestart.cfg.

Linux: Файл может находиться в /etc/1C/1cestart.cfg или в домашней директории пользователя.


Альтернативный способ настройки:

Вы можете использовать параметры командной строки при запуске тонкого клиента:

1cv8.exe ENTERPRISE /S"server_name\base_name" /AutoUpdate /UpdateURL"http://updates.yourdomain.com/scripts/update.php"


Шаг 6: Тестирование обновления

1. Имитируйте устаревшую версию клиента:

• Временно измените версию клиента в 1cestart.cfg на более старую.

• Например, установите Version=8.3.20.1641.

2. Запустите тонкий клиент и убедитесь, что он:

• Обращается к вашему серверу обновлений.

• Скачивает обновление.

• Запускает процесс установки обновления.

3. Мониторинг процесса:

• Проверьте логи Apache и PHP на сервере обновлений.

• Убедитесь, что запросы поступают и обрабатываются корректно.

4. Проверка обновления:

• После обновления клиент должен иметь версию 8.3.20.1686.

• Повторный запуск клиента не должен инициировать обновление.


Шаг 7: Обеспечение безопасности

Включение HTTPS

Для защиты передаваемых данных следует использовать HTTPS.


Получение SSL-сертификата:

• Используйте Let's Encrypt для получения бесплатного сертификата.

• Установите сертификат на ваш веб-сервер.


Настройка Apache для HTTPS:

<VirtualHost *:443>

    ServerName updates.yourdomain.com

    DocumentRoot /var/www/updates

    SSLEngine on

    SSLCertificateFile /path/to/fullchain.pem

    SSLCertificateKeyFile /path/to/privkey.pem

    <Directory /var/www/updates>

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>


Ограничение доступа

Ограничьте доступ к серверу обновлений по IP или настройте аутентификацию.


Ограничение по IP:

<Directory /var/www/updates>

    Require ip 192.168.1.0/24

</Directory>


Настройка аутентификации:

Создайте файл .htpasswd и настройте доступ.


<Directory /var/www/updates>

    AuthType Basic

    AuthName "Restricted Access"

    AuthUserFile /etc/apache2/.htpasswd

    Require valid-user

</Directory>


Дополнительные возможности:

Логирование обновлений

Добавьте в скрипт update.php ведение журнала обращений для мониторинга и анализа.

// Логирование


// Логирование

$logEntry = sprintf(

    "[%s] IP: %s - Client version: %s\n",

    date('Y-m-d H:i:s'),

    $_SERVER['REMOTE_ADDR'],

    $clientVersion

);

file_put_contents('/var/log/update_log.txt', $logEntry, FILE_APPEND);


Уведомления администраторам

Настройте отправку уведомлений при возникновении ошибок.


if (!file_exists($filePath)) {

    // Отправка уведомления администратору

    mail('admin@yourdomain.com', 'Ошибка обновления', 'Файл обновления не найден');

 

    http_response_code(404);

    echo 'Обновление не найдено.';

    exit;

}


Поддержка нескольких версий

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


// Получаем архитектуру ОС (x86 или x64)

$clientArch = $_GET['arch'] ?? 'x86';

 

// Определяем имя файла обновления

$fileName = sprintf('1C_ThinClient_%s_%s.msi', $latestVersion, $clientArch);

 

// Остальной код остается прежним


Интеграция с сервером 1С

Можно настроить автоматическое обновление тонких клиентов при обновлении платформы на сервере 1С.

Скрипт обновления платформы: После обновления сервера копируйте новую версию клиента в директорию обновлений.

Обновление latestVersion в скрипте: Автоматически обновляйте переменную $latestVersion в update.php.


Заключение:

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


Основные преимущества такого подхода:

Автоматизация процесса обновления: Пользователи всегда работают на актуальной версии клиента без их участия.

Снижение ИТ-рисков: Исключаются ситуации, когда разные рабочие места работают на разных версиях клиента.

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


Рекомендации:

Тестирование: Перед внедрением в рабочую среду протестируйте обновление на нескольких компьютерах.

Документация: Подготовьте инструкции для пользователей на случай возникновения вопросов.

•  Обратная связь: Собирайте отзывы от пользователей для улучшения процесса обновления.


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




Благодарим за внимание! Надеемся, что эта статья поможет вам настроить эффективную систему обновления тонких клиентов 1С.

    

Специалист компании ООО "Кодерлайн"

Егор Баукин

 

Наши проекты

ООО «Иви.ру»
ООО «Иви.ру»

Отрасль:
Медиаиндустрия

Внедренное типовое решение:
1С:Управление корпоративными финансами

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

Автоматизация документооборота в компании ООО "Ликард"
ООО «Ликард» (ОАО ЛУКОЙЛ)

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:Документооборот КОРП

- Отказ от бумажного документооборота, от громоздких систем на базе офисного...

Автоматизация контроля исполнительской дисциплины на базе ПП «1С:Документооборот 8 ПРОФ»
ООО «ФСК Лидер»

Отрасль:
Строительство и девелопмент

Внедренное типовое решение:
1С:Документооборот 8 ПРОФ

- Делопроизводство;
- Учет и хранение документов;
- Учет и контроль исполне...

Внедрение «1С:Зарплата и управление персоналом 8 КОРП» в компании «ПБК»
ООО «Партнер Бухгалтер Консультант»

Отрасль:
Бухгалтерские услуги

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Интеграция продукта с базой данных оперативного учета Axapta;
- Доработка фу...

ООО "СЖД"
ООО "СЖД"

Отрасль:
Торговля, склад, логистика, транспорт

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Расчет зарплаты
Подбор кадров
Кадровый учет
Анализ кадрового состава...

1с-РАРУС МСК
1с-РАРУС МСК

Отрасль:
Разработка компьютерного программного обеспечения

Внедренное типовое решение:

- Совместная работа по внедрению разных решений, в том числе «1С:ERP Управление...

ООО «ПКП КАБЭЛЕКТРОСНАБ»
ООО «ПКП КАБЭЛЕКТРОСНАБ»

Отрасль:
Производство кабельной продукции

Внедренное типовое решение:
1С:Управление небольшой фирмой 1.6

- Оформление заказов покупателей;
- Управление складскими запасами;
- Ана...

Автоматизация кадрового учета на базе ПП "1С:Зарплата и управление персоналом" в ТД НМК
ООО «Торговый дом Нальчикский молочный комбинат»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Кадровый учет;
- Расчет зарплаты;
- Регламентированная отчетность;
- А...

Доработка конфигурации Заказчика «1С:Управление строительной организацией»
ЗАО «Стройтрансгаз»

Отрасль:
Проектирование

Внедренное типовое решение:
1С:Управление строительной организацией

Взаиморасчеты с поставщиками;
- Оформление заказов поставщикам;
- Склад ...

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

Внедренное типовое решение:
1С:Управление холдингом

- Зафиксировали процессы по блокам бухгалтерского, налогового учета, казнач...

ООО «Еврорадиаторы»
ООО «Еврорадиаторы»

Отрасль:
1С:ERP 2.4

Внедренное типовое решение:

Специалисты «Кодерлайн» помогли перенести базу из текущей системы «1С:ERP 2.2» ...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО «Союз Три» (Кондитерский дом Renardi)
ООО «Союз Три»

Отрасль:
Производство

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Бухгалтерский учет
- Банк и касса
- Расчеты с контрагентами
Налоговый ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение