Обмен между базами 1с через com очень долго идет аутентификация
У меня возник следующий вопрос - есть самописная конфигурация на 1С 8.2, база в файловом варианте на сервере Win 2008 R2. Необходимо с заданной периодичностью организовать выгрузку данных (справочников и документов) из 1С в SQL-ю базу (не 1С - овскую), которая в свою очередь развернута на MS SQL 2012. Структура данных - достаточно развернутая, т.е. это не просто перекачка данных один в один из 1С в SQL. Периодичность обмена данными - предположительно 1 раз в 2 минуты. Я никогда не занимался вопросами интеграции между 1С 8 и SQL Server, в связи с чем вопросы:
- Какие прикладные механизмы 1С 8 предпочтительнее задействовать для обмена данными в данном случае - имеет ли смысл задействовать регламентные задания, которые будут с заданной периодичностью запускать написанную мной обработку обмена или предпочтительнее что то еще ?
- Какие win - довые механизмы желательно задействовать для доступа к объектам SQL с учетом достаточно высокой интенсивности обмена данными - имеет ли смысл использовать ODBC, OLE DB или что то еще ?
- Как все-таки правильнее было бы организовать обмен - в обработке прописывать всю процедуру обмена или просто генерировать SQL - скрипт, который и передавать на выполнение серверу ?
кроме интенсивности еще надо знать средний объем в одном цикле обмена
Если Не( ЗначениеЗаполнено ( Провайдер )) Тогда
Провайдер = "SQLOLEDB" ;
КонецЕсли;
ИмяСервера = мСтруктураПараметров . ИмяСервера ;
Если Не ЗначениеЗаполнено ( ИмяСервера ) Тогда
ИмяСервера = ".<ИмяСервера>" ;
КонецЕсли;
ИмяБД = мСтруктураПараметров . ИмяБазыДанных ;
Пользователь = мСтруктураПараметров . ИмяПользователя ;
Пароль = мСтруктураПараметров . ПарольПользователя ;
СтрокаПодключения = "Provider=" + Провайдер + ";Data Source=" + ИмяСервера + ";Initial Catalog=" + ИмяБД ;
Если Не ЗначениеЗаполнено ( Пользователь ) Тогда
СтрокаПодключения = СтрокаПодключения + ";Integrated Security=SSPI;"
Иначе
СтрокаПодключения = СтрокаПодключения + ";UID=" + Пользователь + ";PWD=" + Пароль + ";" ;
КонецЕсли;
Соединение = Новый COMОбъект ( "ADODB.Connection" );
Соединение . ConnectionString = СтрокаПодключения ;
Соединение . ConnectionTimeOut = 30 ;
Соединение . CommandTimeout = 120 ;
КонецФункции //CreateADOConnection
Функция RunDataImportRoutine ( мИмяСервера = "" , мСоединение = Неопределено ) Экспорт
Результат = Ложь;
Если мСоединение = Неопределено Тогда
СтруктураПараметров = Новый Структура ( "Провайдер,ИмяСервера,ИмяБазыДанных,ИмяПользователя,ПарольПользователя" ,
"SQLOLEDB" ,
"<ИмяСервера>" ,
"<ИмяБазыНаCервере>" );
Соединение = CreateADOConnection ( СтруктураПараметров );
Иначе
Соединение = мСоединение ;
КонецЕсли;
Если Соединение = Неопределено Тогда
Возврат Результат ;
КонецЕсли;
СтрокаЗапроса = "SELECT * FROM [<ИмяБазыНаCервере>].[dbo].[<ИмяТаблицыВСкуле>] WHERE [DBCode]=" + СокрЛП ( КодУзлаБД )+ " ORDER BY [Timestamp]" ;
ТаблицаВнешнихДанных = GetADODBRecordsetData ( Соединение , СтрокаЗапроса );
Для каждого ТекСтрока Из ТаблицаВнешнихДанных Цикл
СтруктураПараметров = Новый Структура ( "IDRef, Вид, СтруктураДанных" );
СтруктураПараметров . IDRef = ТекСтрока . IDRef ;
СтруктураПараметров . Вид = ТекСтрока . DocumentType ;
СтруктураПараметров . СтруктураДанных = ТекСтрока . StructuredData ;
ТекСсылка = ПолучитьДокумент ( СтруктураПараметров );
Если ЗначениеЗаполнено ( ТекСсылка ) Тогда
СтрокаЗапроса = "DELETE FROM [<ИмяБазыНаCервере>].[dbo].[<ИмяТаблицыВСкуле>] WHERE [IDRef]=" + ПреобразоватьЗначениеДляЗапроса ( ТекСтрока . IDRef );
EXecuteADOQuery ( Соединение , СтрокаЗапроса );
КонецЕсли;
КонецЦикла;
- Зачем нужны обмены данных и как их использовать?
- Виды обменов между 1С.
- Как произвести настройку обмена данными между базами 1С?
Ответы на эти вопросы Вы узнаете ниже.
Если Вас интересуют услуги по настройке обмена данными между 1С и не только, подробности на странице Услуги 1С программиста.
Зачем нужны обмены данных между 1С?
Причин для внедрения обменов, как правило, две:
Организация имеет филиальную сеть
Разделение по видам учета
Какие бывают механизмы обмена между базами 1С?
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Обмены данных можно классифицировать по двум направлениям: используемые механизмы и используемый транспорт для обмена.
Механизмы обмена данными 1С
Как правило, при обмене используется два механизма:
Транспорт для обмена данными
Транспортом может выступать достаточно широкий спектр технологий. Рассмотрим основные, реализованные в универсальном механизме обмена 1С:
Как настроить обмен данными между базами 1С?
Первым делом необходимо создать узлы информационных баз:
Если обмен настраивается через каталог, электронную почту или FTP, настройки необходимо настраивать в двух базах данных.
Если обмен происходит прямым подключением или через веб-сервис, достаточно настройки с одной стороны (важно не забыть указать правила загрузки в базу обмена).
Тут важно обратить внимание на следующие моменты:
Всё, настройка закончена. Теперь для запуска обмена достаточно лишь нажать на кнопку выполнения обмена.
Обмен данными 1С по расписанию в 1С
Если необходимо настроить автоматическую выгрузку по расписанию, достаточно настроить регламентные задания.
Для клиент-серверного варианта
Для файлового варианта
Статьи для программиста по обмену данными в 1С
Есть 2 базы. Клиент-сервер, на одном скуле и на одном сервере 1С. 8.3.8.1652. Из первой, почти пустой, подключаюсь через COM ко второй - УПП.
Затраты на подключение - 10 секунд. Есть какие-либо фокусы по ускорению?
Счетчик = Счетчик + 1;
затрачено = ТекущаяУниверсальнаяДатаВМиллисекундах() - началоЗамера;
Сообщить( "" + Счетчик + "." + ТекущаяДатаСеанса() + ": " + затрачено + "мс" );
Модуль с повторным использованием юзаю. Так же в фоновом задании пробую получить соединение и пробрасываю его в сеанс через временное хранилище, но там в 90% случаев приходит Неопределено. В УПП весь код по инициализации не выполняется.
COM 1с сделан специально медленным для защиты от всяких программ подбора паролей.
ну и второе - лицензии получаются долго.
я специально проверял (правда давно на 8.0), быстрее 4 секунд авторизацию через COM не пройти
(4) Первое подключение через веб-сервис - 2 секунды, что так же не назвать комфортным. Но затраты на разработку через них существенно выше. Так то жду 8.3.9 с пулом и обещанным ускорением в разы.
(5) Работайте с КОМ на клиенте. Одно подключение может жить в течении всего сеанса.
(5) кстати - не советую пытаться добиться работы с COM работы внутри транзакции 1с. много раз уже осуждали.
по этому мне кажется, что сабж изначально дурной.
вместо попыток синхронизации данных с внешней системой внутри транзакции нужно идти в сторону регистрации изменений и обработку коллизий.
(8) Тогда никак не ускориться. Смириться с тем, что есть и пытаться решать задачу другими способами.
(7) Я понимаю, что лучше делать грамотный обмен с обработкой коллизий и через веб-сервисы, но я не готов ради этой задачи выделять столько ресурсов.
(10) а зачем вы в фоновом задании юзаете? Просто соханяйте соединение это в параметр сеанса. И используйте
(11) в параметре сеанса в 8.3 не сохранить соединение. Само соединение получается в модуле с повторным использованием на сеанс, поэтому первое подключение занимает 10сек, а остальные мгновенно. Кеш живет 20 минут, вроде б, потом опять происходит подключение.
При старте сеанса запускаю фоновое задание, которое получает соединение и кладет его во временное хранилище, при получении соединения сперва смотрю это временное хранилище и если там лежит валидное подключение, то возвращаю его, если нет, то подключаюсь. Таким образом иногда получается в фоне заполучить соединение и пользователь не замечает тормозов. Но вот почти всегда вместо соединения во временном хранилище лежит неопределено.
Планируется переход на версию 8.3, поэтому на данный момент работают две платформу 8.2.19.83 и 8.3.5.1486. (ключ 64 битный)
7 баз 8.2 с кол-во пол-ей не более 30 (sql1)
5 баз 8.3 с кол-по пол-ей от 1-2 (sql2)
Имеем хаотические проблемы связанные с кластером 8.3 , периодически очень долго запускаются базы 8.3 ( от 30 -5 минут)
и вылетают пол-и из за нехватки памяти.
Были проделаны работы:
а) Оптимизация работа по памяти кластера 8.3
параметры кластера:
Интервал перезапуска:86400
Интервал превышения допустимого объема памяти:30
Включенные процессы останавливать через:30
Приоритет по памяти
параметры рабочего сервера:
Безопасный расход памяти 512мб
Объем памяти рабочих процессов, до которого сервер считается проивод 700 мб
Кол-во ИБ на процесс: 1
Кол-во соединений на процесс 25
Решило проблему с вылетами
2) Перенастройка клиентов на поиск лицензии со стороны сервера с исправлением файла на сервере nethasp.ini
NH_SERVER_ADDR = 192.168.112.18
NH_USE_BROADCAST = Disabled
В данном случаи у нас 30 лицензий программных и ключ на 10 на 18 сервере.
3) После старта службы агента 8.3 в логах зафиксирована проблема:
Сбойное приложение ragent.exe, версия 8.3.5.1486, штамп времени 0x54f76689, сбойный модуль rtrsrvc.dll, версия 8.3.5.1486, штамп времени 0x54f7685d, код исключения 0xc0000005, смещение ошибки 0x00000000000020f4, ИД процесса 0xcb4, время запуска приложения 0x01d065fa56ec19bd.
4) Была попытка переставить платформу (8.3) с нуля, но ошибка осталась.
5) Было принято решение совместить базы с первым скулем.
6) Технический журнал 1с отдан по ИТС поддержке, ошибок не обнаружено.
На данный момент все ВМ лежат к кластере Hyper-V. Из предполаемых решений только 2:
а) Разнести службы на разных пользователей
6) Сменить диапазон портов на 8.3 службе
в) Поднять 2012 r2 (запланирован переход инфраструктуры под hyper-v 3.0) и установить скуль внутрь машины, посмотреть что будет.
Когда кластер 1c функционировал только как 1с 8.2, объем памяти был равен - 2 гб с 1 ядром. И никаких проблем с производительностью никогда не было. Поэтому увеличение ОЗУ до 4 гб и ядер до 2- ух, обусловлено тем, что базы работают в тестовом режиме. Учитывая что все транзакции у нас обрабатывает скуль а запросы делает пользователь как толстый клиент. Выставлять большее значение я на тот момент не видел смысла. При чем проблемы зафиксированы в основном утром, неважно один человек заходит или 4 сразу. В середине дня проблем не зафиксировано.
P.S. 8.2 работает как и раньше, с ней все хорошо.
Победа далась не легко….
Я постараюсь описать все детально, хотя и прошло довольно много времени. Надеюсь информация, собранная мною поможет системным администраторам и даст пишу для размышления.
Перенес я базы на 1 скуль и переназначил я пользователя для 8.3 агента – не помогло…
Исколесил я наш рунет вдоль и поперек и нашел две интересные статьи, которые предлагаю и вам ознакомиться.
Покопавшись где-то с недельку и перепробовав несколько методик, проблему с первым запуском я решить не смог. Но заметил одну интересную закономерность… При работе тонкого клиента, второй запуск системы происходит почти моментально. Изменил настройки кол-во ИБ на процесс: 8 (баз на 8.3 пока что 5). В итоге так как на создание RPHOST сервер перестал тратить время при заходе в след. базу и оставшееся он тратил только на выгрузку конфы из скуля. Сократил время старта второй баз на 10-7 секунд.
Такой вариант меня в принципе устраивает полностью, учитывая, что с каждой базой работает по 7-10 пользователей, конфа держится постоянно в RPHOSTe и время захода равняется 4-8 секундам с аутентификацией вместе.
Если же у вас имеются проблемы что базу открывают не часто, то как вариант могу предложить напилить небольшое рег. задание по заходу польз. в каждую базу и настроить перезагрузку сервиса на вечернее время (либо через сервисы или интервал перезапуска). Думаю, это должно помочь, хотя тут мы упираемся в наличие лицензии, так что надо думать)))
Но всплыл еще один неприятный момент, на одном из форумов я получил вот такой ответ:
Offtop. У вас лицензии КОРП?
Расширенные возможности сервера уровня КОРП «1С:Предприятия 8.3» по сравнению с 64-разрядным сервером уровня ПРОФ:
* безопасный расход памяти за один вызов;
* количество ИБ на процесс;
* объем памяти рабочих процессов, до которого сервер считается производительным;
* максимальный объем памяти рабочих процессов;
*стратегия балансировки (по памяти, по производительности);
Использование перечисленных функциональных возможностей при помощи продуктов «1С:Предприятие 8. Лицензия на сервер (x86-64)» уровня ПРОФ, то есть не имеющих в названии обозначения КОРП, является неправомерным.
Решил уточнить у ребята из трех разных компаний, знают ли они что есть платформа корп и проф. На что был получен ответ в виде: крутящегося пальца у виска и посылка на форум 1с. И вот ниже ответ от саппорта 1с:
Фактически при использовании Платформы ПРОФ ,согласно лицензии, можно использовать только дефолтные настройки кластера.
Если при настройках кластера "по умолчанию" у Вас возникают проблемы (нехватка памяти, невозможность обновить конфигурацию и тд), то
данное поведение является ошибкой (либо платформы либо данного прикладного решения).
Просьба с конкретными примерами создавать обращения на исправление.
На время исправления ошибки может быть письменно выдано разрешение (за подписью директора ЗАО "1С") на использования функционала лицензии Корп.
2) >>> Прошу уточнить, т.е. есть две платформы 8.3?
Нет. Платформа не текущий момент одна.
Однако право использования функционала КОРП появляется только при покупке соответствующей лицензии.
Программного контроля данной лицензии на текущий момент также нет.
Таким образом лицензия КОРП является больше юридическим понятием.
Подсистема «Обмен данными» библиотеки стандартных подсистем содержит 4 варианта ( технологии) обмена информацией между различными информационными базами:
- распределенные информационные базы (РИБ);
- обмен данными через универсальный формат;
- обмен данными по правилам обмена (правила обмена создаются при помощи конфигурации «Конвертация данных», редакция 2.1);
- обмен данными без правил обмена.
Рис. 1 Последние релизы БСП 2.3
Описание формата EnterpriseData
Что такое формат EnterpriseData ?
Это формат, позволяющий описать объект информационной базы (контрагента, накладную и т.п.) или сообщить о факте удаления этого объекта. Ожидается, что конфигурация, получившая файл в формате EnterpriseData, отреагирует соответствующим образом – создаст у себя новые объекты и удалит те, которые в файле помечены как удаленные. Он предназначен для обмена информацией между конфигурациями УТ, РТ, УНФ, БП. Также формат может использоваться для обмена информацией с любыми другими информационными системами: он не зависит от особенностей собственного программного обеспечения или структур информационных баз, которые участвуют в обмене и не содержит в себе явных ограничений использования.
Версия формата EnterpriseData
Рис. 3 Структура XDTO-пакетаExchangeMessage
Как обмениваться данными в формате EnterpriseData?
- через выделенный файловый каталог,
- через каталог FTP,
- через веб-сервис, развернутый на стороне информационной базы. Файл с данными передается как параметр веб-методов.
При обмене с использованием планов обмена конфигурации в ходе синхронизации передают только информацию об изменениях, произошедших со времени последней синхронизации (чтобы минимизировать объем передаваемой информации). При первой синхронизации конфигурация выгрузит все объекты в формате EnterpriseData в XML-файл (поскольку все они являются «новыми» для стороннего приложения).
При передаче данных от внешнего приложения в конфигурацию картина меняется на обратную. Приложение должно заполнить секцию <Confirmation> соответствующим образом, а в секцию <Body> поместить объекты для синхронизации в формате EnterpriseData.
Более подробно об обмен данными с прикладными решениями на платформе «1С:Предприятие» в формате EnterpriseData можно посмотреть здесь
Процедуры и функции, полностью описывающие правила выгрузки данных из информационной базы в формат обмена и правила загрузки данных из формата обмена в информационную базу, разрабатываются в общем модуле – модуле менеджера обмена через универсальный формат.
Рис. 4 Структура модуля менеджера обмена через универсальный формат
Модуль создается автоматически с помощью конфигурации «Конвертация данных», редакция 3.0, на основе настроенных правил обмена либо вручную в конфигураторе.
Модуль состоит из нескольких крупных разделов, каждый из которых содержит свою группу процедур и функций.
- Комментарий. Первая строка модуля содержит комментарий с наименованием конвертации. Эта строка необходима для идентификации модуля при использовании команды Загрузка обработчиков в программе «Конвертация данных», редакция 3.0., например. // Конвертация УП2.2.3 от 01.06.2017 19:51:50
- Процедуры конвертации. Содержит предопределенные процедуры, которые выполняются на разных этапах синхронизации данных: перед конвертацией, после конвертации, перед отложенным заполнением.
- Правила обработки данных (ПОД). Содержит процедуры и функции, которые описывают правила обработки данных.
- Правила конвертации объектов (ПКО). Содержит процедуры и функции, которые описывают правила конвертации объектов, а также правила конвертации свойств данных объектов.
- Правила конвертации предопределенных данных (ПКПД). Содержит процедуру, заполняющую правила конвертации предопределенных данных.
- Алгоритмы. Содержит произвольные алгоритмы, которые вызываются из других правил (ПОД или ПКО).
- Параметры. Содержит логику заполнения параметров конвертации.
- Общего назначения. Содержит процедуры и функции, которые широко используются в правилах и алгоритмах.
Ниже описаны параметры процедур и функций, которые используются в нескольких видах процедур модуля менеджера.
КомпонентыОбмена. Тип – Структура. Содержит параметры и правила обмена, инициализированные в рамках выполнения сеанса обмена.
НаправлениеОбмена. Тип – Строка. Либо «Отправка», либо «Получение».
ДанныеИБ. Тип – СправочникОбъект либо ДокументОбъект.
Процедуры, связанные с событиями конвертации
Предусмотрены три предопределенные процедуры, которые вызываются в процессе конвертации:
- ПередКонвертацией. Вызывается перед выполнением синхронизации данных. Обычно в этой процедуре размещается логика инициализации различных параметров конвертации, заполнения значений по умолчанию и т. д. Параметры:КомпонентыОбмена.
- ПослеКонвертации. Вызывается после выполнения синхронизации данных, но до выполнения отложенного заполнения. Параметры:КомпонентыОбмена.
- ПередОтложеннымЗаполнением. Вызывается перед выполнением отложенного заполнения. Здесь может быть расположена логика сортировки или корректировки таблицы объектов, подлежащих отложенному заполнению. Параметры:КомпонентыОбмена.
Процедуры ПОД
ЗаполнитьПравилаОбработкиДанных. Экспортная процедура, в которой располагается логика заполнения правил обработки данных. Содержит вызовы других процедур, которые добавляют в таблицу правил правило обработки конкретного объекта (см. ниже процедуры ДобавитьПОД). Параметры: НаправлениеОбмена, ПравилаОбработкиДанных (таблица значений, инициализированная в рамках выполнения сеанса обмена).
ДобавитьПОД_<ИмяПОД>. Набор процедур, которые наполняют таблицу ПОД правилами для конкретных объектов. Количество таких процедур соответствует количеству ПОД, предусмотренных для данной конвертации в программе «Конвертация данных», редакция 3.0. Параметры: ПравилаОбработкиДанных (таблица значений, инициализированная в рамках выполнения сеанса обмена).
ПОД_<ИмяПОД>_ПриОбработке. Процедура содержит текст обработчика ПриОбработке для конкретного ПОД. Обработчик предназначен для реализации логики конвертации на уровне объектов. Например, назначить конкретному объекту определенное ПКО в зависимости от содержимого объекта. Параметры:
- ДанныеИБлибо ДанныеXDTO (в зависимости от направления обмена):
- при отправке – объект (СправочникОбъект,ДокументОбъект);
- при получении – структуру с описанием объекта XDTO.
- ИспользованиеПКО. Тип –Структура. Ключ содержит строку с именем ПКО, а значение типа Булево (Истина – ПКО используется, Ложь – ПКО не используется).
- КомпонентыОбмена.
ПОД_<ИмяПОД>_ВыборкаДанных. Функция содержит текст обработчика ПриВыгрузке. Обработчик предназначен для реализации произвольного алгоритма выборки объектов, подлежащих выгрузке. Возвращаемое значение: массив объектов, подлежащих выгрузке. В массиве могут содержаться как ссылки на объекты информационной базы, так и структура с данными для выгрузки. Параметры: КомпонентыОбмена.
Процедуры ПКО
ЗаполнитьПравилаКонвертацииОбъектов. Экспортная процедура, в которой располагается логика заполнения правил конвертации объектов. Содержит вызовы других процедур, которые добавляют в таблицу правил правило конвертации конкретного объекта (см. ниже процедуры ДобавитьПКО). Параметры: НаправлениеОбмена, ПравилаКонвертации (таблица значений, инициализированная в рамках выполнения сеанса обмена).
ДобавитьПКО_<ИмяПКО>. Набор процедур, которые наполняют таблицу ПКО правилами для конкретных объектов. Количество таких процедур соответствует количеству ПКО, предусмотренных для данной конвертации в программе «Конвертация данных», редакция 3.0. Параметры: ПравилаКонвертации (таблица значений, инициализированная в рамках выполнения сеанса обмена).
ПКО_<ИмяПКО>_ПриОтправкеДанных. Процедура содержит текст обработчика ПриОтправке для конкретного ПКО. Обработчик используется при выгрузке данных. Предназначен для реализации логики конвертации данных, содержащихся в объекте информационной базы, в описание объекта XDTO. Параметры:
- ДанныеИБ. Тип –СправочникОбъект, ДокументОбъект. Обрабатываемый объект информационной базы.
- ДанныеXDTO. Тип –Структура. Предназначен для доступа к данным объекта XDTO.
- КомпонентыОбмена.
- СтекВыгрузки. Тип –Массив. Содержит ссылки на выгружаемые объекты с учетом вложенности.
ПКО_<ИмяПКО>_ПриКонвертацииДанныхXDTO. Процедура содержит текст обработчика ПриКонвертацииДанныхXDTO для конкретного ПКО. Обработчик используется при загрузке данных. Предназначен для реализации произвольной логики конвертации данных XDTO. Параметры:
- ДанныеXDTO. Тип –Структура. Свойства объекта XDTO, прошедшие предварительную обработку для упрощения доступа к ним.
- ПолученныеДанные. Тип –СправочникОбъект, ДокументОбъект. Объект информационной базы, сформированный путем конвертации данных XDTO. Не записан в информационную базу.
- КомпонентыОбмена.
ПКО_<ИмяПКО>_ПередЗаписьюПолученныхДанных. Процедура содержит текст обработчика ПередЗаписьюПолученныхДанных для конкретного ПКО. Обработчик используется при загрузке данных. Предназначена для реализации дополнительной логики, которую необходимо выполнить перед записью объекта в информационную базу. Например, нужно ли загрузить изменения в существующие данные ИБ либо следует загрузить их как новые данные. Параметры:
- ПолученныеДанные. Тип –СправочникОбъект, ДокументОбъект. Элемент данных, сформированный путем конвертации данных XDTO.
Записывается в случае, если эти данные являются для информационной базы новыми (параметр ДанныеИБ содержит значение Неопределено).
В противном случае ПолученныеДанные замещают собой ДанныеИБ (все свойства из ПолученныеДанные переносятся в ДанныеИБ).
Если стандартное замещение данных ИБ полученными данными не требуется, следует прописать свою логику переноса, после чего установить параметру ПолученныеДанные значение Неопределено:
- ДанныеИБ. Тип –СправочникОбъект, ДокументОбъект. Элемент данных информационной базы, соответствующий полученным данным. Если соответствующие данные не найдены, содержит Неопределено.
- КонвертацияСвойств. Тип –Таблица значений. Содержит правила конвертации свойств текущего объекта, инициализированные в рамках выполнения сеанса обмена.
- КомпонентыОбмена.
Процедуры ПКПД
ЗаполнитьПравилаКонвертацииПредопределенныхДанных. Экспортная процедура, в которой располагается логика заполнения правил конвертации предопределенных данных. Параметры: НаправлениеОбмена, ПравилаКонвертации (таблица значений, инициализированная в рамках выполнения сеанса обмена).
Алгоритмы
В программе «Конвертация данных», редакция 3.0 есть возможность создавать произвольные алгоритмы, которые вызываются из обработчиков ПОД и ПКПД. Наименование, параметры и содержимое алгоритмов определяются при разработке правил.
Параметры
ЗаполнитьПараметрыКонвертации. Экспортная процедура, в которой происходит заполнение структуры с параметрами конвертации. Параметры: ПараметрыКонвертации (тип – Структура).
Процедуры и функции общего назначения
ВыполнитьПроцедуруМодуляМенеджера. Параметры: ИмяПроцедуры (строка), Параметры (структура). Экспортная процедура, которая предназначена для вызова неэкспортной процедуры модуля, имя и параметры которой получены на вход. Позволяет выполнить вызов процедуры или функции по строке без использования метода Выполнить.
ВыполнитьФункциюМодуляМенеджера. Параметры: ИмяПроцедуры (строка), Параметры (структура). Функция, назначение аналогично ВыполнитьПроцедуруМодуляМенеджера. Отличие в том, что она вызывает функцию и возвращает ее значение.
Читайте также: