1С Предприятие 7.7 + PostgreSQL. Реально? Да!

  • Автор:

1c_postgresql.pngАктуальной проблемой использования 1С Предприятия 7.7 для SQL является практическая невозможность вписать ее в современную IT инфраструктуру. Не менее серьезные затруднения возникают и при попытке лицензирования пиратских версий. Основной камень преткновения  - возможность официальной работы только с SQL Server 2000. Однако выход есть: компания Etersoft разработала транслятор запросов MS SQL в запросы PostgreSQL, что позволяет заменить дорогой и устаревший SQL Server 2000 бесплатным Postgre. Насколько удобно и надежно такое решение мы решили рассмотреть в данной статье.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Мы не будем заострять особого внимания на проблемах использования SQL версии 1С Предприятие 7.7, они и так всем известны. Это невозможность полноценной работы в среде Windows 7 (Vista) / Server 2008 и высокая стоимость SQL сервера и лицензий к нему в случае лицензирования. Однозначно рекомендовать переход на 1С Предприятие 8 не всегда представляется возможным, зачастую конфигурации довольно сильно переписаны под особенности конкретного предприятия и их адаптация к "восьмерке" требует довольно серьезных затрат, как финансовых, так и временных (надо заново доработать конфигурацию, отладить и протестировать). Компромиссным решением в данной ситуации будет использование 1С Предприятия совместно с PostgreSQL, для этого мы рекомендуем использовать продукт SELTA@Etersoft. Данный продукт является коммерческим, однако его стоимость значительно ниже стоимости SQL Server от Microsoft и лицензий к нему, для оценки целесообразности перехода можно запросить полнофункциональную пробную версию на сайте компании

Итак, что нам понадобится? Собственно SELTA@Etersoft и файл лицензии к ней, а также PostgreSQL в редакции Etersoft. В качестве платформы мы будем использовать Windows Server 2008 R2 и проверим работу программы с использованием клиентских компьютеров под управлением Windows ХР и Windows 7.

Установка

Для успешной установки SELTA@Etersoft в среде Windows 7 (Vista) / Server 2008 необходимо выполнить ряд подготовительных действий:

  • Запуск установки должен осуществляться от имени Администратора.
  • Перед установкой необходимо сделать Администратора владельцем файла c:\windows\system32\odbcbcp.dll и дать ему все права на этот файл.
  • Проверить, что Администратор имеет полные права на ветку реестра HKLM/SOFTWARE/ODBC/ODBCINST.INI/SQL SERVER.

Теперь можно начинать установку SELTA@Etersoft.

Windows-Server-2008-R2-x64-2010-04-05-23-39-27.pngВ ходе установки мы столкнулись с нестандартным поведением инсталлятора: на определенном моменте процесс установки остановился.

Windows-Server-2008-R2-x64-2010-04-05-23-39-36.pngКак выяснилось, инсталлятор ожидает нашего решения в диалоговом окне, которое почему-то выводится под основным окном. Для доступа к нему переместите основное окно в другую часть экрана.

Windows-Server-2008-R2-x64-2010-04-05-23-41-34.png

С какими либо другими сложностями мы не столкнулись, по завершении установки перезагружаем ПК и приступаем к инсталляции PostgreSQL, запустив SETUP.BAT из комплекта поставки.

Windows-Server-2008-R2-x64-2010-04-05-23-51-45.pngПринимаем значения по умолчанию до появления экрана Конфигурация сервиса, здесь мы указываем пользователя (по умолчанию postgres), от имени которого будет запускаться сервис и пароль для него. Следует помнить, что в данном случае postgres это системный пользователь (не путать с одноименным суперпользователем PostgreSQL) и к его паролю предъявляются установленные в системе требования (по умолчанию обязательно наличие заглавных и строчных букв, цифр и длина не менее 7 символов).

Windows-Server-2008-R2-x64-2010-04-21-12-18-46.pngСледующий экран содержит настройки сервера PostgreSQL. Обязательно установите галочку Поддерживать соединения с любых IP..., даже в том случае если планируется работа исключительно в терминальном режиме. Здесь снова фигурирует пользователь postgres, теперь это суперпользователь БД, от имени которого мы будем подключаться к PostgreSQL, устанавливаемый для него пароль должен отличатся от пользователя сервиса.

Windows-Server-2008-R2-x64-2010-04-21-12-19-13.pngПеред тем как нажать кнопку Далее, обязательно проверьте состояние службы "Вторичный вход в систему", для нее должен быть установлен автоматический тип запуска, а сама она должна быть запущена.

Windows-Server-2008-R2-x64-2010-04-05-23-54-23.pngЕсли это не так - исправьте, иначе получите следующую ошибку:

Windows-Server-2008-R2-x64-2010-04-05-23-53-46.png

Настройка на сервере

Завершив установку PostgreSQL, запускаем SELTA@Etersoft, не забыв поместить файл лицензии в каталог установки последней.

Windows-Server-2008-R2-x64-2010-04-05-23-57-21.png

Теперь создадим и инициализируем новую БД для конфигурации 1С: Утилиты - Инициализация БД. Появится окно  параметров соединения с сервером PostgreSQL. Адрес сервера необходимо указать в виде IP: 127.0.0.1 или адрес сетевого интерфейса сервера (в нашем случае 192.168.85.131). Ниже указываем имя суперпользователя (postgres) и его пароль.

Windows-Server-2008-R2-x64-2010-04-05-23-57-59.pngПоявившееся окно позволяет создать новую БД, либо инициализировать для работы с Selta уже существующую, хотя мы крайне не советуем этого делать (особенно если в базе есть данные).

Windows-Server-2008-R2-x64-2010-04-06-00-31-01.pngПосле чего в БД можно загружать данные. Мы не будем заострять на этом внимание, весь процесс был подробно описан нами в статье Настраиваем 1С Предприятие 7.7 для работы с SQL Server 2000. И для файлового и для SQL вариантов 1С процесс одинаков: выгрузка в файл - загрузка. Единственная тонкость: эту операцию следует проводить на машине с Windows XP / Server 2003. Нам так и не удалось загрузить базу под Windows 7 / Server 2008 из-за ошибки "порядок сортировки данных отличается от системного", хотя мы предварительно загружали базу в среду новых ОС и приводили кодовую страницу в соответствие с системной, и только потом делали выгрузку.

Загрузив информационную базу в БД можем устанавливать версию 1С для SQL и настраивать базу для работы с PostgreSQL сервером. Здесь все делается так-же как при работе с MS SQL (во всяком случае сама 1С продолжает так "думать"). Опытным путем мы выяснили что имя SQL сервера в 1С лучше указывать в виде IP адреса, в этом случае соединение с сервером БД происходит гораздо быстрее.

Windows-Server-2008-R2-x64-2010-04-06-01-18-45.pngМы испытали работу 1С как непосредственно на сервере в терминальном режиме, так и опубликовав 1С:Предприятие с помощью RemoteApp, в обоих случаях все работало нормально. При расположении БД на ПК с Windows 7 / Server 2008 не забываем добавлять в папку BIN (в каталоге установки 1С) сигнальный файл ordnochk.prm (скачать).

Настройка на клиентских ПК

Предварительно на каждый клиентский ПК устанавливаем SELTA@Etersoft, для Vista / 7 не забываем установить необходимые права на файлы и ветки реестра (см. выше), затем устанавливаем 1С для SQL и подключаем необходимые информационные базы. При включенном брандмауэре проверяем и, при необходимости, открываем порт 5432 для PostgreSQL. Мы одинаково успешно проверили работу 1С:Предприятие в операционных системах Windows XP и Windows 7 (32 и 64 бит).

Windows-7-x86-2010-04-06-01-36-23.png

Необходимые действия при обновлении конфигурации 1C

Сразу обращаем ваше внимание, все административные действия с информационной базой, в том числе обновление, следует производить в среде Windows XP / Server 2003. После каждого обновления конфигурации следует пересоздать триггеры. Это связано с особенностями работы 1С + Selta + PostgreSQL, невыполнение этого требования способно существенно замедлить работу со справочниками и журналами.

Для работы с PostrgreSQL мы рекомендуем установить pgAdmin, удобную утилиту управления SQL сервером. Для пересоздания триггеров следует при помощи pgAdmin выполнить следующий запрос:

SELECT pg_create_delete_trigger_from_mask()

Для этого разворачиваем дерево Базы, выбираем необходимую БД и нажимаем кнопку Выполнить пользовательские SQL запросы (1), в открывшееся окно вводим запрос и жмем кнопку Выполнить запрос (2).

Windows-Server-2008-R2-x64-2010-04-22-00-13-58.pngДополнительные материалы:

  1. Etersoft WIKI: SELTA
  2. Настройка курсоров на триггерах для 1C 7.7+Selta+Postgresql
  3. 1С Предприятие 7.7 Тестирование производительности в различных режимах 

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.


Loading Comments