Контакти

Як знайти помилку під час перенесення даних. Приклад правила конвертації об'єктів Рішень завжди декілька

Завдання цього правила обміну перенести залишки за взаєморозрахунками з БП 2 в УТ11.

Поетапне створення правила обміну за допомогою конфігурації "Конвертація даних" (метадані повинні бути завантажені):

1) Створюємо правило вивантаження об'єкта для цього переходимо на закладку "Правила вивантаження даних", тиснемо додати. У вікні вибираємо об'єкт вибірки у нас це буде госпрозрахунковий регістр. Спосіб вибірки міняємо на довільний алгоритм.

2) Переходимо до написання самого коду т.к. в УТ немає госпрозрахункового регістру, то ми повинні його перетворити. Спочатку нам потрібен запит, який за нашими параметрами повертатиме залишки за взаєморозрахунками. В обробнику події "Перед обробкою" пишемо наступний запит:

Текст Запиту = " ВИБРАТИ
| ГоспрозрахунковийЗалишки.Рахунок,
| ГоспрозрахунковийЗалишки.Субконто1 ЯК Субконто1,
| ЄNULL(СУМА(ГоспрозрахунковийЗалишки.СуммаОстатокДт),0) ЯК СумаОстатокДт,
| ЄNULL(СУМА(ГоспрозрахунковийЗалишки.СумаЗалишокКт),0) ЯК СумаЗалишокКт,
| МАКСИМУМ(ГоспрозрахунковийЗалишки.Субконто2.Дата) ЯК ДатаРозрахунковогоДокументу,
| МАКСИМУМ(ГоспрозрахунковийЗалишки.Субконто2.Номер) ЯК НомерРозрахунковогоДокументу

| Реєстр Бухгалтерії.Госпрозрахунковий.Залишки(&НаДату, Рахунок = &рахунок,)
|ДЕ
<>&група та
| ГоспрозрахунковийЗалишки.Субконто1.Батьки<>&група1
|ЗГРУПУВАТИ ПО
| ГоспрозрахунковийЗалишки.Рахунок,
| ГоспрозрахунковийЗалишки.Субконто1,
| ГоспрозрахунковийЗалишки.Субконто2
|Упорядкувати за
| Субконто1
|АВТОУпорядкування";

У моїй задачі стояли обмеження на групи контрагентів за якими вивантажуються взаєморозрахунки.

Визначаємо значення змінних, які будуть використовуватися надалі.

НаДату = дата ("20130101");
ТД = Поточна Дата ();
група = Довідники.Контрагенти.ЗнайтиЗа найменуванням ("Покупці");
група1 = Довідники.Контрагенти.ЗнайтиПо Найменуванню("Повернення від ФІЗЛИЦ");

Створюємо таблицю яку надалі передаватимемо в правило конвертації значень.

ТЗ = Новий ТаблицяЗначень();
ТЗ.Колонки.Додати("Контрагент");
ТЗ.Колонки.Додати("Сума");
ТЗ.Колонки.Додати("СуммаРЕГЛ");
ТЗ.Колонки.Додати("РозрахунковийДокумент");
ТЗ.Колонки.Додати("ДатаРозрахунковогоДокументу");
ТЗ.Колонки.Додати("НомерРозрахунковогоДокументу");
ТЗ.Колонки.Додати("Партнер");
ТЗ.Колонки.Додати("ВалютаВзаєморозрахунків");
ТЗ.Колонки.Додати("ДатаПлатежа");

Встановлюємо параметри, викликаємо запит, заповнюємо таблицю, викликаємо правило конвертації.

запит = новий запит (Текст Запиту);
запит.ВстановитиПараметр("група",група);запит.ВстановитиПараметр("група1",група1);
запит.ВстановитиПараметр("НаДату",НаДату);
запит.УстановитиПараметр("Рахунок",ПланиРахунків.Госпрозрахунковий.РозрахункиСрочнимиПостачальникамиІПідрядниками);//76.05
Вибірка = запит.Виконати().Вибрати();
ТЗ. очистити ();
Поки Вибірка.Наступний() Цикл
якщо Вибірка.СумаЗалишокКТ = 0 або Вибірка.СумаЗалишокКТ = "" тоді
продовжити;
конецеслі;
якщо Вибірка.СумаЗалишокКТ< 0тогда
повідомити(""+Вибірка.Субконто1+" негативне значення "+Вибірка.СуммаЗалишокКТ);
конецеслі;
РядокТЗ = ТЗ.Додати();
РядокТЗ.Контрагент = Вибірка.Субконто1;
РядокТЗ.сума = Вибірка.СуммаОстатокКТ;//Вибірка.СуммаОстатокКт;
Ряд = Вибірка.СуммаОстатокКТ;//Вибірка.СуммаОстатокКт;
РядокТЗ.ДатаРозрахунковогоДокумента =Вибірка.ДатаРозрахунковогоДокумента;
РядокТЗ.НомерРозрахунковогоДокумента = Вибірка.НомерРозрахунковогоДокумента;
РядокТЗ.ДатаПлатежа = ТД;
КінецьЦикл;
ВихідніДані = Новий Структура;
ВихідніДані.Вставити("Дата", ПоточнаДата());
ВихідніДані.Вставити("РозрахункиСПартнерами", ТЗ);
ВихідніДані.Вставити("ТипОперації", "ЗалишкиЗаборгованостіПередПостачальниками");
ВихідніДані.Вставити("Коментар", "Сформовано за кредитом рахунки 76.05");
повідомити("76.05 КРЕДИТ початок");
ВивантажитиПоПравилу(, ВихідніДані, "Введення ЗалишківЗаВзаєморозрахунками_7605Кредит");

Аналогічно проробляємо ту ж операцію і для інших необхідних рахунків (їх опис, як і готове правило, є у вкладенні).

3) Переходимо до створення правил конвертації об'єктів, для цього відкриваємо закладку "Правила конвертації об'єктів". Додамо туди нове правило з ім'ям "Введення Залишків За Взаєморозрахунками_7605Кредит", об'єкт джерело залишимо порожнім, об'єкт приймач встановимо документ "Введення залишків", на вкладці налаштування приберемо прапор "Шукати об'єкт приймача за внутрішнім ідентифікатором об'єкта джерела".

В обробнику події "Перед завантаженням" напишемо наступний код:

ГенеруватиНовийНомерІліКодЕсліНеВказано = істина;

В обробнику події "Після завантаження" напишемо:

виконати(алгоритми.ПісляЗавантаженняВведення Залишків);

він виконає алгоритм із наступним змістом:

валюта = Константи.ВалютаРегламентованогоОбліку.Отримати();
об'єкт.Відповідальний = ПараметриСеанса.ПоточнийКористувач;
объект.организация=параметры.порганизация;
для кожного стор з об'єкт.розрахункипартнерами цикл
Стр.РозрахунковийДокумент = Довідники.ДоговориКонтрагентів.порожнєпосилання();
Стр.ВалютаВзаєморозрахунків = валюта;
якщо значенняЗаповнено(стор.контрагент.партнер) тоді
стр.партнер = стр.контрагент.партнер;
інакше
парт = Довідники.Партнери.ЗнайтиЗа найменуванням (стор.контрагент.Найменування);
якщо парт<>Невизначено і парт<>Довідники.Партнери.порожнє посилання() тоді
стр.партнер = парт;

объект2.Партнер = парт;
объект2.Записать();
інакше
виконати (алгоритми. Додати Партнера);
конецеслі;

конецеслі;

конеццикла;

Цей алгоритм буде виконано за приймача(БП). Крім перенесення залишків по взаєморозрахунках стоїть завдання перенесення контрагентів, але в УТ використовуються партнери тому після формування документа ми перевіряємо чи контрагенти і партнери є в базі приймача, якщо з якоїсь причини їх немає то ми їх додаємо.

Додавання контрагентів здійснить правило конвертації довідника "Контрагенти" його можна створити так само, як і попереднє правило, але дозволити системі самій зіставити необхідні поля.

Для партнерів було створено алгоритм який виконується за приймача.

Для того щоб виконати алгоритм на стороні приймача, треба у правому верхньому куті вікна алгоритму (при його редагуванні) проставити прапорець "Використовується при завантаженні".

Нижче наведено код алгоритму "Додати партнера":

нПартнер = Довідники.Партнери.СтворитиЕлемент();
нПартнер.Найменування =стор.контрагент.найменування;
нПартнер.Коментар = "Створений при завантаженні з БП";
нПартнер.НайменуванняПовне =стр.контрагент.НайменуванняПовне;
нПартнер.Постачальник = ?(знайти(стор.контрагент.Додаткова Інформація,"Постачальник")>0,істина,брехня);
нПартнер.Клієнт = ?(знайти(стор.контрагент.Додаткова Інформація,"Клієнт")>0,істина,брехня);
Інші Відносини = ?
нпартнер.Записати();
стр.партнер = нпартнер.посилання;
контрагент = Довідники.Контрагенти.ЗнайтиЗа найменуванням (стор.контрагент.Найменування);
об'єкт 2 = контрагент. Отримати Об'єкт ();
объект2.Партнер = нпартнер.посилання;
объект2.Записать();

Повертаємось назад до правила конвертації об'єкта. Тепер нам треба встановити відповідність полів джерела та приймача, це можна було зробити безпосередньо перед написанням коду. Для того, щоб зіставити поля в нижній табличній частині є кнопка виклику майстра "Синхронізація властивостей". У цьому майстрі ми можемо зіставити поля, або залишити без джерела, і без приймача. У нашому випадку всі поля та ТЧ ми залишаємо без джерела.

Після того, як необхідні поля були обрані в нижній ТЧ для кожного поля, виставляємо прапор у колонці "Отримати з вхідних даних". Цей прапор говорить про те, що система шукатиме це поле у ​​вхідних даних. Важливо, щоб ім'я поля збігалося з ім'ям у вхідних даних, інакше буде виведено повідомлення про те, що поле не знайдено.

Текстом описані в повному обсязі нюанси процесу.

Доброго часу доби, шановні читачі блогу. Раніше на цьому сайті вже була опублікована стаття про конвертацію
, у цій статті було показано,
як можна налаштувати обмін, використовуючи конструктори, з допомогою яких створюються правила обміну.
Цей спосіб можна використовувати при конвертації баз з 1С версії 7.7 в 8.2.
Зараз ми поговоримо, як переносити дані між конфігураціями 1С 8.2, які дещо відрізняються один від одного.

Основну увагу у цій статті буде приділено конвертації табличної частини документа, а це означає, що
ми будемо працювати з правилами конвертації групи властивостей - ПКГС.

Підготовка до налаштування ПКГС - правил конвертації групи властивостей

Ми переноситимемо документ «НадходженняТоварівПослуг», який має відмінності в реквізиті Ставка ПДВ табличній частині «Товари»
в основі джерела та приймача. В основі джерела цей реквізит має тип «Довідник Посилання.Ставки ПДВ»,
а в базі приймача - тип "Перерахування Посилання. Ставки ПДВ".

До речі, для зручності можна визначити

Крім того, в базі приймача нам необхідно заповнювати реквізит «Рахунок облікуБУ», який також знаходиться
у табличній частині «Товари» документа «Надходження ТоварівПослуг». Дані для заповнення ми візьмемо з реквізиту «Рахунок обліку»
довідника "Номенклатура" бази приймача.

Ситуація ускладнюється тим, що ми працюватимемо з табличною частиною, тому потрібно налаштовувати
правила конвертації групи властивостей - ПКГС. Нам потрібно буде звертатись до поточного рядка табличної частини.

Створення правил конвертації групи властивостей 1С

У нас вже розроблено правила конвертації для документа «Надходження ТоварівПослуг».

Але для табличної частини «Товари» немає правила конвертації якості«Ставки ПДВ».
Потрібно додати нове правило конвертації властивостей, натиснувши кнопку «Синхронізація властивостей…».

З'явиться діалог «Налаштування правил конвертації властивостей (Надходження Товарів Послуг)».

Потрібно повторити те, що зроблено на зображенні та натиснути кнопку «ОК».

Хоча ми створили правило конвертації для групи властивостей, але поки що воно не готове.
Пам'ятайте, що реквізити табличної частини «Ставки ПДВ» відрізняються типами значень.
В основі джерела цей реквізит має тип «Довідник Посилання.Ставки ПДВ»,
а в базі приймача - тип "Перерахування Посилання. Ставки ПДВ". Тут нам не вистачає правила
конвертації з довідника до перерахування.

Обробники подій для правил конвертації групи властивостей

Щоб налаштувати конвертацію властивості правильно, потрібно створити нове правило конвертації об'єктів.

У діалозі, що з'явився, вказуємо, що довідник «Ставки ПДВ» конвертується в перерахування з такою ж назвою.

Жодних правил конвертацій властивостей для цього правила не буде.
Тому при збереженні цього правила, у діалозі, що з'явився, виберемо «Ні».

У діалозі з питанням «Створити правила розвантаження даних?» теж виберемо "Ні".

Подвійним натисканням відкриємо діалог з налаштуванням правила конвертації об'єкта (ВКО) «Ставки ПДВ».
Тут на закладці «Обробники подій» виберемо подію «При розвантаженні» та визначимо «Джерело» та
"ВузолПосилання", тобто те, що буде переноситься.

Якщо джерело. Ставка = 0 Тоді
ВузолПосилання = «Ставка0»;
ІнакшеЯкщо Джерело. Ставка = 12 Тоді
ВузолПосилання = «Ставка12»;
ІнакшеЯкщо Джерело. Найменування = "без ПДВ" Тоді
ВузолПосилання = «Без ПДВ»;
КінецьЯкщо ;

Після написання обробника натискаємо кнопку "ОК".

В інформації з обробників:

Джерело — Довільний — джерело, що вивантажується (посилання або довільні дані).
ВузолПосилання - ініціалізований xml-вузол посилання. Може використовуватись,
наприклад, для ініціалізації властивостей інших об'єктів.

Тепер явно вкажемо використання цього правила конвертації об'єкта під час розвантаження реквізиту «Ставка ПДВ».
Переходимо на закладку «Конвертація властивостей (*)» документа «Надходження ТоварівПослуг» та відкриваємо конвертацію
групи властивостей «Товари», двічі клацаємо на властивості «Ставки ПДВ» і у діалозі, що відкрився, в полі «Правило»
вибираємо правило конвертації об'єкта «Ставка ПДВ».

Натискаємо кнопку "ОК".

Тепер нам залишилося встановити рахунки обліку відповідно до тих значень, які визначені для номенклатури.
Перейдемо на закладку «Правила конвертації об'єктів», знайдемо об'єкт «Надходження ТоварівПослуг» та
подвійним натисканням на ньому відкриємо діалог правил конвертації об'єктів (ПКО).
Перейдемо на закладку «Обробники подій» на подію «Після завантаження» та напишемо наступне:

Для кожного СтрокаТЧ З Об'єкт. Товари Цикл
РядокТЧ. РахунокОблік = СтрокаТЧ. Номенклатура. Рахунок обліку БУ;
Кінець циклу;

Тепер завантажимо ці правила у джерелі, використовуючи зовнішню обробку "Універсальний обмін даними у форматі XML" - "V8Exchan82.epf".
Вивантажимо дані у xml-файл. Потім відкриємо цю ж обробку в базі приймача і виберемо xml-файл вивантаження і завантажимо дані.

До речі, обробку «Універсальний обмін даними у форматі XML» можна відкрити через пункт меню
"Сервіс" | "Інші обміни даними" | "Універсальний обмін даними у форматі XML". Про це було трохи написано у замітці про .

Відомо, що програми фірми 1С - зручний і багатофункціональний інструмент для автоматизації обліку, що підходить для підприємств різних галузей і напрямків діяльності. Однак інструмент це складний і в роботі з ним, на жаль, нерідко виникають різні помилки. У цій статті ми розповімо, як знайти та усунути помилку, що виникла під час перенесення даних з використанням правил, створених за Технології конвертації даних 2.0. Що робити, якщо вивантаження завершується помилкою або не вдається завантажити дані до бази-приймача? Наша стаття покликана відповісти на ці запитання.

Отже, якщо Ви придбали правила конвертації даних, відкрили обробку для перенесення, виставили всі налаштування, але вивантаження переривається і у службових повідомленнях з'являється запис про помилку, ось кілька прийомів, які можуть допомогти Вам знайти та усунути помилку.

Найперше, звірте версії релізів Вашої програми з тими, що вказані в правилах. При невеликій розбіжності версій джерелапроблем не виникає, але якщо Ваш реліз суттєво відстає від свіжих версій правила не працюватимуть. Версія конфігурації приймачамає бути ідентична зазначеній у правилах.

Як подивитися, для яких релізів призначено правила?Просто відкрийте файл правил будь-яким редактором (за замовчуванням це може бути Internet Explorer або Блокнот) і подивіться перші рядки - у яких записані версії джерела і приймача.

Рис.1. Перегляд правил

Що робити?Якщо у Вас є така можливість – оновіть програму-джерело до релізу, вказаного у правилах конвертації. Якщо Ви не можете оновити програму, то і з цими правилами працювати не зможете.

Але, можливо, Ви вже все це зробили, а вивантаження все одно відбувається з помилками? Тоді спробуйте знайти проблемний елемент, який заважає програмі виконувати коректно вивантаження.

Алгоритм дій при пошуку помилок ми продемонструємо на прикладі перенесення даних з КА 1.1 БП 3.0.

Дійте таким чином: вимкніть усі правила перенесення та по черзі вивантажуйте окремі групи правил. Тобто. спершу спробуйте вивантажити тільки Облікову політику, Потім тільки Вхідні залишки, тільки Довідникиі т.д. (Рис.2). Найчастіше проблеми виникають при розвантаженні документів, тоді як інші види об'єктів вивантажуються нормально, так що на їхньому прикладі і розглянемо подальші дії. Тепер Вам потрібно повторити процес із почерговим вивантаженням з кожним правилом конвертації документів. Тобто. по черзі вивантажувати лише авансові звіти, лише акредитив переданий тощо. за списком, як показано на рис.3.

Рис.2. Почергове вивантаження груп об'єктів

Рис.3. Почергове вивантаження видів об'єктів

Отже, припустимо, що вивантаження припиняється при виборі всіх правил вивантаження Документи. Ви по черзі вивантажили всі види документів, пройшли всі позиції по одній і вирахували, що помилка виникає тільки при розвантаженні, наприклад, документів Операція (бухгалтерський та податковий облік). Далі слід поступово звужувати період розвантаження, щоб знайти проблемний документ. Спочатку вивантажуйте по кварталах, місяцях, тижнях, поки не знайдете день, коли вивантаження обривається помилкою.

Що робити?Якщо Вам вдалося знайти конкретний документ, що викликає помилку і Ви бачите, в чому, найімовірніше, полягає проблема - чудово. Виправте документ, якщо це можливо, або просто не переносьте його - набагато простіше відновити один документ, ніж виконувати все перенесення вручну. Щоб виконати перенесення, виключивши лише один документ, скористайтесь відбором у сусідньому вікні. У колонці "Тип порівняння" встановіть "Не рівно", у "Значення" виберіть проблемний документ, і продовжуйте вивантаження як завжди.

Рис.4. Відбір документа під час розвантаження

Добре, але якщо вивантаження проходить коректно, а ось завантажити дані в іншу базу не виходить? Для початку не поспішайте і ще раз перевірте, чи всі ви виконали правильно і чи збігаються версії програми. На відміну від джерела, версія релізу приймача повинна строго співпадати із зазначеною в правилах, інакше у Вас завжди буде помилка.

Що робити?Помилки на етапі завантаження найчастіше можна виправити тільки на етапі вивантаження, так що порядок дій при пошуку проблеми буде тим же, що описаний вище, з одним винятком - після кожного вивантаження необхідно буде повторювати завантаження, щоб знайти елемент, який в базу-приймач не завантажується. Виконуйте ту саму послідовність - спочатку перенесіть групу видів об'єктів, потім певні види, за певні дати і нарешті виключіть проблемний елемент, що заважає успішному завантаженню.

Коли типова обробка не може виконати коректно вивантаження і процес зупиняється, у службових повідомленнях завжди з'являється запис про помилку. У деяких випадках знайти місце виникнення і причину цієї помилки дійсно можливо тільки по черзі вивантажуючи різні типи об'єктів. Однак, це не єдиний спосіб. Найчастіше причину помилки вже розкрито у службовому повідомленні, потрібно лише правильно його прочитати.

Розглянемо на прикладі вивантаження з КА 1.1. Користувач вивантажує з бази-джерела Вхідні залишкина початок 2018 року. Процес вивантаження переривається і програма видає кілька службових повідомлень, серед яких є таке:

Помилка в обробнику події ПередОбробкоюПравилаВивантаження
ПВД = Залишки_Матеріали
Обробник = Перед Обробкою Вивантаження
ОписПомилки = Помилка набуття значення властивості об'єкта (назва властивості джерела)
ПКО = Номенклатура (Довідник: Номенклатура)
ПКС = 15 (Артикул -> Артикул)
Об'єкт = Зварювальний апарат інвертор ВДІ 160Р (Основні засоби)
ВластивістьПриймача = Артикул (Рядок)
ОписПомилки = Поле об'єкта не виявлено (Артикул)
ПозиціяМодуля = Обробка.УніверсальнийОбмінДанимиXML.МодульОб'єкта(8283)
Код Повідомлення = 13
ПозиціяМодуля = Обробка.УніверсальнийОбмінДанимиXML.МодульОб'єкта(1694)
Код Повідомлення = 31

Можна було б піти складним шляхом і по черзі вивантажувати різні види залишків (залишки основних засобів, залишки нематеріальних активів тощо) та знайти, що помилка виникає при розвантаженні за правилом Залишки_Матеріали. А можна відразу подивитися ім'я правила у повідомленні про помилку. Подивіться, в першому рядку в розшифровці помилки в повідомленні йдеться саме про це. ПВД - правило вивантаження даних. Правило вивантаження даних дорівнює Залишки_Матеріали. Нам не потрібно нічого шукати, програма сама повідомляє місце виникнення помилки.

Мал. 5.1. Службове повідомлення про помилку

Так само легко ми можемо знайти причину. В рядку ОписПомилкинаписано. Не дуже зрозуміле повідомлення користувача. Однак ми можемо зрозуміти, що помилка полягає в якійсь властивості об'єкта. Який об'єкт? Того, що вказано у рядку Об'єкту цьому повідомленні. В даному випадку цим об'єктом є Зварювальний апарат інвертор ВДІ 160Р (Основні засоби). Вже зараз можна побачити розбіжність. Правило розвантаження данихназивається Залишки Матеріали, в рядку Правило конвертації об'єкта (ПКО)написано Номенклатурачому ж тип об'єкта записаний як Основні засоби? Давайте заглянемо в базу-джерело та перевіримо, чи дійсно ми знайшли правильний об'єкт.

У залишках за рахунком 10.09 "Інвентар та господарське приладдя" знаходимо наш проблемний об'єкт - субконто Зварювальний апарат інвертор ВДІ 160Р(Див. рис. 5.2)

Мал. 5.2. Оборотно-сальдова відомість за рахунком 10.09 за 2018 р.

Якщо відкрити це субконто, можна відразу побачити, що Зварювальний апарат інвертор ВДІ 160Рдійсно є основним засобом, а чи не номенклатурою (див. рис. 5.3). Те, що залишки по Зварювальний апарат інвертор ВДІ 160Ропинилися на рахунку 10.09 очевидна помилка, яку необхідно виправити.

Мал. 5.3. Картка основного засобу Зварювальний апарат інвертор ВДІ 160Р

Помилка при розвантаженні у разі виникає через неправильного типу об'єкта. За правилом вивантаження залишків матеріалів має вивантажуватися саме Номенклатура- матеріали, паливо, інвентар тощо. Такі об'єкти мають певний набір властивостей, який переноситься в іншу базу за правилом конвертації. Об'єкти з типом Основний засібнабір якостей буде зовсім іншим. Такий об'єкт ніяк не вдасться вивантажити за правилом для розвантаження матеріалів. Програма ідентифікує об'єкт як Номенклатуруале не знаходить у нього необхідних властивостей і не може конвертувати його для запису в файл. Про це й говорило повідомлення Помилка набуття значення властивості об'єкта (на ім'я властивості джерела).

В даному прикладі вирішити проблему можна досить легко – у наших правилах існує параметр Не вивантажувати залишок, якщо нульова кількість. При його встановленні залишки з нульовою кількістю просто не вивантажуватимуться. Як Ви могли бачити в оборотно-сальдовій відомості, представленій на малюнку 5.2, залишки даного субконто не мають кількості, тобто. цей проблемний залишок легко виключити за допомогою вказаного параметра.

В інших випадках, коли немає можливості виключити об'єкт за допомогою відбору або параметра, користувачеві довелося б виправляти помилку в базі джерела, перш ніж виконувати перенесення даних.

Приклад помилки.

Розглянемо приклад ще однієї помилки, виявленої під час перенесення даних.

При першій спробі вивантаження документів користувач побачив у системних повідомленнях такий текст. Повідомлення про помилку дозволяє нам пропустити механізм пошуку моменту виникнення помилки та перейти до її усунення. Подібні повідомлення з'являються не завжди і іноді шукати помилку методом послідовного вивантаження все ж таки доводиться. А як прочитати таке повідомлення, ми вже говорили вище.

Рис.6.1. Повідомлення про помилку

Отже, проблемний документ нам повідомляє сама програма - це Рахунок покупцю ІПБП-000008, отже, ми відразу переходимо до документа і намагаємося з'ясувати, в чому полягає помилка.

Як Ви можете бачити на малюнку 6.2, у цьому документі в табличній частині "Товари та послуги" в одному з рядків встановлено групу номенклатури, а не саму номенклатуру, що саме по собі є помилкою. Зрозуміло, у правилах конвертації для цього документа не прописано як із цієї табличної частини конвертувати об'єкт група номенклатури, Це елемент зовсім іншого типу, ніж сама номенклатура, і програма не має відомостей про те, як перенести інший елемент, відмінний від зазначеного в правилах. Отже, процес конвертації не розпізнає його, не може його конвертувати та видає помилку.

Рис.6.2. Документ з помилкою

Як і навіщо це було встановлено, нас зараз не цікавить. Ми вирішуємо не переносити документ, а значить, виключаємо його зі списку об'єктів, що переносяться. Знаходимо правило вивантаження документа Рахунок на оплату покупцю, Вибираємо його, переходимо до відбору, встановлюємо Поле - Посилання, Вигляд порівняння - Не рівне, Значення - наш проблемний документ. Таким чином ми виключимо цей документ зі списку об'єктів, що переносяться, і вивантаження має пройти нормально.

Рис.6.3. Встановлення налаштувань для виключення документа

Після цього можна продовжувати вивантаження зручним для Вас способом - перенести всі документи відразу, або перенести лише Рахунки на оплату, за винятком знайденого документа, а потім перенести інші - порядок перенесення даних може бути будь-яким.

Тут слід зазначити, що можливості відбору об'єктів існують в обробках УніверсальнийОбмінДанимиXMLне у всіх типових конфігураціях. Точніше такий функціонал відсутня у режимі керованого додатка. Зокрема, у типовій конфігурації Комплексна автоматизація ред.1.1можна працювати як у режимі звичайної програми, так і в режимі керованої програми, або, як ще кажуть, у режимі керованих форм. У першому випадку відбори у типовій обробці можливі (див. рис.4), у другому – ні. Тоді потрібно скористатися доопрацьованими версіями обробки (див. рис. 6.3). Якщо конфігурація використовується як сумісність із платформою 8.2 (це зокрема КА 1.1і УВП 1.3), то необхідна обробка УніверсальнийОбмінДанимиXMLверсії 2.1.7 . Якщо ж режим сумісності не використовується, наприклад у конфігурації Бухгалтерія підприємства редакції 3.0, то потрібно працювати з обробкою версії 2.1.8 . Ці обробки мають також додаткові можливості щодо заповнення відборів з журналу реєстрації (докладніше), тому входять не у всі варіанти поставок, але їх завжди можна придбати або у складі пакетів, позначених як з відбором за ЖР, або окремо.

Ось так, у загальному вигляді, виглядає процес пошуку та усунення помилки, що виникла при перенесенні даних 1С.

Ознайомитись з іншими корисними матеріалами можна у розділі Статті або основному нашому сайті.

© Анна Балясникова, останні зміни квітень 2018р.

Міграція даних між різними конфігураціями – завдання не з очевидних. Шляхів рішення як завжди кілька, але не всі вони є оптимальними. Спробуємо розібратися у нюансах перенесення даних та вибрати універсальну стратегію вирішення подібних питань.

Проблема міграції даних (мова суто про продукти компанії 1С) з одного рішення до іншого виникла не вчора. Компанія «1С» чудово розуміє, з якими труднощами стикаються розробники під час створення міграцій, тому намагається всіляко допомагати інструментами.

За час розвитку платформи компанія представила низку універсальних інструментів, а також технологій, що спрощують перенесення даних. Вони вбудовані у всі типові рішення та проблема міграцій між ідентичними конфігураціями загалом вирішилася. Перемогу вкотре підтверджує тісна інтеграція типових рішень.

З міграціями між не типовими рішеннями ситуація дещо складніша. Широкий вибір технологій дозволяє розробникам самостійно вибирати оптимальний з їхньої точки зору спосіб вирішення задачі.

Розглянемо деякі з них:

  • обмін через текстові файли;
  • використання планів обміну;
  • і т.д.

У кожного з них свої плюси та мінуси. Якщо резюмувати, то головним мінусом буде багатослівність. Самостійна реалізація алгоритмів міграції може спричинити суттєві часові витрати, а також тривалий процес налагодження. Про подальший супровід подібних рішень навіть не хочеться говорити.

Складність, дорожнеча супроводу, підштовхнули компанію «1С» створення універсального рішення. Технології, що дозволяє максимально спростити розробку та підтримку міграцій. У результаті ідея реалізувалася у вигляді окремої конфігурації - "Конвертація даних".

Конвертація даних – типове рішення, самостійна конфігурація. Будь-який користувач, який має підписку "ІТС: Проф" може безкоштовно завантажити цей пакет з сайту підтримки користувачів або диска ІТС. Установка виконується стандартним способом - як і інші типові рішення від 1С.

Тепер трохи про плюси рішення. Почнемо з найголовнішого – універсальність. Рішення не заточено на певні конфігурації/версії платформи. Так само добре працює як з типовими конфігураціями, так і самописними. Розробники отримують у розпорядження універсальну технологію та стандартизований підхід до створення нових міграцій. Універсальність рішення дозволяє готувати міграції навіть для відмінних від «1С:Підприємство» платформ.

Другий жирний плюс – візуальні засоби. Прості міграції створюються без програмування. Так-так, без жодного рядка коду! Тільки заради цього варто один раз витратити час на вивчення технології, а потім використати безцінні навички багаторазово.

Третім плюсів я відзначив би відсутність обмежень на дистрибуцію даних. Розробник сам вибирає спосіб доставки даних конфігурацію приймач. З коробки є два варіанти: вивантаження в xml файл і пряме з'єднання з інформаційною базою (COM/OLE).

Вивчаємо архітектуру

Ми вже знаємо, конвертація даних здатна творити дива, але поки що не зовсім зрозуміло, в чому виражаються технічні плюси. Перше, що необхідно засвоїти, - в основі будь-якої міграції даних (конвертації) лежать правила обміну. Правила обміну - звичайний xml файл із описом структури, в яку будуть вивантажуватись дані з ІБ. Сервісна обробка, що здійснює розвантаження/завантаження даних, аналізує правила обміну та на їх підставі виконує розвантаження. Під час завантаження відбувається зворотний процес.

Конфігурація "КД" - свого роду візуальний конструктор, за допомогою якого розробник створює правила обміну. Виконувати розвантаження даних вона не вміє. За це відповідають додаткові зовнішні сервісні обробки, що входять до дистрибутиву КД. Їх кілька (XX в імені файлу – номер версії платформи):

  • MDXXExp.epf- Обробка дозволяє вивантажувати опис структури інформаційної бази в xml файл. Опис структури завантажується в КД для подальшого аналізу та створення правил обміну.
  • V8ExchanXX.epf- здійснює розвантаження/завантаження даних з інформаційної бази відповідно до правил обміну. У більшості типових конфігурацій обробка є з коробки (див. пункт меню “Сервіс”). Обробка універсальна і не прив'язується до певних конфігурацій/правил.

Добре, тепер на підставі всього сказаного вище, визначимо етапи розробки нової конвертації:

  1. Визначення задачі. Необхідно чітко розуміти, які дані потрібно переносити (з яких об'єктів конфігурації) і найголовніше куди переносити.
  2. Підготовка опису структур конфігурацій (Джерела/Приймача) для подальшого завантаження КД. Завдання вирішується сервісною обробкою MDXXExp.epf.
  3. Завантаження підготовлених описів структур в ІХ.
  4. Створення правил обміну з допомогою візуальних кошти КД.
  5. Виконує вивантаження/завантаження за створеними правилами конвертації даних шляхом використання обробки V8ExchanXX.epf.
  6. Налагодження правил обміну (за потреби).

Найпростіша конвертація

Для демонстрації нам знадобиться дві розгорнуті конфігурації. Я вирішив зупинитися на варіанті: "Управління торгівлею" 10-ї редакції та невеликим самописним рішенням. Завдання полягатиме у перенесенні даних із типової конфігурації «УТ». Для стислості назвемо самописне рішення "Приймач", а управління торгівлею "Джерелом". Розв'язувати задачу почнемо з перенесення елементів довідника «Номенклатура».

Насамперед поглянемо на схему конвертації даних та перечитаємо список дій, які необхідно зробити. Потім запускаємо конфігурацію "Джерело" і відкриваємо в ній сервісну обробку MD82Exp.epf.

Інтерфейс обробки не блищить достатком налаштувань. Користувачеві лише потрібно вказати типи метаданих об'єктів, які не потраплять в опис структури. Найчастіше ці установки змінювати годі й говорити, т.к. Особливого сенсу у розвантаженні рухів по регістрам накопичення (наприклад) немає.

Рух правильніше формувати під час проведення документів у приймачі. Усі рухи будуть зроблені документом самостійно після перенесення. Другий аргумент на захист параметрів за замовчуванням - скорочення розміру файлу з розвантаженням.

Деякі документи (особливо у типових конфігураціях) формують рухи по безлічі регістрів. Вивантаження цього господарства зробить результуючий XML файл занадто великим. Це може утруднити подальше транспортування та завантаження до бази приймач. Чим більше файл з даними, тим більше буде потрібно оперативної пам'яті його обробки. За свою практику мені довелося зіткнутися з великими файлами вивантаження. Такі файли геть-чисто відмовлялися розбиратися стандартними засобами.

Отже, залишаємо всі параметри за замовчуванням і робимо вивантаження опису конфігурації у файл. Аналогічну процедуру повторюємо для другої бази.

Відкриваємо КД та в головному меню вибираємо "Довідники" -> "Конфігурації". Довідник зберігає опис структур всіх конфігурацій, які допоможуть бути використані для створення конвертацій. Ми один раз завантажуємо опис конфігурації, а потім можемо використовувати її багаторазово для створення конвертацій.

У вікні довідника натисніть кнопку “ Додати” і у вікні виберемо файл з описом конфігурації. Відзначаємо прапорець "Завантажити в нову конфігурацію" і натискаємо на кнопку "Виконати завантаження". Аналогічні події робимо з описом структури другої конфігурації.

Тепер все готове до створення правил обміну. У головному меню КД вибираємо "Довідники" -> "Конвертації". Додаємо новий елемент. У вікні створення нової конвертації потрібно вказати: конфігурацію джерело (вибираємо УТ) та конфігурацію приймач (вибираємо «Приймач»). Далі відкриваємо вкладку "Додатково" та заповнюємо наступні поля:

  • ім'я файлу правил обміну - під таким ім'ям зберігатимуться створені правила обміну. Ім'я файлу можна міняти у будь-який час, але вигідніше задати його зараз. У майбутньому це заощадить час. Правила для демонстраційного прикладу я назвав: rules-ut-to-priemnik.xml.
  • найменування – назва конвертації. Назва може бути абсолютно будь-якою, я обмежився “Демо. УТ у Приймач”.

Все, натискаємо "OK". Відразу ж перед нами з'являється вікно з питанням створити всі правила автоматично. Згода на таку привабливу пропозицію дасть майстру команду автоматично проаналізувати опис вибраних конфігурацій та самостійно згенерувати правила обміну.

Відразу розставимо крапки над "і". Нічого серйозного майстер згенерувати не зможе. Однак з рахунків цю можливість скидати не варто. Якщо необхідно налагодити обмін між ідентичними конфігураціями, послуги майстра будуть дуже доречними. Для нашого прикладу краще ручний режим.

Розглянемо докладніше вікно "Налаштування правил обміну". Інтерфейс може здатися злегка заплутаним - велика кількість вкладок, напханих елементами керування. Насправді все не так складно, до цього божевілля починаєш звикати через кілька годин роботи з додатком.

На цьому етапі нас цікавлять дві вкладки: “Правила конвертації об'єктів” та “Правила розвантаження даних”. На першому ми маємо налаштовувати правила відповідності, тобто. зіставляти об'єкти двох конфігурацій. На другий, визначати можливі об'єкти, які будуть доступні користувачеві для вивантаження.

У другій половині вкладки “Правила конвертації об'єктів” розташована додаткова панель із двома вкладками: “Конвертація властивостей” та “ Конвертація значень”. Перша буде відбирати властивості (реквізити) обраного об'єкта, а друга необхідна роботи з визначеними значеннями (наприклад, визначені елементи довідників чи елементи перерахування).

Відмінно тепер створимо правила конвертації для довідників. Виконати цей крок можна двома варіантами: скористатися майстром синхронізації об'єктів (кнопка “”) або додати відповідності для кожного об'єкта вручну.

Для економії місця скористаємося першим варіантом. У вікні майстра знімаємо прапорці із групи “ Документи” (нас цікавлять лише довідники) та розкриваємо групу “ Довідники”. Уважно перегортаємо список і дивимося назви довідників, які можна порівняти.

У моєму випадку таких довідників три: Номенклатура, Організація та Склади. Є ще довідник Клієнти, що виконує те саме смислове навантаження, що і “ Контрагенти” з конфігурації “ УТ”. Щоправда, майстер не зміг їх порівняти через відмінні імена.

Виправити це недороблення ми можемо самостійно. Знаходимо у вікні « Відповідності об'єктів» довідник « Клієнти», а в колонці «Джерело» обираємо довідник «Контрагенти». Потім встановлюємо прапорець у колонці Тип і натискаємо кнопку “Ok”.

Майстер синхронізації об'єктів запропонує автоматично створити правила конвертації властивостей усіх вибраних об'єктів. Зіставлення властивостей відбуватиметься за іменами і для нашої демонстрації цього буде цілком достатньо, погоджуємось. Наступним питанням буде пропозиція створення правил розвантаження. Погодимося і на нього.

Основа правил обміну готова. Об'єкти для синхронізації вибрали ми, а правила для конвертації властивостей та правила вивантаження були створені автоматично. Збережемо правила обміну у файл, потім відкриємо ІБ "Джерело" (у моєму випадку це УТ) і в ній запустимо сервісну обробку V8Exchan82.epf.

Насамперед у вікні обробки вибираємо створені нами правила обміну. На питання завантаження правил відповідаємо позитивно. Обробка проаналізує правила обміну та побудує однойменне дерево об'єктів, доступних для розвантаження. Для цього дерева ми можемо встановлювати всілякі відбори або вузли обміну, для зміни яких потрібно вибирати дані. Ми хочемо вивантажити всі дані, тому в установці фільтрів необхідність відсутня.

Після завершення процесу вивантаження даних у файл переходимо до ІБ “ Приймач”. У ній також відкриваємо обробку V8Exchan82.epf, тільки цього разу переходимо на закладку “Завантаження даних”. Вибираємо файл із даними та натискаємо кнопку “Завантажити”. Усі дані успішно перенесені.

Завдання із реального світу

Перший демонстраційний приклад міг ввести в оману. Все виглядає досить простим та логічним. Насправді, це не зовсім так. У реальній роботі виникають завдання, вирішити які одними візуальними засобами (без програмування) важко чи неможливо.

Щоб не розчаруватись у технології, я приготував кілька реальних завдань. З ними обов'язково стикаєшся під час роботи. Вони не виглядають такими тривіальними і змушують подивитися на конвертацію даних під новим кутом. Уважно розгляньте представлені приклади і сміливо використовуйте як сніпети при вирішенні реальних завдань.

Завдання №1. Заповнюємо відсутні реквізити

Припустимо, нам потрібно перенести з УТ довідник. Контрагенти”. У приймачі для цього є схожий довідник "Клієнти". Він повністю підходить для зберігання даних, але в ньому є реквізит. Організація”, що дозволяє розділяти контрагентів щодо належності до організації. За замовчуванням усі контрагенти повинні належати до поточної організації (її можна отримати з однойменної константи).

Розв'язків завдання кілька. Ми розглянемо варіант заповнення реквізиту “ Організація” прямо в базі “ Приймач”, тобто. у момент завантаження даних. Поточна організація зберігається в константі, отже, немає жодних перешкод отримання цього значення. Відкриємо правило конвертації об'єкта (далі ПКО) “ Клієнти” (подвійний клік по об'єкту) та у майстрі налаштування правил перейдемо до розділу “Обробники подій”. У списку обробників знайдемо “ Після завантаження”.

Опишемо код отримання поточної організації із наступним присвоєнням реквізиту. На момент спрацьовування обробника "Після завантаження", об'єкт буде повністю сформований, але ще не записаний у БД. Ніхто не забороняє нам його змінювати на свій розсуд:

Якщо НЕ Об'єкт.ЦеГрупа Тоді Об'єкт.Організація = Константи.ПоточнаОрганізація.Отримати(); КінецьЯкщо;

Перед заповненням реквізиту Організаціяобов'язково необхідно перевірити значення реквізиту. Це група». Для довідника « Клієнти» встановлена ​​ознака ієрархічності, тому перевірка на групу необхідна. Подібним чином виконується заповнення будь-яких реквізитів. Обов'язково прочитайте довідку за іншими параметрами обробника ПісляЗавантаження». Наприклад, серед них є параметр « Відмова». Якщо йому надати значення «Істина», то об'єкт у базу записаний не буде. Таким чином, з'являється можливість обмежувати об'єкти для запису під час завантаження.

Завдання №2. Реквізити у регістр відомостей

У довіднику “ Контрагенти” конфігурації УТ, є реквізити “ Покупець” та “ Постачальник”. Обидва реквізити мають тип “ Бульово” та служать для визначення типу контрагента. В ІБ “ Приймач”, у довідника “ Клієнти” аналогічних реквізитів немає, але є регістр відомостей “ ВидиКлієнтів”. Він виконує аналогічну функцію та може зберігати для одного клієнта кілька ознак. Наше завдання полягає у перенесенні значень реквізитів в окремі записи регістру відомостей.

Одними візуальними засобами тут, на жаль, теж не впоратися. Почнемо з малого, створимо нове ПКО для регістру відомостей ВидиКлієнтів”. Як джерело нічого не вказуйте. Від автоматичного створення правил розвантаження відмовтеся.

Наступним кроком сформуємо правила розвантаження. Переходимо на відповідну вкладку та натискаємо кнопку “ Додати”. У вікні додавання правил вивантаження заповнюємо:

  • Спосіб вибірки. Змінюємо на “Довільний алгоритм”;
  • Правило конвертації. Вибираємо регістр відомостей "ВідиКлієнтів";
  • Код (ім'я) правила. Записуємо як "Вивантаження видів клієнтів";

Тепер необхідно написати код для відбору даних для розвантаження. Тут нам допоможе параметр “ Вибірка даних”. У ньому ми можемо помістити колекцію з підготовленим набором даних. Параметр “ Вибірка даних” може приймати різні значення – результат запиту, вибірка, колекції значень тощо. Ми його ініціалізуємо у вигляді таблиці значень із двома колонками: клієнт та тип клієнта.

Нижче наведено код обробника подій “ Перед обробкою”. У ньому виконується ініціалізація параметра “ Вибірка даних” з наступним заповненням даними з довідника “ Контрагенти”. Тут варто звернути увагу на заповнення колонки. ТипКлієнта”. В "УТ" у нас ознаки мають тип "Булеве", а в одержувачі перерахування.

На даному етапі ми їх не можемо привести до потрібного типу (його немає в УТ), тому поки залишимо у вигляді рядків. Цього можна й не робити, але мені одразу хочеться показати, як приводити до відсутнього типу у джерелі.

ВибіркаДаних = Новий ТаблицяЗначень(); ВибіркаДаних.Колонки.Додати("Клієнт"); ВибіркаДаних.Колонки.Додати("ТипКлієнта"); ВибіркаДанихІз Довідника = Довідники.Контрагенти.Вибрати(); Поки Вибір ДанихЗ довідника.Наступний() Цикл Якщо ВибірДанихДовідника.ЦеГрупа Тоді Продовжити; КінецьЯкщо; Якщо Вибір ДанихЗ Довідника.Покупець Тоді НовийРядок = Вибір Даних.Додати(); НоваРядок.Клієнт = ВибіркаДанихЗДовідника.Посилання; НоваРядок. ТипКлієнта = "Покупець"; КінецьЯкщо; Якщо ВибірДанихЗДовідника.Постачальник Тоді НовийРядок = ВибіркаДаних.Додати(); НоваРядок.Клієнт = ВибіркаДанихЗДовідника.Посилання; НоваРядок. ТипКлієнта = "Постачальник"; КінецьЯкщо; КінецьЦикл;

Збережемо правило вивантаження даних та повернемося на вкладку “ Правила конвертації об'єктів”. Додамо для регістру відомостей “ ВидиКлієнтів” правила конвертації властивостей: клієнт та тип клієнта. Джерело залишимо порожнім, а в обробнику подій "Перед розвантаженням" пишемо:

/ / Для якості "Клієнт" Значення = Джерело.Клієнт; //Для властивості "ТипКлієнта" Якщо Джерело.Клієнт = "Покупець" Тоді Вираз = "Перерахування.ТипиКлієнтів.Покупець" ІнакшеЯкщо Джерело.Клієнт = "Постачальник" Тоді Вираз = "Перерахування.ТипиКлієнтів.Постачальник"; КінецьЯкщо;

У лістингу виконується заповнення реквізитів з урахуванням проведеної вибірки даних. Клієнта ми передаємо просто як посилання, а тип клієнта записуємо в параметр « Вираз». Дані цього параметра будуть інтерпретовані у приймачі, і під час виконання реквізит буде заповненим коректним значенням з перерахування.

Все, правила обміну готові Розглянутий приклад вийшов досить універсальним. Подібний підхід часто застосовується при перенесенні даних із змін, створених на платформі 7.7. Яскравий приклад – перенесення періодичних реквізитів.

Завдання №3. Трюки з табличними частинами

Нерідко трапляються завдання, що вимагають рознесення рядків однієї табличної частини в кілька. Наприклад, у вихідній конфігурації послуги та товари оформляються в одній табличній частині, а приймачеві зберігання цих сутностей поділено. Візуальними засобами завдання знову ж таки не вирішити. Тут за основу зручно брати рішення другого завдання.

Робимо правило розвантаження даних, вказуємо довільний алгоритм і в обробнику "Перед розвантаженням" пишемо запит для отримання даних з табличної частини.

Для економії місця я не наводитиму код (ви завжди можете звернутися до вихідників) запиту - нічого незвичайного в ньому немає. Отриману вибірку перебираємо, і відсортовані результати розміщуємо вже знайомий параметр “ Вибірка даних”. Як колекція знову ж таки зручно використовувати таблицю значень:

ВибіркаДаних = Новий ТаблицяЗначень(); //Тут буде ще одна таблична частина ВибіркаДаних.Колонки.Додати(“Товари”); //Тут теж буде таблична частина ВибіркаДаних.Колонки.Додати(“Послуги”); ВибіркаДанниз.Колонки.Додати(“Посилання”);

Завдання №4. Перенесення даних на операцію

Якщо організації використовується кілька облікових систем, то рано чи пізно виникне потреба у міграції даних із подальшим формуванням проводок.

У конфігурації “ БП"є універсальний документ" Операція” і він ідеально підходить для формування більшої кількості проводок. Ось тільки одне не завдання – документ зроблений хитро, і так просто дані до нього не перенести.

Приклад подібної конвертації ви знайдете у вихідних статтях до статті. Обсяг коду вийшов досить великим, тому немає сенсу його публікувати до статті. Скажу лише, що вивантаження знову ж таки використовує довільний алгоритм у правилах вивантаження даних.

Завдання №5. Синхронізація даних з кількох реквізитів

Ми вже розглянули кілька прикладів, але досі не поговорили про синхронізацію об'єктів під час перенесення. Ось уявімо, що нам потрібно перенести контрагентів і частина з них напевно є в основі приймача. Як перенести дані та не допустити появи дублів? З цього приводу КД пропонує кілька способів синхронізації об'єктів, що переносяться.

Перший з них – за унікальним ідентифікатором. Багато об'єктів мають унікальний ідентифікатор, який гарантує унікальність у межах таблиці. Наприклад, у довіднику “ Контрагенти” не може бути двох елементів з однаковими ідентифікаторами. КД робить це розрахунок і всім створювані ПКО відразу за умовчанням включається пошук по ідентифікатору. Під час створення ПКО ви мали звернути увагу на зображення лупи біля імені об'єкта.

Синхронізувати за унікальним ідентифікатором – спосіб надійний, але доречний він далеко не завжди. При об'єднанні довідників Контрагенти” (з кількох різних систем) він мало чим допоможе.

У таких випадках правильніше синхронізувати об'єкти за кількома критеріями. Контрагентів правильніше шукати за ІПН, КПП, Найменуванням або розбивати пошук на кілька етапів.

Конвертація даних не обмежує розробника у визначенні критерієм пошуку. Розглянемо абстрактний приклад. Нехай нам потрібно синхронізувати довідники. Контрагенти” із різних інформаційних баз. Підготуємо ПКО та в налаштуваннях правил конвертації об'єкта встановимо прапорець “ Продовжити пошук полям пошуку, якщо за ідентифікатором об'єкт приймач не знайдено”. Цією дією ми одразу визначили два критерії пошуку – за унікальним ідентифікатором та довільними полями.

Поля ми маємо право вибирати самі. Відзначивши ІПН, КПП, найменування ми відразу вкажемо кілька критеріїв пошуку. Зручно? Цілком, але знову ж таки цього буває мало. А що, якщо ми захочемо змінювати критерії пошуку? Наприклад, спочатку шукаємо зв'язки ІПН+КПП, а якщо нічого не знаходимо, то починаємо катувати щастя з найменуванням.

Подібний алгоритм реалізувати цілком під силу. В обробнику події “ Поля пошуку” ми можемо вказати до 10 критеріїв пошуку та для кожного з них визначити свій склад полів пошуку:

Якщо Номер ВаріантаПошуку = 1 тоді РядокІменВластивостейПошуку = “ІНН, КПП”; ІнакшеЯкщо НомерВаріантаПошуку = 2 Тоді РядокІменВластивостейПошуку = “Найменування”; КінецьЯкщо;

Рішень завжди кілька

Будь-яке завдання має кілька рішень і перенесення даних між різними конфігураціями не є винятком. Кожен розробник має право вибирати свій шлях рішення, але якщо вам постійно доводиться розробляти складні міграції даних, то рекомендую звернути увагу на конфігурацію “”. Нехай спочатку доведеться інвестувати ресурси (час) у навчання, але вони з лишком окупляться на першому більш-менш серйозному проекті.

На мій погляд, компанія 1С незаслужено оминає тему застосування конвертації даних. За весь час існування технології, за нею вийшла лише одна книга: "1С:Підприємство 8. Конвертація даних: обмін між прикладними рішеннями". Книга досить стара (2008 р.), але ознайомитися з нею все ж таки бажано.

Знання платформ все ж таки необхідне

» - універсальний інструмент, але якщо ви плануєте застосовувати його для створення міграцій даних із конфігурацій, розроблених для платформи 1С:Підприємство 7.7, то вам доведеться витратити час на знайомство з вбудованою мовою. Синтаксис та ідеологія мови дуже відрізняється, тому доведеться витратити час на вивчення. В іншому принцип залишається тим самим.



Сподобалася стаття? Поділіться їй