OrionXL

1С Правила Регистрации Объектов (ПРО). Обмен данными. Планы обмена.

Роман Иванов @ 11:27 16.10.2011

В этой статье Вы узнаете как создавать и настраивать план обмена с регистрацией обмена по настраиваемым правилам. Официальные источники замалчивают вопросы этой тематики (на текущий момент времени), скорее всего это связано с доработками исходных кодов...

Для чего нужны настраиваемые правила регистрации? Иногда В большинстве случаев возникает необходимость передавать информацию об объектах в соответствии с некоторыми правилами: ограничение по дате, по контрагенту, по складу, по типу операций и т.д. Стандартный механизм позволяет настраивать ограничения по типу метаданных (тип документа и т.д.), поэтому для выборочной регистрации объектов в плане обмена необходимо использовать соответствующий механизм. Однако, ограничить передачу информации можно и на уровне правил обмена данными, но это не так эффективно, т.к. в этом случае у вас отбор объектов будет проводится на момент выгрузки-загрузки данных.

Для использования этого механизма необходимо в конфигурации наличия определенных объектов, которые доступны в наборе типовых объектов конфигурации – Обмен Данными.

И так, прежде всего вам необходимо настроить и создать правила регистрации объектов (ПРО), сделать это наиболее удобно в конфигурации «Конвертация». Более подробная и детальная схема по созданию ПРО описана в разделе справки.

Первый шаг. Создадим план обмена. Назовем его «Обмен с внешней базой», можно использовать типовой.

Создадим в нем два реквизита: Организация (Справочник.Организации) и ГраничнаяДата (Дата и время).

В регистрации свойств установим регистрацию документа и регистра сведений «Сопоставление Объектов Информационных Баз», если планируется использовать механизм «Универсального обмена данными XML».

Дополнительно в модуле плана обмена добавим функции необходимые для идентификации плана обмена - Функция ВерсияОбменаДанными() Экспорт и другие, есть в примерах.

Второй шаг. Остановимся на правилах регистрации для объекта: Документ "Реализация Товаров и Услуг".

Правила регистрации объектов для документа «Реализация товаров и услуг»

Правила регистрации объектов для документа «Реализация товаров и услуг»

Рис. 1 Правила регистрации объектов для документа «Реализация товаров и услуг»

Т.к. мы создали в плане обмена два реквизита для фильтрации объектов, то в ПРО укажим эти условия сравнения. Для фильтра «Организации» установим равенство организации указанной в узле обмена и источника документа на равенство. А для фильтра «Граничная дата» сравним дату документа с датой из узла (больше и равно). Если требуются более сложные правила, то Вы всегда можете использовать обработчики событий. К примеру, если требуется проверить условия по вхождению контрагента по «неким правилам» используйте свой код проверки, результатом должно быть значение флага Отказ (Отказ=Истина – не прошел, Отказ=Ложь – все ок).

Выгружаем и сохраняем ПРО.

Шаг третий. После, того как мы сохранили правила нам нужно связать его с соответствующим планом обмена. Эти функции выполняет регистр сведений «Правила для обмена данными», либо через мастер настроек.

Добавление данных в регистр сведений «Правила обмена данными»

Добавление данных в регистр сведений «Правила обмена данными»

Рис. 2 Добавление данных в регистр сведений «Правила обмена данными»

Выбираем план обмена из загружаем ПРО из типовых (список макетов) или из файла на диске. После этой операции наш план обмена будет связан с этими правилами.

Шаг четвертый. Если вы создаете свой план, тогда необходимо добавить еще подписку на событие. Для этого создадим объект с именем «Обмен данными с внешними базами», укажем событие при записи и тип источника «Документ Реализация Товаров и Услуг» (можно использовать составной), и создадим процедуру в которую необходимо вставить следующий код:

Процедура ОбменДаннымиСВнешнимиБазамиПриЗаписи(Источник, Отказ) Экспорт
// проверка для регистрации объекта
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписью("ОбменСБухгалтерией", Источник, Отказ);
КонецПроцедуры

Заключение. Все, теперь выбранные объекты данных будут регистрироваться в зависимости от необходимых произвольных условий. Если вы используете типовую конфигурацию – Бухгалтерию, УТ, УПП или др., то Вам всего, лишь необходимо создать ПРО и связать их с типовым планом обмена.

Полезные функции и процедуры для платформы 1С 8

Роман Иванов @ 19:41 07.09.2011

Функция преобразования строки текста в браузерно ориентированное представление, аналог urlencode

Вариант первый для версии 1С 8

функция urlencode(стр)
перем хекс[16];
хекс[1]="0";
хекс[2]="1";
хекс[3]="2";
хекс[4]="3";
хекс[5]="4";
хекс[6]="5";
хекс[7]="6";
хекс[8]="7";
хекс[9]="8";
хекс[10]="9";
хекс[11]="A";
хекс[12]="B";
хекс[13]="C";
хекс[14]="D";
хекс[15]="E";
хекс[16]="F";
рез="";
для сч=1 по стрДлина(стр) цикл
чар=сред(стр,сч,1);
если (чар>="a")и(чар<="z") тогда рез=рез+чар; продолжить; конецЕсли;
если (чар>="A")и(чар<="Z") тогда рез=рез+чар; продолжить; конецЕсли;
если (чар>="0")и(чар<="9") тогда рез=рез+чар; продолжить; конецЕсли;
кс=кодСимв(чар);
рез=рез+"%"+ хекс[ цел(кс/16)+1 ] + хекс[ цел(кс%16)+1 ];
конецЦикла; // сч=1...стрДлина(стр)
возврат рез;
конецФункции // urlencode(стр)

Вариант второй для версии 1С 8

Функция URLEncode(Стр1)

СтрокаСимволов = " !""@№#;%:?*().,/$^&";

Рез = "";
Стр= СокрЛП(Стр1);
Для Сч=1 По СтрДлина(Стр) Цикл

Символ = Сред(Стр, Сч, 1);
КС = КодСимвола(Символ);
// Перевод из UNICODE в ASCII
Если ((КС > 1039) И (КС < 1104)) Тогда
КС = КС - 848;
ИначеЕсли КС = 8470 Тогда
КС = 185;
ИначеЕсли КС = 1105 Тогда
КС = 184;
ИначеЕсли КС = 1025 Тогда
КС = 168;
КонецЕсли;

флЗаменили = 0;
Если Найти(СтрокаСимволов, Символ) > 0 Тогда

Рез = Рез + "%"+ Hex[Цел(КС/16)] + Hex[Цел(КС%16)];
флЗаменили = 1;

КонецЕсли;

Если (КС <= 127) и (флЗаменили = 0) Тогда
Рез = Рез + Символ;
ИначеЕсли флЗаменили = 0 Тогда
Рез = Рез + "%"+ Hex[Цел(КС/16)] + Hex[Цел(КС%16)];
КонецЕсли;

КонецЦикла;

Возврат Рез;
КонецФункции // URLEncode()

Вариант третий для версии 1С 8

Функция URLEncode4(Строка="")
ScrCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
ScrCtrl.Language="JScript";
Сообщение = ScrCtrl.eval("var uri='"+Строка+"'; encodeURI(uri);") ;
Возврат Сообщение;
КонецФункции

Функция URLEncode4(Строка="") ScrCtrl = Новый COMОбъект("MSScriptControl.ScriptControl"); ScrCtrl.Language="JScript"; Сообщение = ScrCtrl.eval("var uri='"+Строка+"'; encodeURI(uri);") ; Возврат Сообщение;

КонецФункции

алгоритмы, методы, программы - OrionXL