ADG Оставить заявку
Блог Интеграции 4 мин чтения

1С в терминале: филиалы работают через ADSL, принтеры продолжают воевать

Переносим 1С для филиалов в терминальную среду на Windows Terminal Server: скорость через ADSL выросла, нагрузка на канал упала. Настройка сессий и классические проблемы с принтерами в терминале.

Контекст момента

терминальная публикация приложений массово приходит в корпоративную практику

Задача пришла стандартная: у клиента головной офис в городе и три филиала, до каждого - ADSL. В головном офисе стоит 1С с центральной базой, в филиалах нужно работать в той же базе. До этого пробовали подключаться по сети напрямую - файловая 1С через тонкий канал это нечто особенное: на проводке постоянно гонялся весь файл индексов туда-обратно, при любом действии пользователя. Интерфейс открывался за минуту. Провод гудел. Бухгалтер из филиала звонила каждые полчаса.

Решение лежало на поверхности: поднять терминальный сервер в головном офисе и пустить туда филиалы. В терминале 1С выполняется на самом сервере, по каналу гуляют только нажатия клавиш и картинки экрана. Нагрузка на ADSL падает в разы - это не теория, это физика протокола.

Что поставили. Windows 2000 Server с Terminal Services. Citrix MetaFrame поверх - клиент хотел публикацию отдельных приложений, а не полноценный рабочий стол целиком, и Citrix это умеет аккуратнее, чем голый RDP. У каждого пользователя из филиала в браузере или через тонкий клиент открывается ровно одна программа - 1С. Всё остальное ему не видно и не мешает.

Настройка сессий потребовала внимания к нескольким вещам.

  • Количество одновременных сессий надо считать честно: на каждого активного пользователя уходит свой кусок RAM, и если не выставить лимиты, сервер спокойно набирает висящие сессии от людей, которые зашли утром, ушли обедать и забыли нажать выход. Поставили тайм-аут отключения простаивающей сессии - 30 минут, и тайм-аут сброса отключённой - два часа. После этого сервер перестал пухнуть к вечеру.
  • Профили и права. Каждый пользователь получил собственный профиль на сервере, папку TEMP на локальном диске сервера, права только на свою папку и на 1С. Общий рабочий стол убрали - незачем. Административные права у них, разумеется, нет.
  • Версия 1С. Установили одну копию 1С на сервер, все пользователи работают с ней. Это принципиально отличается от сценария «у каждого своя установка 1С на своём компьютере». Обновить конфигурацию теперь нужно один раз, не в каждом филиале отдельно.

По каналу стало тихо. Там, где раньше ADSL-линия стонала от постоянной пересылки файлов базы, теперь скромный RDP/ICA-трафик. Пользователь в филиале открывает накладную - и видит её мгновенно, потому что 1С на сервере давно её уже открыла, а по воздуху пришёл только снимок экрана.

Теперь про принтеры. Это отдельная история. В терминальной среде печать - хронически больное место. Пользователь сидит на сервере, но распечатать хочет на принтере, который стоит рядом с ним физически. Terminal Services умеет пробрасывать клиентские принтеры в сессию - это называется printer redirection. Звучит просто.

На практике выходит вот что. Сервер должен знать драйвер для каждого принтера каждого клиента. В филиалах принтеры разные: у кого HP LaserJet 1200, у кого Lexmark, у кого совсем экзотика. Terminal Services пытается автоматически установить драйвер - не всегда получается, иногда ставит «похожий» и принтер работает криво: шрифты съезжают, служебные строки не там, иногда вообще ничего. У одной бухгалтера акты выходили с кодировкой будто из 1990-х.

Решили это двумя способами в зависимости от ситуации:

  • Для принтеров, у которых есть нормальный Windows-драйвер - установили драйверы централизованно на терминальном сервере заранее, руками, до первого подключения пользователей. Принтер проброшен - сервер узнал его - всё работает.
  • Для одного совсем странного аппарата поставили на клиентской машине в филиале PDF-драйвер, настроили его как принтер по умолчанию в сессии, а локально поставили что-то вроде PDF-принт-сервера. Не изящно, но работает.

Отдельно: в Citrix с этим чуть проще, потому что Citrix Universal Printer Driver умеет печатать через практически любой локальный принтер без установки родного драйвера на сервер. Не идеально, но стабильнее голого RDP-пробрасывания.

Что получилось в итоге. Три филиала, каждый работает в 1С как будто сидит в головном офисе. Никакой гонки файлов по каналу. Обновление базы и конфигурации - один раз в одном месте. Сервер стоит, сессии крутятся, бухгалтер из дальнего филиала перестала звонить с жалобами на зависания.

Принтеры - вопрос открытый. Настроить можно почти всё, но каждый новый принтер в новом филиале - это отдельная итерация. Мы это честно проговариваем с заказчиком при передаче на постоянное сопровождение: печать в терминальной среде это не «один раз настроил и забыл», это небольшой операционный хвост, который будет тянуться при каждой замене оборудования у пользователей.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.