Проект

Общее

Профиль

RE: Интеграция с 1С 7.7 Бухгалтерия (записки с фронта). » Обновление.txt

Анисимов Михаил, 19.09.2017 15:20

 
1) В глобмальный модуль конфигурации добавляем переменные:

Перем глМеркурий Экспорт;
Перем глМеркурийИнтеграция Экспорт;


Добавлем код в процедуру
Процедура ПриНачалеРаботыСистемы()
....

//эту загрузку можно переписать как удобнее, у меня 1CPP загружается так

Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "LIB\" + "1cpp.dll") <> 1 Тогда
Предупреждение("Компонента 1cpp.dll не найдена!");
СтатусВозврата(0);
Возврат;
КонецЕсли;

....
//{Подключение модуля интеграции Меркурий
глМеркурий = СоздатьОбъект("Меркурий");
КаталогМеркурий = глМеню.НайтиКаталог("<Меркурий>",0); //здесь указать путь к каталогу обработок
КаталогБиблиотек = КаталогПрограммы() + "LIB\"; //путь к хранилищу стандартных библиотек
ФайлНастроекПользователя = КаталогПользователя()+"Меркурий_Константы"; //имя базового файла настроек пользователя, Тест или рабочий а так же расширение проставятся сами.
ТестовыйРежимРаботыМодуля = Число(ВосстановитьЗначение("Меркурий_РежимРаботыМодуля"));
глМеркурий.Инициализация(КаталогМеркурий,КаталогБиблиотек,ФайлНастроекПользователя,ТестовыйРежимРаботыМодуля);
глМеркурийИнтеграция = СоздатьОбъект("МеркурийИнтеграция"); //Интеграционный модуль, переопределенные функции
глМеркурийИнтеграция.Инициализация(глМеркурий);
//}
....
КонецПроцедуры



2) В каталог базы данных копируем файл defcls.prm
Содержимое файла правим на актуальный путь нахождения модулей.

3) В каталог где хранятся обработки копируем файлы
Меркурий.prm
Меркурий.ert (это бывший ГлобальныйМодуль.txt с изменениями)
МеркурийИнтеграция.ert

4) Изменения
4.1) Подключаемый модуль (глобальный модуль) сделан в виде объекта (его можно дебагить в отладчике).
4.2) Все процедуры переделаны в функции (интуитивное решение)
4.3) Добавленны служебные процедуры по инициализации класса а так же для поддержки механизма переопределения функций (для интеграции).
В начале каждой процедуры добавлен код

...
Функция ПолучитьОтветХС(applicationID, ХС) Экспорт
//{Проверим на переопределение функции, если переопределена вызовем из перекрывающего модуля
ОбъектВыполнения = ПроверитьПереопределениеФункции("ПолучитьОтветХС");
Если ПустоеЗначение(ОбъектВыполнения)=0 Тогда
Возврат ОбъектВыполнения.ПолучитьОтветХС(applicationID, ХС);
КонецЕсли;
//}

//далее стандартное поведение функции
...
в каждую новую функцию этот код надо добавлчть (изменяя имена функции),

4.4) Модуль МеркурийИнтеграция - необходим для переопределения стандартных функций из модуля Меркурий.
Настройка переопределения выполняется при его инициализации, смотреть код там все вроде понятно. Этого модуля может и не быть вовсе, тогда убрать его определение в глобальном модуле.

4.5) Функции в модуле Меркурий переделаны (отвязаны от текущего контекста выполнения). Протестированы пока не все функции.

4.6) Переделан механизм перехода на тестовую и рабочую версии серверов. В обработке Меркурий_Параметры добавлена новая кнопка, через которую происходит переключение между тестовой и рабочей версии. Анализ имени запускаем обработки на наличие _ТЕСТ не выполняется. (Пока актуально только для уже переработанных обработок).

4.7) Сгруппированы параметры в обработке Меркурий_Параметры

4.8) Проведено тестирование процедур в обработке Меркурий_Параметры - все работает, внесены изменения в код.

4.9) Занимаюсь переработкой/тестирование модуля Меркурий_Обмен ....

(4-4/5)