Etersoft WIKI: SELTA/usermanual

SELTA@Etersoft

Общее описание

SELTA@Etersoft – это программный продукт, выполняющий трансляцию SQL-запросов из диалекта T-SQL (базы данных MS SQL Server) в pl/pgSQL (база данных Postgre SQL). Он позволяет программам, предназначенным для работы только с MS SQL Server, работать со свободной СУБД Postgre SQL.
Создать универсальный транслятор запросов практически невозможно, поэтому данный продукт предназначен только для некоторых приложений, в частности 1С:Предприятие 7.7.

SELTA@Etersoft работает как под ОС Windows, так и Linux (при помощи WINE@Etersoft SQL).

Общее

Обновления и новости


Планы по версии 1.1
Планы по версии 2.0


Где дата выхода 1.0.8?
Исправления, намеченные к версии 1.0.8


23.06.2009: SELTA@Etersoft 1.0.7

Исправления и дополнения


! ВНИМАНИЕ ! Версия 1.0.7. работает только с версиями Postgre SQL не ранее 8.3.5 . Для перехода с версий 8.2.* внимательно ознакомьтесь с инструкцией по переходу.
Полный список исправлений к версии 1.0.7


После обновления требуется запустить 1с в монопольном режиме.

01.04.2009: SELTA@Etersoft 1.0.6

Исправления и дополнения

Полный список исправлений к версии 1.0.6


26.12.2008: SELTA@Etersoft 1.0.5

Исправления и дополнения

Полный список исправлений к версии 1.0.5


17.11.2008: SELTA@Etersoft 1.0.4

Исправления и дополнения

Полный список исправлений к версии 1.0.4


Архив изменений для старых версий...



Часто задаваемые вопросы





В файле /var/lib/pgsql/data/postgresql.conf
выставить параметр
client_min_messages = error
Не забудьте убрать знак комментария







Поддерживаемые программы


* конфигурация Бухгалтерия
* конфигурация Зарплата
* конфигурация Торговля и Склад
* конфигурация Производство и Услуги
* расширение 1С++

Планируется поддерживать

* WinСмета SQL
* MonitorCRM
* КМ-Школа
* MarkSQL


Требования к продукту

Конечный продукт должен удовлетворять следующим требованиям:

Что сделано

В качестве альтернативной базы была выбрана PostgreSQL, на данный момент это одна из лучших бесплатных баз данных, которая способна составить конкуренцию продукту MS SQL Server. Так же учитывалось, что в сторону этой базы свой выбор уже сделала компания 1С, поддержав PostgreSQL в версии 1С 8.1. Это позволяет надеяться, что качество работы PostgreSQL будет на высоте.


Было принято решение, что сам транслятор будет подключаться к ODBC драйверу на клиентских машинах:
Мы модифицировали стандартный ODBC драйвер для PostgreSQL так, чтобы на запросы 1С он выдавал себя за драйвер MS SQL Server (в частности, возвращается другая версия продукта), согласно лицензии PostgreSQL все исходные коды модифицированного драйвера будут выложены в открытый доступ. В код драйвера ODBC добавлена загрузка дополнительной dll (закрытая часть) при помощи которой преобразуются SQL-запросы из диалекта T-SQL (используемого в MS SQL Server) в pl/pgSQL (PostgreSQL).




О SQL и 1С

Недоступность SQL по сети

О unixODBC



Настройка SQL сервера под 1С


1. Установить под Windows MS SQL. на вопрос про идентификацию выбрать смешанный режим
2. Запустить SQL менеджер, там создать новую базу, сохранить ее на диск.
3. Запустить 1С, добавить новую базу и указать путь созданной sql базы.
4. запустить для нее Конфигуратор. Выбрать Администрирование, Настройка SQL. Указать там сервер, пароль (который указан для базы при установке ms sql ). таким образом 1С подключена к sql базе
5. Если необходимо загрузить данные из существующей dbf базы, то зайти в ее Конфигуратор, Выгрузить данные. Затем зайти в Конфигуратор sql базы Загрузить данные.


Некоторая информация которая может быть полезна при работе с MS SQL:
Консоль MS SQL Server



Установка и настройка

Получение дистрибутива SELTA@Etersoft


Для установки SELTA@Etersoft на клиентских машинах Вам потребуется дистрибутив (файл selta.msi) требующийся версии из

О текущих вышедших версиях, а так же о релиз кадидатах вы можете узнать в разделе Обновления и новости


Также Вам потребуется файл лицензии, подробнее о его получении смотрите в разделе Получение лицензии


После загрузки воспользуйтесь инструкцией по установке.



Установка SELTA@Etersoft


Оглавление


Установка SELTA@Etersoft

SELTA@Etersoft может быть установлена на Windows 2000 и выше, либо на WINE@Etersoft SQL 1.0 и выше.
Установка продукта очень проста: на каждой клиентской машине достаточно запустить установочный файл selta.msi и следовать дальнейшим инструкциям.
В WINE@Etersoft установка выполняется командой

$ wine start selta.msi

Особенности установки на Vista



Перед установкой рекомендуется закрыть все приложения, которые используют ODBC-драйверы.
Внимательно ознакомьтесь с Лицензионным соглашением:



Укажите путь установки SELTA@Etersoft:



После этого установочная программа скопирует файлы транслятора в указанный каталог и добавит необходимую информацию в реестр.



На этом установка завершена.


Обратите внимание
Для одновременного использования SELTA@Etersoft и MS SQL для разных приложений имеется специальный скрипт-обертка(подробнее читайте Запуск/остановка SELTA при запуске программ).
Также возможно временное отключение SELTA@Etersoft – для переключения используйте Центр управления SELTA@Etersoft.

При проблемах установки selta.msi

Если при установке происходит ошибка, запустите установку командой

winexp start selta.msi

Если и в этом случае происходит ошибка, то запустите установку командой
msiexec /i selta.msi /l*v C:\selta.log

и пришлите в службу поддержки файл selta.log



Файл лицензии SELTA@Etersoft


Для работы транслятора требуется специальный файл лицензии, который содержит серийный номер, имя владельца лицензии и прочую информацию.


Файл лицензии можно получить на вашей персональной странице продукта после приобретения.


Доступ к странице Вы можете получить двумя способами:

  1. При заказе SELTA@Etersoft на сайте http://sales.etersoft.ru страница создаётся после оплаты продукта, информация о доступе к ней высылается на Вашу электронную почту;
  2. При покупке коробочной версии через наших партнеров потребуется зарегистрироваться на нашем сайте, указав серийный номер продукта, который можно найти в лицензионном соглашении, поставляемом в коробке вместе с продуктом.

Для того, чтобы добавить файл лицензии в SELTA@Etersoft, запустите Центр управления SELTA@Etersoft (продукт должен быть предварительно установлен на клиентской машине). Если ни один файл лицензии не был добавлен в систему ранее, программа при запуске попросит это сделать:



Если у Вас уже есть файл с лицензией, укажите к нему путь:



Если указанный файл пройдет проверку подлинности, он будет скопирован в рабочий каталог SELTA@Etersoft



Вы так же можете скопировать файл вручную в рабочий каталог, либо удалить его от туда, если требуется удалить/заменить лицензию на клиентской машине.




Действия при обновлении Postgre SQL

В этом разделе описываются действия, которые необходимо выполнить при изменении версии PostgreSQL, независимо от того, изменили ли вы при этом версию Selta. Обратите внимание, что часть из них проделывается с Selta, а часть с PostgreSQL. Если действия не указаны, значит они не требуются.


Release 8.4.2 – 8.4.3

Операция dump/restore не требуется для тех, кто переходит с версий 8.4.x, но если вы переходите с версии до 8.4, следуйте инструкциям к 8.4.1
обновление баз не требуется, для всех, кто переходит с версий после 8.3.8, Если вы обновились с версии до 8.3.8, следуйте инструкциям Selta 8.3.8

Release 8.4.1

Требуется выполнить операцию dump/restore, при переходе с более ранних версий.
обновление баз не требуется, для всех, кто переходит с версий после 8.3.8, Если вы обновились с версии до 8.3.8, следуйте инструкциям Selta 8.3.8

Release 8.3.8

Операция dump/restore не требуется для всех, кто переходит с версий 8.3.x. Требуется выполнить операцию REINDEX.
Требуется обновление баз, при переходе с более ранних версий.

Release 8.3.2 – 8.3.7

(поддерживается начиная с Selta 1.0.5)

Операция dump/restore не требуется для тех, кто переходит с версий 8.3.x, но если вы переходите с версии до 8.3.1, следуйте инструкциям к 8.3.1
обновление баз не требуется, для всех, кто переходит с версий 8.3.x. Если вы обновились с версии до 8.3, следуйте инструкциям Selta 8.3

Release 8.3.1

(поддерживается начиная с Selta 1.0.5)

Операция dump/restore не требуется для всех, кто переходит с версий 8.3.x. Однако вам может понадобится переиндексировать текстовые поля после обновления.
обновление баз не требуется, для всех, кто переходит с версий 8.3.x. Если вы обновились с версии до 8.3, следуйте инструкциям Selta 8.3

Release 8.3

(поддерживается начиная с Selta 1.0.5)

Для корректной работы требуются выполнить операции независимо от того, обновляли ли вы версию Selta, обязательно сделайте обновление ваших баз:
На клиентской машине запустите графическую утилиту SELTA ( Общее описание ), в главном меню выберите пункт Инициализация БД, и обновите ранее созданные базы до новой версии SELTA (подробнее в разделе Инициализация баз данных), или создайте новые.

Release 8.2.11-8.2.8

Операция dump/restore не требуется для всех, кто переходит с весий 8.2.x.
Однако, если вы переходите с версии до 8.2.7, следуйте инструкциям 8.2.7

Release 8.2.7 – ...

Операция dump/restore не требуется для всех, кто переходит с версий 8.2.x, но вам может понадобится переиндексировать текстовые поля после обновления.


Создание баз данных


После установки клиентской части и сервера Postgre SQL необходимо создать базы данных на сервере, с которыми будут работать Ваши программы.
Вся настройка и диагностика SELTA@Etersoft производится в Центре управления SELTA@Etersoft. Для его запуска на клиентской машине создаются ярлыки на Рабочем столе и группа в меню Пуск.



В главном меню этого окна выберите Утилиты – Инициализация БД.
В открывшемся окне укажите параметры подключения к серверу Postgre SQL:



Если вы правильно указали имя сервера с СУБД, имя пользователя (владельца баз) и пароль, то откроется окно утилиты Инициализации Баз данных:



В левой части окна располагается список уже созданных баз данных. Если Вы только что установили Postgre SQL, то этот список скорее всего будет пуст.
Для создания базы данных нажмите кнопку Создать БД, в открывшемся диалоге укажите латинскими буквами имя новой базы:



Если возникли ошибки при создании базы, то появится диалогове окно с текстом этой ошибки, в противном случае созданная вами база появится в конце списка баз данных. Справа от имени базы данных будет указано, для работы с какой версией SELTA@Etersoft она предназначена.
Если у Вас уже есть ранее созданные (пустые) базы данных, то в списске они будут помечены как Не инициализировано. Если Вы хотите использовать их, то выделите их в списске и нажмите кнопку Инициализировать. Подробнее о функциональности утилиты Инициализация баз данных читайте в Документации

                             



Сторонние инструкции


На этой странице представлены ссылки на сторонние инструкции по установке Selta@Etersoft и Postgre SQL


Статья про установку Selta@Etersoft на Ubuntu 7.10 и работу с 1С 7.7
http://ebooki.moy.su/publ/6-1-0-3


Использование

Подключение 1С:Предприятия

Запуск системы

После того, как SELTA@Etersoft установлена, и настроен соответствующим образом PostgreSQL, можно запускать 1С.
Первый запуск 1С производится в режиме конфигуратора и в параметрах подключения укажите (вкладка Администрирование -> Параметры базы данных SQL):


FAQ по SQL-версии программы 1С: Предприятие 7.7



Перенос данных из MS SQL Server в Postgre SQL для 1С 7.7


Самый простой способ загрузки данных в базу – штатными средствами загрузки-выгрузки самой 1С. Эта операция выполняется точно так же, как при работе с MS SQL Server или DBF базой.


Если у Вас база данных на MS SQL Server очень большого объема и ее невозможно выгрузить в zip-архив, вы можете перенести данными при помощи специальной утилиты – Конвертор. Для этого необходимо выполнить несколько операций, которые подразделяются на 2 этапа: создание структуры базы в Postgre SQL и перенос самих данных.
Выполните пошагово следующие инструкции:

Создание структуры базы данных

Для создания структуры базы данных запустите 1С 7.7, создайте новую информационную базу и загрузитесь в режиме конфигуратора.
В пункте Администрирование – Параметры базы данных SQL укажите параметры для подключения к Postgre SQL, в качестве имени базы укажите ту базу, которую создали ранее.
Далее необходимо загрузить .md файл конфигурации, для которой вы переносите данные и выполнить ее сохранение. При этом будут созданы все необходимые таблицы, индексы и хранимые процедуры – создание структуры базы данных завершено. Запускать полученную конфигурацию в режиме Бухгалтерия не требуется.

Перенос самих данных

Для переноса самих данных воспользуйтесь графической утилитой Конвертор. Запустите Графическую утилиту Selta, в главном меню выберите Утилиты – Конвертор:



Выберите кнопку "MS SQL Server -> CSV", в открывшемся окне укажите укажите параметры подключения к MS SQL Server, на котором лежит база данных, из которой Вы переносите данные, а в качестве пути для Дампа укажите папку на машине клиента, в которую будут скопированы данные:



Нажмите Выполнить и дождитесь выполнения операции, копирование всех таблиц может занять продолжительное время.
Далее, полученный CSV-Дамп необходимо загрузить в Postgre SQL
Запустите Конвертор, выберите кнопку CSV -> Postgre SQL. В открывшемся диалоге необходимо указать параметры подключения к базе, в которой до этого была сохранена Ваша конфигурация:



Нажмите Выполнить и дождитесь выполнения операции, копирование всех таблиц может занять продолжительное время (для больших баз до нескольких часов).
После окончания копирования база готова к работе, можете запускать 1С и работать с ней в обычном режиме!


Если в дампе таблиц больше, чем в базе данных (так бывает, если Дамп делался с работающей БД 1С, а восстанавливается в "чистую" конфигурацию) будет возвращена ошибка



Для избежание подобной ошибки, установите флажок "Пропускать таблицы отсутствующие в базе".


Загрузка CSV дампа в MS SQL Server выполняется аналогично.


Перенос данных из MS SQL Server в PostgreSQL для 1С 7.7. Пошаговая инструкция


Если у Вас база данных на MS SQL Server не очень большого объема и её возможно выгрузить в zip-архив, вы можете воспользоваться вариантом 1 (перенос структуры и данных БД средствами 1С)


Если у Вас база данных на MS SQL Server очень большого объема и ее невозможно выгрузить в zip-архив, вы можете воспользоваться вариантом 2. (перенос структуры БД средствами 1c, и данных БД средствами SELTA(ковертор))


Вариант 1: Загрузка структуры и данных с помощью 1С (не работает с большими БД.)


1. Средствами 1с произвести выгрузку базы из 1с. (SELTA выключена. 1с подключен к базе MSSQL)

(1с конфигуратор->меню Администрирование->Выгрузить данные... (ввести путь))

2. Включить Selta.

(SELTA Запустить)

3. Создать (!)новую(!) БД с помощью графической оболочки SELTA. (Если уже есть, удалить и заново создать)

(SELTA меню Утилиты -> Инициализация БД (ввести параметры сервера Postgre)-> Создание БД (ввести имя новой БД)

4. Добавить информационную базу в 1с. (не забудьте создать пустой каталог с базой.)

(1c окно запуск -> добавить (ввести назание и путь))

5. Настройте в конфигураторе 1с базу из пункта 4 на сервер Postgre (созданную в пункте 3) (имя пользователя должно быть такое, как при создании в пункте 3)

(1с конфигуратор->меню Администрирование->Параметры базы данных SQL (ввести параметры БД))

6. В БД(4) средствами 1с произвести загрузку данных (из места куда была произведена выгрузка в пункте 1).

(1с конфигуратор->меню Администрирование->Загрузить данные... (ввести путь))

7. Скопировать каталоги пользователей из каталога информационой базы 1с (пункт 1) в каталог информационой базы 1с (пункт 4)

Просмотр/изменение пути пользователей:
(1с конфигуратор->меню Администрирование->Пользователи->Выбрать пользователя->вкладка атрибуты->рабочий каталог)

Вариант 2: Pагрузка структуры с помощью 1с и данных с помощью SELTA


1. Средствами 1С произвести выгрузку (!)пустой(!) базы из 1с, той же конфигурации, что
собираетесь использовать. (Selta выключена. 1с подключен к базе MSSQL или dbf)

(1с конфигуратор->меню Администрирование->Выгрузить данные... (ввести путь))

-> 2! С помощью графической оболочки SELTA произвести конвертацию данных MSSQL -> CSV (из Вашей БД 1с на MS SQL сервере(уже не пустой))

(SELTA меню Утилиты -> Конвертор -> MS SQL SERVER --> CSV ->(ввести параметры БД и путь)

3. Включить Selta.

(SELTA Запустить)

4. Создать (!)новую(!) БД с помощью графической оболочки SELTA. (Если уже есть, удалить и заново создать)

(SELTA меню Утилиты -> Инициализация БД (ввести параметры сервера Postgre)-> Создание БД (ввести имя новой БД))

5. Добавить информационную базу в 1с. (не забудьте создать пустой каталог с базой.)

(1c окно запуск -> добавить (ввести назание и путь))

6. Настройте в конфигураторе 1с базу из пункта 5 на сервер Postgre (созданную в пункте 4) (имя пользователя должно быть такое, как при создании в пункте 4)

(1с конфигуратор->меню Администрирование->Параметры базы данных SQL (ввести параметры БД))

7. В БД(пункт 4) средствами 1с произвести загрузку данных (из места куда была
произведенна выгрузка в пункте 1).

(1с конфигуратор->меню Администрирование->Загрузить данные... (ввести путь))

-> 8! С помощью графической оболочки SELTA произвести конвертацию данных CSV -> Postgre
(путь из пункта 2, БД из пункта 4) (Данные, которые уже есть в БД Postgre сотруться, из
CSV добавятся.)

(SELTA меню Утилиты -> Конвертор -> CSV --> Postgre SQL ->(ввести параметры БД и путь)

9. Скопировать каталоги пользователей из каталога информационой базы 1с (пункт 1) в каталог информационой базы 1с (пункт 5)

Просмотр/изменение пути пользователей:
(1с конфигуратор->меню Администрирование->Пользователи->Выбрать пользователя->вкладка атрибуты->рабочий каталог)


Инструкция по запуску и применению Selta@Etersoft через командную строку


Эта возможность появилась в версии начиная с 1.0.4.


Основной запускаемый файл seltacmd.exe


1. Запуск без параметров.

seltacmd.exe
При запуске без параметров не происходит никаких действий. Только выводит сообщение с подсказкой о том, как получить полный help.
Сообщение:
-? This help

2. Запуск с параметром '-?'. Запуск help.

seltacmd.exe -?
При запуске с параметром '-?' не происходит никаких действий
Выводит полный help.
Сообщение:

seltacmd.exe [options]
	-io Input or Output. y - Output (SQL -> csv),n - output (csv -> SQL)
	-s MSSQL or PgSql. y - MSSQL, n  - pSql
	-h ip Address or name (SSID).
	-n Name DB.
	-u username DB.
	-p Password.
	-pt Backup patch on '  ' .
	-? This help
	-st Start or stop Selta. y - start, n-stop.
	
	Example:
	convert
	seltacmd.exe -io y -s n -h 192.168.0.1 -u admin -p mypassw 'C:\BACKUP\'
	or
	start
	seltacmd.exe -st y
	ok

3. Запуск конвертации БД 

Для запуска конвертации необходимо ввести параметры

'-io' - Что надо конвертировать. 'y' - SQL -> csv, 'n' csv -> SQL
   '-s'  - Какую СУБД использовать. 'y' - MSSQL, 'n'  - pSql
   '-h'  - ip адрес или имя SQL сервера, который будет учавствовать в конвертации
   '-n'  - имя используемой БД 
   '-u'  - имя пользователя, обладающего необходимыми правами использования БД.
   '-p'  - пароль пользователь  
   '-pt' - Путь к бэкапу БД (обязательно в ' ')


Например:

seltacmd.exe -io y -s n -h 192.168.0.1 -u admin -p mypassw 'C:\BACKUP\'


Порядок указания параметров не важен.
Если не введены все необходимые для конвертации данные, они будут спрошены. Их можно ввести.
Например:
enter Input or Output. y – Output (SQL -> csv),n – output (csv -> SQL):
Но хотя бы один из параметров конвертации должен быть введен.

4. Запуск с параметром '-pt'. Запуск/остановка selta

Для запуска/остановки selta необходимо ввести параметры
'-st' Что требуется сделать 'y'- запустить, 'n' остановить
Например:
seltacmd.exe -st y

Примечание:

Действия 2,3,4 можно производить как по отдельности, так и вместе.
Например:
seltacmd.exe -? -io y -s n -h 192.168.0.1 -u admin -p mypassw 'C:\BACKUP\' -st y


Запуск/остановка SELTA при запуске программ


Для того что бы иметь возможность одновременно работать с Postgre SQL через SELTA и с MS SQL вы можете воспользоваться batch файлом ftp://updates.etersoft.ru/pub/Etersoft/SELTA@Etersoft/accessoryfiles/ExecWSS.bat.


Описание ExecWSS.bat

Пример использования ExecWSS.bat

В примере показано, как создать ярлык для запуска программы 1с с остановленной SELTA

  1. Скопируйте файл ExecWSS.bat из ftp://updates.etersoft.ru/pub/Etersoft/SELTA@Etersoft/accessoryfiles/ExecWSS.bat в папку с SELTA (C:\Program Files\Selta\)
  2. Создайте ярлык на рабочем столе. (нажмите правой кнопкой мыши на рабочем столе, выберите New->Shortcut(Создать->Ярлык))
  3. Сделайте ярлык для программы 1с (В появившемся окне в поле "Type the location of the item"(Укажите размещение объекта) введите ["C:\Program Files\Selta\ExecWSS.bat" STOP "C:\Program Files\1Cv77\BIN\1cv7s.exe"] ), затем нажмите кнопку Далее.
  4. Введите имя ярлыка (В поле Type a name for this shortcut:(Введите имя ярлыка) введите [1c ms sql]). Нажмите кнопку Finish(Готово)
  5. Меняем иконку у ярлыка (нажмите правой кнопкой мыши на созданном ярлыке, Properties(Свойства) -> Change Icon ...(Сменить значок...) -> Look for icons in this file(Искать значки в следующем файле), введите [%Program Files%\1Cv77\BIN\1cv7s.exe], выбирете иконку, OK ).

После этих действий при нажатии на созданный ярлык будет останавливаться SELTA и запускаться 1с, где вы можете использовать ваши базы для MS SQL. Вы можете создать такой же ярлык, заменив в нем ["C:\Program Files\Selta\ExecWSS.bat" STOP "C:\Program Files\1Cv77\BIN\1cv7s.exe"] на ["C:\Program Files\Selta\ExecWSS.bat" START "C:\Program Files\1Cv77\BIN\1cv7s.exe"] для запуска 1с с использованием Postgre SQL

Замечания

Вы можете с помощью ExecWSS.bat запустить одновременно и программу использующую ms sql и Postgre SQL с SELTA, но будьте внимательны, со SELTA должна быть в нужном Вам состоянии в момент подключения к базе SQL, а не в момент запуска программы.


Для корректого запуска/остановки SELTA требуется обладать необходимыми правами. Подробнее об этом в Права требующиеся для запуска/остановки SELTA


Принцип работы динамических курсоров SELTA.


ВНИМАНИЕ: описывается принцип работы SELTA начиная с версии 1.0.6
Данный материал поможет Вам в тонкой настройки ваших БД, работающих через SELTA, тем самым улучшив скорость их работы.

Принцип работы

В настоящий момент в связи с отсутствием динамических курсоров в Postgre SQL в SELTA имитируется их работа в odbc драйвере.


При каждом вызове метода SQLFetch для динамического курсора в ODBC драйвере проверяется наличие изменений в таблице(или нескольких) на основе которой был создан курсор. Обновления курсора происходит, только если в таблице произошли изменения.


За фиксирование изменений в таблицах, отвечает таблица pg_table_changes*, содержащая в себе имя таблиц и количество изменений.


Изменения в таблицу pg_table_changes добавляют триггеры, имеющиеся у таблиц, созданных SELTA.


замечание:
изменения не всех таблиц фиксируются в pg_table_changes, соответственно, не у всех таблиц есть триггеры. Если обновляется динамический курсор, основанный на таблице, изменения в которой не фиксируются, курсор пересоздается.

Почему надо настраивать

В связи с тем, что наличие у таблицы триггера, замедляет работу с таблицей(изменения данных) целесообразно использовать триггеры не у всех таблиц.


Создастся или не создастся триггер на таблицу и соответствующая запись в pg_table_changes, зависит от того, соответствует ли имя таблицы маскам, хранящимся в таблице pg_trigger_table_mask**.

Настройка1

1. Сделайте список таблиц, для которых нужно делать триггеры. Нужно делать триггеры для таблиц, для которых часто создаются и обновляются динамические курсоры, и редко меняется информация ( например справочники). И не нужно делать триггеры, если динамические курсоры не создаются и не обновляются(или это происходит редко).
2. Заполните на основе этого списка таблицу pg_trigger_table_mask.
3. Запустите функцию pg_create_delete_trigger_from_mask() ("SELECT pg_create_delete_trigger_from_mask()"), будут созданы нужные триггеры на таблицы, ненужные удалены, записи в таблице pg_table_changes обновятся, в соответствии с таблицей pg_trigger_table_mask,


Эти действия можно проделывать неограниченное число раз.

Для таблиц 1с имеются стандартные маски они создадутся при создании, инициализации, или обновлении бд.

maskincludeequal
sc%tf
cj%tf
_1sjourntt
1stopertt
_1sopertt
_1scorenttt
_1sentrytt
_1saccstt
pg_%ff

Приложение:

* Таблица pg_table_changes

tabname Имя таблицы
numberchanges Количество изменений

Таблица создается и модифицируется с помощью триггеров и функций, правка вручную не требуется.


** Таблица pg_trigger_table_mask

mask маска
include Входит в выборку (true делать для таблицы с такой маской триггер и запись в pg_table_changes, false — не деклать)
equal Соответствие (true – точное('='), false не точное ('LIKE'))

Заполните поле mask, include, equal в соответствии с тем, какие триггеры нужны для БД, а какие нет.
Для создания триггера для таблицы с именем table1, требуется написать имя таблицы в поле mask, указать, что ее следует включать в выборку — в поле include = true, и точное соответствие equal = true

maskincludeequal
table1true true

Для НЕ создания триггера для таблицы с именем table2, требуется написать имя таблицы в поле mask, указать, что ее НЕ следут включать в выборку — в поле include = false, и точное соответствие equal = true

maskincludeequal
table2falsetrue

Для создания триггера для всех таблиц с именами начинающимеся с tb, дожны написать имя маску в поле mask ('tb%'), указать, что ее следут включать в выборку — в поле include = true, и неточное соответствие equal = false

maskincludeequal
tb%truefalse

Аналогично этому можно создать маску для исключения группы таблиц из выборки.


Ссылки на сторонние дополнения:
1http://infostart.ru/projects/3801/ Дополнение для удобной настройки триггеров от Djelf.


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

После обновления конфигурации, необходимо пересоздать триггеры. Это можно сделать в GUI Selta (кнопка пересоздать триггеры).
Так же вы можете сделать это другим способом. выполнив в бд такую функцию, pg_create_delete_trigger_from_mask() ("SELECT pg_create_delete_trigger_from_mask()") (вы можете прочитать подробнее об этом) любым удобным вам способом (через консоль бд pgsql, в pgadmin, интерфейс SELTA.)


Центр управления SELTA@Etersoft

Центр управления SELTA@Etersoft

Назначение

Данная утилита предназначена для облегчения настройки и обслуживания SELTA@Etersoft. Она позволяет просмотреть информацию о владельце копии SELTA@Etersoft, серийный номер, версию ПО (как самого транслятора, так и информацию о базах данных), так же доступны средства Инициализации баз данных, конвертирования данных из MS SQL Server в Postgre SQL и обратно, и средства диагностики продукта.

Главное окно


При установке продукта, на рабочем столе и в меню Пуск создаются необходимые ярлыки для запуска центра управления.
Главное окно программы представлено на следующем рисунке:



Главное окно содержит общую информацию о продукте: название и версию, имя владельца и серийный номер.
В нижней части окна показан текущий статус транслятора и кнопка его Включения / Отключения.
Когда SELTA@Etersoft Запущена, программы работают с Postgre SQL посредством транслятора.
Если SELTA@Etersoft Приостановлена, то возобновляется работа с MS SQL Server


Главное меню

Главное меню окна дает доступ к различным утилитам:


Конвертор и Инициализация баз данных при выключенной SELTA недоступны.



Инициализация баз данных


Данная утилита предназначена для работы с базами данных. При выборе в меню главного окна Центра управления SELTA@Etersoft пункта: Утилиты – Инициализация БД, откроется диалоговое окно с приглашением ввести параметры подключения к СУБД:



Начиная с версии 1.0.7 можно указывать порт подключения. Для этого в поле Адрес сервера Postgre SQL после адреса через запятую введите порт(допускается через двоеточие).


После нажатия кнопки Соединение будет выведено либо сообщение об ошибке (например "неверный пароль") или, в случае успеха, откроется окно Инициализации Баз Данных:



В верхней части окна расположен список баз данных, которые доступны на данный момент. В данный список не включаются системные базы данных Postgre SQL – template0 и template1
Список будет пуст, если ни одной базы не было создано ранее.
Рядом с именами баз указаны их статусы:
– Не инициализировано – база не содержит элементов SELTA@Etersoft
– Ошибка – база содержит некоторые элементы SELTA@Etersoft, но они повреждены
– SELTA@Etersof <версия> – база данных содержит элементы SELTA@Etersoft указанной версии. Эта версия может не совпадать с текущей, установленной на клиенте.

Функциональность

Утилита Инициализации баз данных выполняет следующие функции:

Создание новых баз данных

Все созданные базы данных автоматически инициализируются элементами SELTA@Etersoft текущей версии. Если инициализация не удается – то созданная база будет удалена. Нельзя создать базы с именами template0, template1, master. Все имена баз сводятся к нижнему регистру. База данных должна состоять из латинских символов и цифр (кроме первого символа) и без пробелов.

Инициализация баз данных

Доступно только для баз, помеченных как Не инициализировано. Для выбранной в списске базы данных будет произведена инициализация – в базе будут созданы типы данных, таблицы и функции, необходимые для работы SELTA@Etersoft. Если на каком-то шаге инициализации возникнет ошибка – все изменения будут откачены до исходного состояния базы. Если Вы по ошибке инициализировали не ту базу данных – можно сразу вызвать функцию Деинициализации, это не приведет к потере Ваших данных.
Внимание: не надо инициализировать БД postgres.

Удаление баз данных

Удалить можно любую базу данных, не зависимо от ее состояния. В этот момент ни один пользователь не должен быть подключен к удаляемой базе. Удаление базы приведет к полному уничтожению всех ее данных!

Переименование баз данных

Переименовать можно любую базу данных, не зависимо от ее состояния. В этот момент ни один пользователь не должен быть подключен к удаляемой базе.

Деинициализация

Удаление элементов SELTA@Etersoft из базы: будут удалены все функции, таблицы и типы данных, созданные ранее.
Внимание! При выполнении этой процедуры Вы можете потерять свои данные! При удалении типов данных удаляются так же все таблицы и функции, в которых они используются!!! Данную функцию безопасно использовать сразу после Инициализации базы, т.к. гарантированно не были созданы таблицы с использованием новых типов. Инициализация не изменяет уже существующие таблицы. Деинициализация доступна только для баз данных, проинициализированных текущей версией SELTA@Etersoft. Если вы хотите удалить элементы старых версий SELTA@Etersoft – сначало произведите процедуру Обновления до текущей версии.

Обновить SELTA

Обновление компонентов SELTA@Etersoft в базе с предыдущей версии до новой. Данная функция добавляет новые элементы SELTA@Etersoft в базу и удаляет устаревшие. Данная функция не приводит к потере Ваших данных. Обновить можно только старую версию до текущей.

Пересоздать курсоры

Пересоздание курсоров SELTA подробнее об этом. Это действие требуется, например после обновления конфигурации 1с.

Диагностика

Доступна для любой базы данных. Данная процедура производит полную проверку базы на наличие компонентов SELTA@Etersoft и формирует отчет, который можно сохранить в файл и отправить в нашу службу технической поддержки, при возникновении проблем.

Тест запросов к базе данных

Тестирование запросов к базе данных SELTA подробнее об этом.


Конвертор


Данная утилита позволяет переносить данные из MS SQL Server в Postgre SQL и обратно.
Производится перенос только данных, структуру базы (таблицы, индексы, хранимые процедуры) требуется создавать отдельно (Для 1С 7.7 это делается при помощи конфигуратора, подробнее смотрите в разделе Перенос данных из MS SQL Server в PostgreSQL для 1С 7.7).
Перенос данных производится через промежуточный дамп в формате CSV. Фактически, необходимо сначало выгрузить данные (таблицы) в CSV-дамп (текстовые файлы) из базы, а затем загрузить их в другую.
На следующем рисунке представлено главное окно утилиты:



"Postgre SQL > CSV" – выгрузка данных из Postgre SQL в CSV-дамп
"MS SQL Server > CSV" – выгрузка данных из MS SQL Server в CSV-дамп
"CSV > Postgre SQL" – загрузка данных из CSV-дампа в Postgre SQL
"CSV > MS SQL Server" – загрузка данных из CSV-дампа в MS SQL Server


CSV-дамп имеет следующий формат:
– все таблицы выгружаются в текстовые файлы (на каждую таблицу по одному файлу, имена файлов соответствуют именам таблиц)
– дополнительно создается файл _list_tables.inf который содержит список всех таблиц
– все записи экранированы кавычками
– все кавычки внутри записей дублируются
– столбцы разделяются знаком ";" (точка с запятой)
– строки разделяются знаком переноса на новую строку
– кодировка файлов – ASCII


При нажатии кнопки копирования данных из Базы в CSV-дамп открывается следующее окно:



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


При нажатии кнопки копирования данных из CSV-Дампа в базу открывается окно:



Здесь так же указываются параметры подключения к базе данных и путь к CSV-Дампу – путь к файлу _list_tables.inf, который содержит вспомогательную информацию.
При нажатии кнопки Выполнить начнется копирование данных в базу, данная операция занимает больше времени, чем Создание CSV-Дампа.


Если в дампе таблиц больше, чем в базе данных (так бывает, если Дамп делался с работающей БД 1С, а восстанавливается в "чистую" конфигурацию) будет возвращена ошибка



Для избежание подобной ошибки, установите флажок "Пропускать таблицы отсутствующие в базе".


Загрузка CSV дампа в MS SQL Server выполняется аналогично.


Диагностика


Утилита диагностики SELTA@Etersoft производит проверку элементов транслятора в системе: проверяется наличие и версии необходимых dll, а так же ключи реестра.



Для проведения диагностики нажмите кнопку Запуск, в текстовом поле Результат диагностики появится лог операции, который можно скопировать или сохранить в файл. При возникновении проблем с SELTA@Etersoft вы можете отправить этот лог диагностики в нашу службу технической поддержки, что может значительно упростить решение проблем.


В нижней части окна расположены элементы управления для "Журнала сообщений SELTA@Etersoft". Он представляет собой файл логов транслятора, который включает в себя все SQL запросы, которые поступили в транслятор, и его ответы – SQL запросы на языке pl/pgSQL. Данные логи могут быть очень полезны при выявлении ошибок работы транслятора.


Тест запросов


Данная утилита позволяет проверить, как работает сам транслятор запросов, какие SQL запросы поддерживаются, а какие нет, и, возможно, выявить ошибки трансляции.



В верхнее текстовое поле вводится SQL запрос для MS SQL Server, и после нажатия кнопки Тест в нижнем поле появляется запрос для Postgre SQL.
Если результат трансляции начинается со строк:
"ERROR: can not translate query: "
то это означает, что либо данных запрос транслятором не поддерживается, либо он содержит синтаксические ошибки.

Тест запросов к БД

Также можно протестировать запросы непосредственно к БД, с выводом результатов с помощью теста запросов к БД как запустить тест запросов к БД.



Запросы вводятся в верхнее поле (Введите текст SQL запроса...). SQL запрос вводится в формате MS SQL Server. Результат трансляции можно посмотреть, установив флажок Показывать результаты трансляции.
В нижнем поле (Результат выполнения запроса). Вы можете видеть статус выполнения запроса, и возвращенные результаты.
Для запросов в формате PGSQL, без трансляции, введите "!!" перед запросом.



Лицензия и документация


В разделе Справка в меню главного окна имеются пункты О программе, Лицензия и Помощь. Они позволяют просмотреть информацию о продукте, его версии и владельце: