Відключення процедури верифікації для 1С

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

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

Для початку відповімо на питання - навіщо це потрібно? Це потрібно для будь-яких змін в структурі внутрішніх таблиць 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 () = '1 CV7 ') 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С отримає від процедур, що зберігаються саме те, що вона очікує.

У мене всі подібні дії оформлені у вигляді збережених процедур і відключення включення верифікації виконується буквально натисканням однієї кнопки.

PS При зміні структури таблиць ми можемо відключати верифікацію, але під час роботи 1С ми зіткнемося з додатковими труднощами, які втім, вирішуються. Проте це вже тема наступної статті.

Додати в блог або на сайт

Цей текст може містити помилки.

Міжнародні відносини та світова економіка | Стаття
8.9кб. | скачати


Схожі роботи:
Пристрої захисного відключення
Ріскологія Методи верифікації інформації порівняльний аналіз метод пошуку протиріч
Пристрої захисного відключення як одне з найбільш ефективних засобів запобігання пожежам
Процедури банкрутства
Водолікування та водні процедури
Процедури підпрограми та параметри
Аналітичні процедури в аудиті
Підпрограми процедури і функції
Спеціальні парламентські процедури
© Усі права захищені
написати до нас