1С: Предприятие 7.x
Выбор системы оперативного и бухгалтерского учета на предприятии похож на выбор спутника жизни. Неправильный выбор очень портит жизнь, а переход на новый программный продукт тяжел и дорог. У одного моего клиента бухгалтерия использовала систему 1С:Предприятие 7.7. Это была файл-серверная версия с присущими всем файл-серверным базам данных минусами. Самый существенный из них - это механизм блокировок.
С помощью этого механизма поддерживается целостность базы данных. Работает это так: перед записью информации в файл клиентская программа блокирует его для того, чтобы никто другой в этот же момент не смог внести изменения. После окончания записи блокировка снимается. Для 3-4 одновременно работающих пользователей такой механизм работает хорошо. Когда пользователей 6 и больше и каждый открывает на сервере по 1500 файлов (именно столько открывалось файлов на каждого пользователя при работе в 1С - в этом можно было убедиться выбрав в Control Panel пункт Server), то ошибки типа error locking file начинают очень мешать работе. Избавиться от них невозможно, если база данных файл - серверная, т.е. вся БД - простой набор файлов, которые программа, запущенная на рабочей станции открывает "как умеет".
Какой выход? В фирме 1С разработали т.н. SQL - версию своей программы. Принцип ее работы следующий: на сервере, работающим под управлением Windows NT Server 4.0 или Windows 2000 Server устанавливается Microsoft SQL Server. SQL - сервер - это программное обеспечение, которое выполняет одну функцию - принимает от клиента SQL - запрос, производит его выполнение и возвращает клиенту результат выполнения этого запроса. Чтобы понять, что такое SQL - запрос нужно изучить язык запросов SQL и теорию реляционных баз данных. Это слишком большая тема, чтобы описывать ее здесь.
Чем такой способ лучше?
- Во-первых, файлами с данными управляют не все подряд, а только одна программа Microsoft SQL Server, который заботится об их сохранности, проверяет не повреждены ли, а если повреждены - пытается восстановить.
- Во вторых, запрос от клиента к серверу чрезвычайно короткий - SQL - предложение занимает максимум несколько сотен символов. Вот пример SQL - запроса: "SELECT id,name FROM persons WHERE id=2"
- В третьих, как результат выполнения этого запроса клиенту передается только информация, которая соответствует этому запросу и ничего лишнего. Клиентской программе не надо теперь рыться в тысячах файлах в поисках необходимой информации.
После перехода на SQL - версию 1С:Предприятия программа стала выдавать в несколько раз меньше ошибок. А то, что у всех бухгалтеров фирмы я в свое время поставил Windows 2000 вместо Windows 98 вообще свело их появление практически к нулю.
Недостатки системы 1С:Предприятия
В системе 1С:Предприятие существует понятие Конфигурации. В отличие от общепринятого, в системе 1С Конфигурация включает в себя все макеты всех документов, которые используются при ведении бухучета, программные выполняемые модули, содержащие код на языке 1С, макеты журналов и все-все-все. В сущности, только конфигурация определяет все функциональные возможности программы. "Конфигурация - это все". Когда Вы покупаете программу, Вы покупаете т.н. стандартную конфигурацию, которая подходит для среднестатистической небольшой конторы. Если в организации есть свои особенности учета, то эту конфигурацию нужно дорабатывать. Это делают программисты из фирм-партнеров 1С. Берут -20 за час работы. Для серьезных изменений нужно от 50 часов. Но это еще не все. Законодательство постоянно меняется - меняются формы документов, меняются порядки расчета налогов, налогооблагаемой базы и т.д. Все эти изменения отражаются в свежих обновлениях, которые выпускает 1C:
НО! Эти обновления, кроме внешних отчетов, почти всегда - полнокровные СТАНДАРТНЫЕ конфигурации без ваших внесенных за такие деньги изменений. И для того, чтобы обновить Вашу конфигурацию, нужно либо внести в новую все изменения, которые были сделаны для старой (стоимость см.выше), либо позволить специалисту произвести т.н. слияние конфигураций, при котором две конфигурации сравниваются и определяется, какие изменения принимать, а какие нет. Это сложный процесс, удачное завершение которого гарантировать невозможно, особенно, если в конфигурацию вносилось множество изменений. Честно говоря, это просто убивает.
Зато дает работу многочисленным партнерам фирмы 1С.
Комментарии
12На тему SQL. При 1500 файлах ваш любимый SQL сдохнет так же как захлебнуться рабочие станции на блокировках. При бездарном построении Базы Данных можно угробить любой инструмент автоматизации
проблемма с трафиком сети вылезает внатуре, да и сервер грузится. Денег на
хороший сервер и переход к SQL начальству жаль, типа пустые траты, абухгалтера и менеджеры
стонут!!!
Что до SQL, то ИМХО автор сам не знает толком, что это такое и как это реализовали 1С- ники. Давайте глянем еще раз на приведенный автором пример запроса:
SELECT id,name FROM persons WHERE id=2
Какого рожна выбирать в запросе id, если во фразе WHERE id приравнен константе?
SELECT 2,name FROM persons WHERE id=2
Результат этого запроса ничем не будет отличаться от первого. А этот запрос
SELECT name FROM persons WHERE id=2
не будет в каждой строке возвращать 2, но по сути это и не нужно, поскольку уже в самом запросе мы ограничили возможные значения id единственным значением. Вопрос на засыпку: какой из этих запросов потребует меньше ресурсов от сервера и обеспечит меньший трафик между сервером и клиентом?
Г-да разработчики из 1С в подобного рода "оптимизации" продвинулись еще дальше и предпочитают (по крайней мере в типовых конфигупациях) оперировать запросами вида
SELECT * FROM table
, пораждающими трафик вполне соизмеримый с файловыми БД, а затем разгребать всю вываленную такими запросами кучу информации на клиенте.
Справедливости ради следует заметить, что проблема блокировок в SQL- версиях таки сщественно ослабляется.