• Новости
  • Темы
    • Экономика
    • Здоровье
    • Авто
    • Наука и техника
    • Недвижимость
    • Туризм
    • Спорт
    • Кино
    • Музыка
    • Стиль
  • Спецпроекты
  • Телевидение
  • Знания
    • Энциклопедия
    • Библия
    • Коран
    • История
    • Книги
    • Наука
    • Детям
    • КМ школа
    • Школьный клуб
    • Рефераты
    • Праздники
    • Гороскопы
    • Рецепты
  • Сервисы
    • Погода
    • Курсы валют
    • ТВ-программа
    • Перевод единиц
    • Таблица Менделеева
    • Разница во времени
Ограничение по возрасту 12
KM.RU
Рефераты
Главная → Рефераты → Экономика
  • Новости
  • В России
  • В мире
  • Экономика
  • Наука и техника
  • Недвижимость
  • Авто
  • Туризм
  • Здоровье
  • Спорт
  • Музыка
  • Кино
  • Стиль
  • Телевидение
  • Спецпроекты
  • Книги
  • Telegram-канал

Поиск по рефератам и авторским статьям

Отключение процедуры верификации для 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()='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С мы столкнемся с дополнительными трудностями, которые впрочем, решаются. Однако это уже тема следующей статьи.

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://klerk.ru/

Дата добавления: 08.01.2008

База рефератов на портале KM.RU существует с 1999 года. Она пополнялась не только готовыми рефератами, докладами, курсовыми, но и авторскими публикациями, чтобы учащиеся могли использовать их и цитировать при самостоятельном написании работ.


Это популяризирует авторские исследования и научные изыскания, что и является целью работы истинного ученого или публициста. Таким образом, наша база - электронная библиотека, созданная в помощь студентам и школьникам.


Уважаемые авторы! Если Вы все же возражаете против размещения Вашей публикации или хотите внести коррективы, напишите нам на почту info@corp.km.ru, мы незамедлительно выполним Вашу просьбу или требование.


официальный сайт © ООО «КМ онлайн», 1999-2025 О проекте ·Все проекты ·Выходные данные ·Контакты ·Реклама
]]>
]]>
Сетевое издание KM.RU. Свидетельство о регистрации Эл № ФС 77 – 41842.
Мнения авторов опубликованных материалов могут не совпадать с позицией редакции.

Мультипортал KM.RU: актуальные новости, авторские материалы, блоги и комментарии, фото- и видеорепортажи, почта, энциклопедии, погода, доллар, евро, рефераты, телепрограмма, развлечения.

Карта сайта


Подписывайтесь на наш Telegram-канал и будьте в курсе последних событий.


Организации, запрещенные на территории Российской Федерации
Telegram Logo

Используя наш cайт, Вы даете согласие на обработку файлов cookie. Если Вы не хотите, чтобы Ваши данные обрабатывались, необходимо установить специальные настройки в браузере или покинуть сайт.