Доработка конвертации данных КД2 (версии 2.1). Расширенная диагностическая информация при выгрузке по правилам из 1С 7.7 и при загрузке в 1С 7.7

27.10.19

Интеграция - Обмен между базами 1C

Есть очень неприятная особенность при настройке обмена по правилам КД2 в момент отладки на стороне 1С 7.7, как при выгрузке из 1С 7.7, так и при загрузке в 1С 7.7. Непонятно, в каком конкретно месте формирования или разбора данных XML файла в какой именно момент споткнулась программа (произошел сбой). Я нашел способ вывода дополнительной диагностики, теперь точно известно, на каком элементе данных XML споткнулся модуль выгрузки V77Exp.ert (модуль загрузки V77Imp.ert). Теперь отладка правил обмена на стороне 1С 7.7 стала простой, выполняется на порядок проще.

Допустим мы где-то в правилах допустили опечатку в коде на встроенном языке.

В этом случаепри открытии формы обработки "V77Exp.ert" мы получим сообщение об ошибке:

Сообщать<<?>>("Способ задания цены =" + Значение)
{....\CONVERSION\V77EXP.ERT(12199)}: Процедура не обнаружена (Сообщать)

Тут все понятно по-русски написано, открыв модуль сразу ясно что и где исправлять. В реальной же жизни отлаживать правила конвертации сложно. Ошибка в модуле выгрузки V77EXP.ERT или загрузки V77IMP.ERT, когда алгоритм не спотыкается, а просто ругнется на каком-то одном неизвестном объекте или свойстве где-нибудь в середине XML-файла, или вообще не покажет ошибку. Куда смотреть - не понятно. Трассировать? {....\CONVERSION\V77EXP.ERT(12199)} - трассировать можно до утра, эти модули довольно объемные и трассировать их не всегда приемлемо.

Чаще всего при отладке правил конвертации происходит ошибка логическая, и она может проявляться не у всех элементов, а на каком-то неизвестном элементе данных в зависимости от сложившейся последовательности предыдущих итераций обработчиков цепочки разбора XML. Детерминировать такую ошибку мешает отсутствие подробной диагностической информации о происходящих в обработке событиях. Поясняю на примере.

Прежде всего смоделируем решаемую проблему.

Намеряно внесем в конвертацию ошибку, от которой выгрузка данных прервется с непонятным сообщением об ошибке. Пусть в некотором алгоритме не передается ожидаемый элемент структуры во входящие данные.

Где-то в другом обработчике этот элемент должен был использоваться но теперь уже программа работает не правильно, создает нам бракованную XML-ку, и теперь прийдется повозиться, чтобы выяснить где собака порылась. Ведь робот на комментарии скуп, "  - Значение не представляет агрегатный объект (Код)" и всё.

 
 Под спойлером стандартные комментарии выгрузки

На форме обработки выгрузки выведен флажок "Комментировать выгрузку объектов".  Если его активировать, увидим какой объект в данный момент выгружается, но не увидим какое конкретно выгружается мвойство и в каком порядке, а их там тьма.

 
 Комментарии выгрузки если включить "Комментировать выгрузку объектов"

Ошибка исполнения обработчика:  ПКС_ПередВыгрузкой_ОперацияБух_Содержание_Реквизит4
Взглянем на код. Это еще надо знать что значит комментарий:  ПКС_ПередВыгрузкой_ОперацияБух_Содержание_Реквизит4, как он преврящается в конвертации в элемент ПКС ПКС_ОперацияБух_Содержание_ПередВыгрузкойСвойства_4_11.

А если не знать как трактовать какой-то комментарий или если случай подвернется более сложный? Вон "Ошибка получения свойства из объекта коллекции. Свойство: КОплате" откуда взялось вообще? Можно открыть XML-ку и пошарить в ней, но это всё равно будет на угад. Таким образом назрела необходимость расширить диагностические сообщения, и это возможно.

Доработка конвертации данных КД2 (версии 2.1). Расширенная диагностическая информация при выгрузке по правилам из 1С 7.7.

В проблемное место конвертации добавим обработку, если установлено "Комментировать выгрузку объектов".

 
 Доработка модуля объекта обработки выгрузки конвертации

При установке флажка появятся диагностические сообщения следующего рода,

Сообщить(""" + ИмяОбработчика + """);

которые сделают сообщения об ошибках гораздо нагляднее, во много раз упростят разработку правил.

 
 Пример вывода расширенных диагностических сообщений в "комментировать выгрузку объектов"

Согласитесь, комментарии стали гораздо понятнее.

И еще один момент, на форму элемента справочника конвертаций я добавил ГУИД, чтобы была однозначность когда несколько раз выгружаем и загружаем несколько вариантов конвертации в одну базу.

    GUID = СокрЛП(ЭтотОбъект.Ссылка.УникальныйИдентификатор());
    ЭлементыФормы.GUID.Значение = GUID;

Что касается модуля загрузки данных, в конвертации данных в его комментарий указаны локальные и глобальные обработчики, можно повесить на флажок "ФормФлРежимОтладки", аналогичное диагностическое сообщение для локальных и/или глобальных обработчиков событий ПослеЗагрузкиОбъекта, ПослеЗагрузки, ПередЗагрузкойОбъекта, ПередЗагрузкой, ПередЗагрузкойДанных, ПослеЗагрузкиДанных.

//Космачев+
Результат.ЗаписатьСтроку("Если ФормФлРежимОтладки=1 Тогда Сообщить(""" + ИмяПравила + """); КонецЕсли;");
//Космачев-

В КД2 обмен с 7.7 реализован не идеально, и пользователи сообщества "Инфостарт" уже предлагали свои доработки и исправления для иодулей выгрузки и загрузки V77Exp.ert и V77Imp.ert, например:

Обработка "Выгрузка конвертации" для КД 2.1.8.2 + GCOMP + исправлена ошибка отсутствия отбора по периоду в ПВД документов со способом выборки "Стандартная обработка" //infostart.ru/public/319649/

Исправлена ошибка, приводящая к неработоспособности модуля обработки загрузки данных на платформе 7.7 //infostart.ru/public/267853/

(ошибка есть в конвертации 2.1.8.2 "Если ИдРеквизита <> "ДатаДок" ИЛИ ИдРеквизита <> "ПометкаУдаления" Тогда")

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

"Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8407)}: Ошибка при вызове метода контекста (Прочитать): Ошибка разбора XML:  - [384,17899536]
Фатальная ошибка:
PCDATA invalid Char value 2
SystemId: file:////путь/114.xml"

Данную ситуацию можно выявить и исправить путем сравнения выгружаемого и исправленного файлов. Код выявления ошибки PCDATA invalid Char value 2:

 
 Этот модуль исправления надо включить в обработку либо выполнить в консоли произвольного кода

Сравните исправленный код с выгруженным и Вы поймете, где произошла ошибка.

На Инфостарте ест пара обработок на эту тему для тех, кто не может разобраться сам:

//infostart.ru/public/286257/ и //infostart.ru/public/677885/

У меня пока еще мало опыта с загрузкой КД2 в 7.7, разберусь подробнее - статью дополню. А Вы пользуететь подобными приемами при отладке правил конвертации?

КД КД2 конвертация

См. также

SALE! 10%

Перенос данных из 1С:Бухгалтерия 7.7 в БП 3.0. Переносятся остатки, документы и справочники

Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v7.7 Платформа 1С v8.3 1С:Бухгалтерия 7.7 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Бухгалтерия 7.7 в БП 3.0 | Продукт является развитием и исправлением ошибок стандартной обработки для выгрузки данных из 1С Бухгалтерии 7.7 в Бухгалтерию 3.0 | Предоставляем техподдержку | Обновляем на новые релизы 1С | Перенос из 7.7 является сложным, и на рынке сложно найти специалистов 1С по "семерке" - наши сотрудники помогут вам выполнить переход в рамках техподдержки предлагаемого переноса данных!

50722 45650 руб.

26.05.2020    34101    10    67    

16

Конфигурация "Информационный киоск". Обработки выгрузки товаров для ТиС 9.2, УТ 10.3, УТ 11 (обмен данными с любой конфигурацией 1С 7.7, 8.х)

Оптовая торговля Розничная торговля Обмен между базами 1C Сканер штрих-кода Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Управленческий учет Платные (руб)

Конфигурация предназначена для организации offline доступа клиента (покупателя) к информации о товарах, услугах или дисконтных картах посредством сканирования штрих-кода. Основная цель – мгновенно предоставить наиболее актуальную информацию о цене, остатках, наименовании товара (услуги) или накоплениях, держателе, состоянии дисконтной карты.

1800 руб.

21.12.2014    59325    8    21    

20

Выгрузка из 1С ТиС 9.2 в 1С БП 3.0 с дополнительными фильтрами по Фирме, Складу, Контрагенту, Проекту, Автору и Юрлицу

Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Оперативный учет 7.7 1С:Торговля и склад 7.7 1С:Бухгалтерия 3.0 Бухгалтерский учет Управленческий учет Абонемент ($m)

Обработка и правила обмена данными для выгрузки документов и всех связанных с ними справочников из 1С7.7 ТиС 9.2 в 1С8.3 БП 3.0 через файл XML. В типовых конфигурациях уже есть такое решение. Это немного доработанные правила и сама обработка выгрузки, добавлена возможность устанавливать отбор по выгружаемым документам по Фирме, Контрагенту, Складу, Проекту, Автору, ЮрЛицу. А также это внешняя обработка, что даёт возможность адаптировать её под нетиповую ТиС. Обработка и правила тестировались на платформах: 1С: Предприятие 7.7 и 1С: Предприятие 8.3.18.1334. На типовых конфигурациях: «Торговля + склад», редакция 9.2 (7.70 1004) и «Бухгалтерия предприятия» редакция 3.0 (3.0.96.30).

1 стартмани

13.08.2021    8442    52    Kuzya_brаtsk    8    

11

Переход с 1С:Комплексной 7.7 на 1С:УТ 10.3

Обмен между базами 1C Платформа 1С v7.7 Платформа 1С v8.3 Платформа 1C v8.2 1С:Управление торговлей 10 1С:Комплексная 7.7 Россия Управленческий учет Платные (руб)

Начните вести учет в УТ 10.3! Перенесите все свои данные в УТ 10.3 в любом месяце года и продолжите вести учет! Программа перенесёт любое количество баз с документами и остатками в больших количествах. Обработка выгрузки выполнит проверку исходных данных и сформирует отчет о найденных ошибках в справочниках и документах. Партии переносятся с себестоимостью. Штрихкоды номенклатуры загружаются. Цена переносится. Автор консультирует.

8400 руб.

17.03.2021    15567    5    13    

6

Обмен данными ЗУП 3.1 - Бухгалтерия 7.7

Зарплата Обмен между базами 1C Бухгалтерский учет 7.7 Сложные периодические расчеты 1С:Бухгалтерия 7.7 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Как известно, Бухгалтерия 7.7 не имеет штатной возможности для обмена с ЗУП 3.1. Данная разработка пригодится тем, кто перешел с ЗиК 2.3 на ЗУП 3.1, но вынужден по каким-то своим причинам оставаться на Бухгалтерии 7.7.

18000 руб.

29.09.2020    13598    2    0    

5

Выгрузка данных из 1С 7.7. в формате EnterpriseData 1.6 (универсальный формат обмена) в конфигурации 8.3

Обмен между базами 1C Платформа 1С v7.7 Платформа 1С v8.3 1С:Торговля и склад 7.7 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обработка позволяет выгружать данные из ТиС 7.7 в конфигурации 8.3 для сдачи отчетности, для переноса данных при переходе на 8.3, для организации обмена внутри компании при использовании разных версий 1С в структурных подразделениях или формирования отгрузочных накладных для клиентов.

6000 руб.

18.05.2020    22800    59    39    

36

Конвертация данных из 1С 8.3 в 7.7 (версия КД 2.1). Перенос данных из 8.3 в 7.7. Создание в современной 1С 8.3 XML в формате КД2. Инструкции и примеры переноса данных из любой современной 1С 8.3 в устаревшую конфигурацию 1С 7.7, через Конвертацию данных 2

Обмен между базами 1C Платформа 1С v7.7 Платформа 1С v8.3 1С:Конвертация данных Бесплатно (free)

При переходе на новую версию 1С в период параллельной эксплуатации может возникнуть необходимость обратной конвертации данных (по правилам КД версии 2.1) из 1С:Предприятие 8.3 в 1С:Предприятие 7.7 для переноса данных из 1С:Предприятие 8.3 в 7.7. Сделать это поможет следующая инструкция по КД2 о том, как создать новую конвертацию из 8.3 в 7.7, сохранить модуль и правила загрузки данных, сделать загрузку данных. КД2.

17.10.2019    14148    ksnik    0    

15

Загрузка адресов произвольного формата (КЛАДР и нестандартных "грязных" адресов) в ФИАС современных конфигураций из 1С 7.7

Загрузка и выгрузка в Excel Обмен между базами 1C Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 1С:ERP Управление предприятием 2 Абонемент ($m)

Описание технологии загрузки любых адресов из 1С 7.7 с разложением по ФИАС в современные конфигурации 1C 8.3 на примере ERP. Предлагаемый способ просто чудо, он гарантирует результат, он очень простой и качественный! Моя обработка является синтаксическим анализатором, который подставляет в строку грязного адреса выражение "Дом №" и "Корпус", благодаря чему грязные адреса 7.7 сами очень хорошо раскладываются по значимым полям ФИАС - заполняется область, город, улица, дом, корпус.. все раскладывается само с помощью встроенного механизма современных конфигураций 1С 8.3, который написали сами сотрудники фирмы 1С!

1 стартмани

16.08.2019    19292    17    ksnik    12    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Antoska 17 20.11.20 15:41 Сейчас в теме
Спасибо. Очень полезная статья. Очень было бы интересно почитать, что вы ещё нашли интересного в КД2.1 для 1С77.
2. Antoska 17 20.11.20 16:00 Сейчас в теме
Я, кстати, тоже однажды столкнулся с проблемой при отладке. При записи объекта в приёмнике 1С77 выводится скупое сообщение: "Неудачная попытка записи объекта: " и дальше описание ошибки. Изменил процедуру в макете ПроцедурыИФункцииМодуляЗагрузки обработки ВыгрузкаКонвертации следующим образом:

Процедура ЗаписатьОбъект(Объект)
	  
	Если ФормФлРежимОтладки = 0 Тогда
		Объект.Записать();
	Иначе
		Попытка
			Объект.Записать();
		Исключение
			//+ Дилев А.Ю. 21102020
			ТипОбъекта = ТипЗначенияСтр(Объект);
			ВидОбъекта = "";
			Попытка ВидОбъекта = "."+Объект.Вид(); Исключение КонецПопытки;
			Сообщить("Исключение при записи объекта вида "+ТипОбъекта+ВидОбъекта,"!");
			//+ Дилев А.Ю. 21102020
			ЗаписатьОшибку("Неудачная попытка записи объекта: " + ОписаниеОшибки());
		КонецПопытки;
	КонецЕсли;
		
КонецПроцедуры		//	ЗаписатьОбъект()
Показать
3. Antoska 17 20.11.20 16:31 Сейчас в теме
И ещё. Вчера столкнулся с проблемой. Случайно поставил флажок Выгружать правила регистрации и выгрузил правила. При следующей выгрузке выдало предупреждение "Не выбраны правила обмена корреспондента для сохранения."
Получается если поставить флаг по правилам регистрации, то автоматически устанавливается флаг Выгружать правила корреспондента, но при этом этот флаг, как и реквизит Конвертация корреспондент
Пришлось изменить код процедуры ФлагВыгружатьПравилаРегистрацииПриИзменении модуля Формы обработки ВыгрузкаКонвертации так:
Процедура ФлагВыгружатьПравилаРегистрацииПриИзменении(Элемент)
	
	//* Дилев А.Ю. 20112020
	//Если ВыгружатьПравилаРегистрации Тогда
	//	ВыгружатьПравилаКорреспондента = Истина;
	//КонецЕсли;
	// заменил потому что при снятии галочки флаг ВыгружатьПравилаКорреспондента остаётся и не даёт 
	ВыгружатьПравилаКорреспондента = ВыгружатьПравилаРегистрации;
	//_ Дилев А.Ю. 20112020
	
	ЭлементыФормы.РегистрацияДляВыгрузки.Доступность = ВыгружатьПравилаРегистрации;
	
	ЭлементыФормы.РегистрацияДляВыгрузки.АвтоОтметкаНезаполненного = ВыгружатьПравилаРегистрации;
	
	ОбработкаОбъект.СжиматьФайлПравил = ВыгружатьПравилаКорреспондента;
	
	ЭлементыФормы.СжиматьФайлПравил.Доступность = Не ВыгружатьПравилаКорреспондента;
	
	СжиматьФайлПравилПриИзменении(ЭлементыФормы.СжиматьФайлПравил);
	
	ЭлементыФормы.КонвертацияКорреспондентДляВыгрузки.Доступность = ВыгружатьПравилаКорреспондента;
	
	ЭлементыФормы.КонвертацияКорреспондентДляВыгрузки.АвтоОтметкаНезаполненного = ВыгружатьПравилаКорреспондента;
	
КонецПроцедуры
Показать

Не уверен, что не будет ли проблем с конвертацией для восьмёрки. Не тестировал, но вроде правильно сделал.
Прикрепленные файлы:
4. Antoska 17 23.11.20 14:17 Сейчас в теме
Забыл упомянуть, что версия Конвертация данных, редакция 2.1 (2.1.8.2)
5. Antoska 17 26.11.20 13:47 Сейчас в теме
Так и не нашел куда вы предлагаете вставить:
//Космачев+
Результат.ЗаписатьСтроку("Если ФормФлРежимОтладки=1 Тогда Сообщить(""" + ИмяПравила + """); КонецЕсли;");
//Космачев-
6. ksnik 580 15.04.21 08:20 Сейчас в теме
(5) под спойлером "Доработка модуля объекта обработки выгрузки конвертации" это написано.

И еще, если в целевой конфе куда переносим нет реквизита объекта, это видно отладчиком в процедуре "ПрочитатьОбъект" обработки "Универсальный обмен данными в формате XML" в коде
			Имя                = одАтрибут(ФайлОбмена, одТипСтрока, "Имя");
			НеЗамещатьСвойство = одАтрибут(ФайлОбмена, одТипБулево, "НеЗамещать");
			ИмяПКО             = одАтрибут(ФайлОбмена, одТипСтрока, "ИмяПКО");
			
			Если НЕ ЭтоПараметрДляОбъекта
				И ((ОбъектНайден И НеЗамещатьСвойство) 
				ИЛИ (Имя = "ЭтоГруппа")
				ИЛИ (Объект[Имя] = NULL)) Тогда
Показать
Прикрепленные файлы:
7. ksnik 580 15.04.21 09:01 Сейчас в теме
При выводе сообщения об ошибке

Ошибка в обработчике события ПослеЗагрузкиОбъекта
ИмяПКО = КадровыйПереводСписком
ТипОбъекта = Кадровый перевод списком
Объект = Кадровый перевод списком АИ000000001 от 01.01.2021
Обработчик = ПослеЗагрузкиОбъекта
ОписаниеОшибки = Поле объекта не обнаружено (ГрафикиРаботы)
ПозицияМодуля = <Неизвестный модуль>(2)
КодСообщения = 21

В процедуре "ПрочитатьОбъект" обработки "Универсальный обмен данными в формате XML" в троке Выполнить(Правило.ПослеЗагрузки); можно подсмотреть сам обработчик который вызывает ошибку:
Для Каждого Стр Из Объект.Сотрудники Цикл
	Стр.ГрафикиРаботы = Справочники.ГрафикиРаботыСотрудников.НайтиПоНаименованию("Основной 8,25");
	Стр.ВидЗанятости = Перечисления.ВидыЗанятости.ОсновноеМестоРаботы;
КонецЦикла;

найти его в файле правил по подстроке, найти в конвертации и исправить.
Прикрепленные файлы:
Оставьте свое сообщение