Часто приходится видеть недоумение пользователей по поводу медленной работы конфигураций на базе 1С 7.7 в сетевом варианте. В простейшем случае организация работы в сети заключается в том, что на компьютере, где находятся данные, открывается доступ к папке с базой по сети, затем на остальных компьютерах настраивается подключение к этой сетевой папке. Корень проблемы в этом случае в том, что когда клиентский компьютер открывает базу по сети он запрашивает доступ сразу ко всем файлам базы, т.е. для стандартной Бухгалтерии это будет около 250-ти файлов. Далее, при выполнении расчета остатков или оборотов в отчете или при проведении документа, клиент закачивает себе полностью файлы данных для выполнения расчетов. Именно эти манипуляции с файлами сильно тормозят работу приложения, особенно это заметно в случаях с расчетными числами в списке справочника – например столбец с остатком товара. Что можно сделать?
Самый действенный способ увеличения быстродействия – перевод клиентов в режим использования терминального сервера. Для этого на центральном компьютере, на котором находится база данных, должен быть установлен сервер терминалов, остальные компьютеры подключаются к серверу используя программу-клиент. Кроме увеличения быстродействия есть еще одна особенность такого формата работы: возможность установить один мощный сервер и использовать на рабочих местах дешевые компьютеры, от которых требуется только запуск клиентской программы. Клиентский компьютер выглядит примерно так:
На сайте, откуда взята эта фотография, такие устройства предлагаются по ценам около $40 за штуку. Такой компьютер включается, получает сетевой адрес, запускает урезанный вариант операционной системы обычно на базе Linux, запускает клиент сервера терминалов и предлагает войти на сервер. Далее пользователь работает как обычно, в среде Windows. С точки зрения быстродействия такой способ наилучший по той причине, что каждый клиент фактически работает с данными локально, на сервере, в то время как по сети передаются только команды мыши, клавиатуры и транслируется картинка на монитор. Конечно, устанавливать новые компьютеры необязательно, если уже есть рабочие места с установленной Windows – в стандартной поставке уже есть клиент сервера терминалов, он называется “Подключение к удаленному рабочему столу”.
Посоперничать с терминальным режимом может только тонкая настройка программы: добиться нормальной скорости работы программы можно проанализировав код, выявив слабые места, однако скорее всего при этом придется отказываться от удобств – не отображать остатки в динамических списках, не раскрашивать строки, не отображать расчетные цены и т.п. Иногда можно решить проблему полностью изменив программу, например, написав для отдельных пользователей отдельный рабочий модуль: отдел в магазине работает со своим складом и ведет отпуск товара, можно в начале дня сформировать остатки для этого отдела, сохранив их во временной таблице, отдел в течении дня оформляет документы, которые в своих расчетах используют и изменяют эти временные остатки и не производят расчеты в основной базе, в конце дня результат работы перегружается в основную базу и окончательно проводится по учетным регистрам. Такие методы требуют других затрат – работы программиста. Еще один метод полного разделения базы стандартными средствами – распределенные базы. Но в обоих случаях теряется иногда очень критичная для полноценной работы составляющая – достоверность оперативных данных. При разделении базы на части не будет видна реальная картина учета пока отдельные части не будут синхронизированы.
Нельзя не упомянуть еще один действенный способ – изменить формат хранения данных поместив данные на SQL сервер. Это решение дорогое, однако без него не обойтись если база объемная, количество пользователей большое и интенсивно вводятся новые документы. Одним из немаловажных плюсов использования SQL сервера можно считать защищенность данных. К примеру, возможность защитить базу от копирования любопытными пользователями – в обычном файловом варианте установить такую защиту невозможно.
Ну, а может вам просто нужно провести замену сетевого оборудования? Заменить сетевые платы и хабы на поддерживающие скорость передачи данных до 1 Гигабита/с. Однако учтите, что это решение будет временным, до той поры пока объем данных не вырастет и придется искать новое решение. Хотя, я знаю клиентов, которые делают “урезание” базы каждые 2-3 месяца.
На практике обычно приходится применять некоторую комбинацию приведенных решений: необходимо и программу проверить, и убедиться, что сеть в порядке, и сервер проверить.