1С: Предприятие 7.x

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

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
  • Хранитель_врат
    Я тоже не люблю 1С. Но какое отношение конфигуратор имеет к SQL.
    На тему SQL. При 1500 файлах ваш любимый SQL сдохнет так же как захлебнуться рабочие станции на блокировках. При бездарном построении Базы Данных можно угробить любой инструмент автоматизации
  • Хранитель_врат
    Я просто ненавижу 1С тупо зделана, но у меня 30 компов в сети и все юзают 1С,
    проблемма с трафиком сети вылезает внатуре, да и сервер грузится. Денег на
    хороший сервер и переход к SQL начальству жаль, типа пустые траты, абухгалтера и менеджеры
    стонут!!!
  • Хранитель_врат
    Что касается механизма блокировок в файловых версиях продуктов 1С, то у меня есть основания полагать, что все обстоит более печально, чем считает автор. Используются не только блокировки на запись, но и на чтение.
    Что до 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- версиях таки сщественно ослабляется.