1
|
1) В глобмальный модуль конфигурации добавляем переменные:
|
2
|
|
3
|
Перем глМеркурий Экспорт;
|
4
|
Перем глМеркурийИнтеграция Экспорт;
|
5
|
|
6
|
|
7
|
Добавлем код в процедуру
|
8
|
Процедура ПриНачалеРаботыСистемы()
|
9
|
....
|
10
|
|
11
|
//эту загрузку можно переписать как удобнее, у меня 1CPP загружается так
|
12
|
|
13
|
Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "LIB\" + "1cpp.dll") <> 1 Тогда
|
14
|
Предупреждение("Компонента 1cpp.dll не найдена!");
|
15
|
СтатусВозврата(0);
|
16
|
Возврат;
|
17
|
КонецЕсли;
|
18
|
|
19
|
|
20
|
....
|
21
|
//{Подключение модуля интеграции Меркурий
|
22
|
глМеркурий = СоздатьОбъект("Меркурий");
|
23
|
КаталогМеркурий = глМеню.НайтиКаталог("<Меркурий>",0); //здесь указать путь к каталогу обработок
|
24
|
КаталогБиблиотек = КаталогПрограммы() + "LIB\"; //путь к хранилищу стандартных библиотек
|
25
|
ФайлНастроекПользователя = КаталогПользователя()+"Меркурий_Константы"; //имя базового файла настроек пользователя, Тест или рабочий а так же расширение проставятся сами.
|
26
|
ТестовыйРежимРаботыМодуля = Число(ВосстановитьЗначение("Меркурий_РежимРаботыМодуля"));
|
27
|
глМеркурий.Инициализация(КаталогМеркурий,КаталогБиблиотек,ФайлНастроекПользователя,ТестовыйРежимРаботыМодуля);
|
28
|
|
29
|
глМеркурийИнтеграция = СоздатьОбъект("МеркурийИнтеграция"); //Интеграционный модуль, переопределенные функции
|
30
|
глМеркурийИнтеграция.Инициализация(глМеркурий);
|
31
|
//}
|
32
|
....
|
33
|
КонецПроцедуры
|
34
|
|
35
|
|
36
|
|
37
|
2) В каталог базы данных копируем файл defcls.prm
|
38
|
Содержимое файла правим на актуальный путь нахождения модулей.
|
39
|
|
40
|
3) В каталог где хранятся обработки копируем файлы
|
41
|
Меркурий.prm
|
42
|
Меркурий.ert (это бывший ГлобальныйМодуль.txt с изменениями)
|
43
|
МеркурийИнтеграция.ert
|
44
|
|
45
|
4) Изменения
|
46
|
4.1) Подключаемый модуль (глобальный модуль) сделан в виде объекта (его можно дебагить в отладчике).
|
47
|
4.2) Все процедуры переделаны в функции (интуитивное решение)
|
48
|
4.3) Добавленны служебные процедуры по инициализации класса а так же для поддержки механизма переопределения функций (для интеграции).
|
49
|
В начале каждой процедуры добавлен код
|
50
|
|
51
|
...
|
52
|
Функция ПолучитьОтветХС(applicationID, ХС) Экспорт
|
53
|
|
54
|
//{Проверим на переопределение функции, если переопределена вызовем из перекрывающего модуля
|
55
|
ОбъектВыполнения = ПроверитьПереопределениеФункции("ПолучитьОтветХС");
|
56
|
Если ПустоеЗначение(ОбъектВыполнения)=0 Тогда
|
57
|
Возврат ОбъектВыполнения.ПолучитьОтветХС(applicationID, ХС);
|
58
|
КонецЕсли;
|
59
|
//}
|
60
|
|
61
|
//далее стандартное поведение функции
|
62
|
...
|
63
|
|
64
|
в каждую новую функцию этот код надо добавлчть (изменяя имена функции),
|
65
|
|
66
|
4.4) Модуль МеркурийИнтеграция - необходим для переопределения стандартных функций из модуля Меркурий.
|
67
|
Настройка переопределения выполняется при его инициализации, смотреть код там все вроде понятно. Этого модуля может и не быть вовсе, тогда убрать его определение в глобальном модуле.
|
68
|
|
69
|
4.5) Функции в модуле Меркурий переделаны (отвязаны от текущего контекста выполнения). Протестированы пока не все функции.
|
70
|
|
71
|
4.6) Переделан механизм перехода на тестовую и рабочую версии серверов. В обработке Меркурий_Параметры добавлена новая кнопка, через которую происходит переключение между тестовой и рабочей версии. Анализ имени запускаем обработки на наличие _ТЕСТ не выполняется. (Пока актуально только для уже переработанных обработок).
|
72
|
|
73
|
4.7) Сгруппированы параметры в обработке Меркурий_Параметры
|
74
|
|
75
|
4.8) Проведено тестирование процедур в обработке Меркурий_Параметры - все работает, внесены изменения в код.
|
76
|
|
77
|
4.9) Занимаюсь переработкой/тестирование модуля Меркурий_Обмен ....
|