<P>Данная статья описывает реализацию одного из инструментов тестирования и
отладки. Рассматривается это на примере идентификации внутренней структуры базы
данных 1С Предприятие 8.0.(SQL) для произвольной конфигурации. </P>
<P>Дано : Произвольная конфигурация на базе 1С Предприятие 8.0. (SQL) </P>
<P>Цель : Максимально автоматизировать процесс идентификации внутренней
структуры к объектам на уровне приложения. </P>
<P>Реализация :Для начала необходимо понять, как это можно было бы сделать
вручную. Очевидно, брать в руки профайлер настраивать трейсы. Изменяя объекты
приложения сопоставлять данные в трейсах с соответствующими изменениями
объектов. В общем, этот процесс не сложный, но довольно таки трудоемкий и
рутинный. На помощь в автоматизации этого процесса нам приходят триггера MSSQL и
возможность их динамического создания. Кроме этого, имея возможность определения
структуры метаданных как в 1С, так и в MS SQL(системных объектов) мы получаем
весь необходимый инструментарий. </P>
<P>Итак, алгоритм автоматизации заключается в выполнении следующих пунктов: </P>
<P>1) Создаем триггера на все объекты MSSQL базы. В реализации триггера
указывается запись в отдельную таблицу следующих значений : ИмяТаблицы,
ИмяИзмененногоПоля, PK или уникальный индекс измененной записи,
ЗначениеИзВременнойТаблицы. В переменную ЗначениеИзВременнойТаблицы будет
передаваться из 1С соответствующее изменению в объекте 1С. Собственно говоря,
система этих триггеров это есть фактически одна из систем логирования в БД. </P>
<P>2) Реализуем функцию, которая будет передавать в MSSQL значение изменения в
объекте 1С. Передавать мы должны таким образом что бы затем можно было получить
это значение и присвоить переменной ЗначениеИзВременнойТаблицы в вышеописанной
системе триггеров. </P>
<P>3) Организуем циклом перебор метаданных в 1С. Производим последовательное
изменение объектов 1С.Передаем в переменную ЗначениеИзВременнойТаблицы
конкретное изменение объекта. Передать значение в ЗначениеИзВременнойТаблицы
необходимо до выполнения команды изменяющей объект для того что бы триггер
получил информацию о том какой объект 1С его вызвал и какие изменения в этом
объекте произошли. Собственно говоря, в этом пункте и заключается одна из
сложностей не позволяющая этот алгоритм сделать полностью универсальным. Дело в
том, что 1С использует агрегацию данных и кроме этого логика изменений зависит
от текущего состояния объекта. Если мы изменим, значение одного реквизита в
случае, когда документ уже существует в базе и когда этот документ создается
впервые в результате получим различный набор команд к SQL серверу. С агрегацией
аналогичная ситуация. Предположим у нас есть два одинаковых документа с разницей
по дате в год, осуществляющих линейное движение по регистрам(для упрощения без
обработки всякой логики).

Читать всю статью: http://www.klerk.ru/soft/1c?9193