Статья

Статья на тему Отключение процедуры верификации для 1С

Работа добавлена на сайт bukvasha.net: 2015-06-24

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 9.11.2024


Владимир Сердюк

Для начала ответим на вопрос - зачем это нужно? Это нужно для каких-либо изменений в структуре внутренних таблиц 1С и в первую очередь для подключения стандартного механизма репликации MS SQL. При подключении стандартного механизма репликации сервер автоматически добавляет служебные поля к таблицам, поставленным на репликацию. Также добавляются индексы и в некоторых случаях изменяются свойства столбцов, например identity.1С при прохождении процедура верификации анализирует структуру базы данных и в случае расхождения со структурой описанной в dds файле выводит ошибку и заканчивает сеанс.

Анализ в профайлере лога действий 1С по верификации показывает, что для анализа БД используются три хранимые процедуры: sp_columns, sp_tables, sp_statistics.

sp_tables - свойства таблицы

sp_columns – состав и свойства столбцов таблицы

sp_statistics – состав и свойства индексов таблицы

Отключать верификацию можно по-разному. Можно отключать верификацию только служебных полей или же конкретных таблиц. Я предпочитаю отключать верификацию полностью и заменять ее своей проверкой соответствия md – структура. Для того чтобы 1С проходило успешно процедуру верификации независимо от типа и состава изменений в БД, необходимо выполнить следующие действия. До изменений в структуре запоминать результаты, возвращаемые вышеописанными процедурами. Затем после изменений в структуре хранимые процедуры должны возвращать данные из записанного ранее хранилища.

У меня реализация была следующей:

1) Создается БД Verify_1C. В ней будут храниться данные о структуре БД 1С. Также в ней будет храниться таблица Check_Verify_1C в которой будут храниться флаги включения, отключения верификации конкретной базы.

CREATE TABLE [dbo].[Check_Verify_1C] (

[Base] [char] (50) COLLATE Cyrillic_General_CI_AS NOT NULL ,

[Flag] [int] NOT NULL

) ON [PRIMARY]

где Base – база данных 1С а Flag – флаг включения отключения верификации. Flag принимает следующие значения : 0 – стандартный режим работы БД,1 – включение на запись, 2 – включение на чтение.

2) Создаются таблицы sp_columns_1c, sp_statistics_1c, sp_tables_1c. В этих таблицах будет храниться информация возвращаемая соответствующими хранимыми процедурами а также плюс два дополнительных поля: Table_Name_1C – Таблица 1С , Base_1C – База данных 1С.

3) Меняются текст хранимых процедур sp_columns, sp_tables, sp_statistics. Учитывая что это системные хранимые процедуры и мы их просто так не поменяем нужно выполнить ряд действий. Сначала нужно включить свойство SQL сервера allow modification(разрешение модификации системных таблиц). Затем в sysobjects поменять значение поля status на любое другое значение пользовательской процедуры(как правило оно не отрицательное). Проделав эти операции мы сможем изменить текст системных хранимых процедур.

4) Изменяем текст хранимых процедур. Краткая концепция изменения следующая.

а) Если приложение не 1С или значение флага для конкретной БД равно 0 – процедуры работают как и раньше.

set @flag=0

select @flag=flag from verify_1c.dbo.Check_Verify_1C where base=db_name()

if (app_name()='1CV7') and (@flag<>0)

б) Если значение флага равно 1 то происходит запись в таблицы: sp_columns_1c, sp_statistics_1c, sp_tables_1c и возвращается результат приложению.

if @flag=1

begin

delete from [Verify_1c].[dbo].[sp_tables_1c] where table_name_1c=@table_name and base_1c=db_name()

insert into [Verify_1c].[dbo].[sp_tables_1c] select

в) Если значение флага равно 2 то происходит чтение из соответствующих таблиц

SELECT [TABLE_QUALIFIER], [TABLE_OWNER], [TABLE_NAME], [TABLE_TYPE], [REMARKS]

FROM [Verify_1c].[dbo].[sp_tables_1c]

where table_name_1c=@table_name and base_1c=db_name()

order by 4, 1, 2, 3

Собственно говоря и все… Для того чтобы нам отключить верификацию базы Test нам необходимо будет выполнить следующие действия:

1) Первый раз добавить базу Test в таблицу Check_Verify_1C.

2) Включить флаг на запись т.е. в 1-ку.

3) Запустить 1С и убедиться(можно и не убеждаться если вы все правильно сделали?)

что в таблицах sp_columns_1c, sp_statistics_1c, sp_tables_1c появились записи

соответствующие процедурам.

4) Ставим флаг на чтение и можем теперь менять структуру, так как мы того захотим.

1С получит от хранимых процедур именно то,что она ожидает.

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

P.S. При изменении структуры таблиц мы можем отключать верификацию, но во время работы 1С мы столкнемся с дополнительными трудностями, которые впрочем, решаются. Однако это уже тема следующей статьи.


1. Реферат Организация управленческого учета на предприятии
2. Реферат на тему Looking At PicturesBerger Essay Research Paper Looking
3. Реферат на тему Навчання особового складу на бойових традиціях Збройних Сил Росії
4. Реферат Планирование карьеры работника
5. Реферат Решение задач линейного программирования в Excel
6. Реферат на тему American Poets Essay Research Paper Compare and
7. Контрольная работа на тему Понятие и государственное регулирование конкуренции
8. Курсовая Каналы целенаправленного формирования общественного мнения об МНТК Микрохирургия глаза
9. Реферат на тему Drugs In Sports Essay Research Paper PerfectionSince
10. Реферат Понятие труда, его роль, функции и виды