Эта статья обрисовывает реализацию одного из отладки и инструментов тестирования. Рассматривается это на примере идентификации внутренней структуры базы данных [advert=103]1С[/advert] Предприятие 8.0.(SQL) для произвольной конфигурации.
Материал размещён на сайте Softpoint.ru
Владимир СердюкДано: Произвольная конфигурация на базе 1С Предприятие 8.0. (SQL)
Цель: Максимально автоматизировать процесс идентификации внутренней структуры к объектам на уровне приложения.
Реализация: Для начала нужно осознать, как это возможно было бы сделать вручную. Разумеется, брать в руки профайлер настраивать трейсы. Изменяя объекты приложения, сопоставлять данные в трейсах с соответствующими трансформациями объектов.
В общем, данный процесс не сложный, но довольно-таки трудоемкий и рутинный. На помощь в автоматизации этого процесса нам приходят триггера MSSQL и возможность их динамического создания. Также, имея возможность определения структуры метаданных как в 1С, так и в MS SQL(системных объектов), мы приобретаем целый нужный инструментарий.
Итак, метод автоматизации содержится в исполнении следующих пунктов:
1) Создаем триггера на все объекты MSSQL базы. В реализации триггера указывается запись в отдельную таблицу следующих значений : ИмяТаблицы, ИмяИзмененногоПоля, PK либо неповторимый индекс поменянной записи, ЗначениеИзВременнойТаблицы.
В переменную ЗначениеИзВременнойТаблицы будет передаваться из 1С соответствующее трансформации в объекте 1С. Фактически говоря, совокупность этих триггеров это имеется практически одна из совокупностей логирования в БД.
2) Реализуем функцию, которая будет передавать в MSSQL значение трансформации в объекте 1С. Передавать мы должны так что бы после этого возможно было взять это значение и присвоить переменной ЗначениеИзВременнойТаблицы в вышеописанной совокупности триггеров.
3) Организуем циклом перебор метаданных в 1С. Производим последовательное изменение объектов 1С.Передаем в переменную ЗначениеИзВременнойТаблицы конкретное изменение объекта. Передать значение в ЗначениеИзВременнойТаблицы нужно до исполнения команды изменяющей объект для того что бы триггер получил данные о том какой объект 1С его позвал и какие конкретно трансформации в этом объекте случились.
Фактически говоря, в этом пункте и содержится одна из сложностей не разрешающая данный метод сделать всецело универсальным. Дело в том, что 1С применяет агрегацию данных и также логика трансформаций зависит от текущего состояния объекта.
В случае если мы поменяем, значение одного реквизита при, в то время, когда документ уже существует в базе и в то время, когда данный документ создается в первый раз в следствии возьмём разный комплект команд к SQL серверу. С агрегацией подобная обстановка.
Предположим у нас имеется два однообразных документа с отличием по дате в год, осуществляющих линейное перемещение по регистрам(для упрощения без обработки всякой логики). Так вот при проведения первого документа мы возьмём одно количество трансформаций по агрегационным записям, а случае проведения второго второе количество.
Реализовав подобную систему на выходе, мы возьмём соответствие объектов 1С к объектам MS SQL. Само собой разумеется, необходимо осознавать, что информация в взятой таблице довольно-таки сыра и потребует некоей обработки. Также, возможно составить последовательность операций с метаданными и соответствующую обработку результирующей таблицы, дабы выяснить машинально для данной конфигурации внутреннюю структуру данных.
Не имеет значение, будем мы заново создавать либо удалять эту конфигурацию, в какой последовательности создавать в конфигураторе объекты метаданных — подобная система конкретно выяснит соответствие. Но необходимо понимать следующее — для любой произвольно забранной конфигурации эта совокупность трудиться не будет.
Правильнее она будет трудиться, но в случае если для данной конфигурации придумать собственную совокупность трансформации объектов на основании обработки и метаданных результирующей таблицы. Но этого грубо говоря и не требуется.
Подобная система это инструмент. Посредством этого инструмента эксперт достаточно скоро разберется с любой интересующей его структурой.
1с 8.3 УФ: 07. Сложные типы Массив, СписокЗначений, Структура, ТаблицаЗначений, Циклы