Пришлось мне как-то долго и трудно настраивать перенос данных через XML из 7-й базы в 8-ю. И содержала 7-я база достаточное количество текстовых полей, содержащих спецсимволы, да еще и пользователи вносили новые поля путем копипастинга. А обмен был на разовый, а регулярный, и каждый раз после выгрузки проверять XML 8-й обработкой было очень неудобно.
Вот так и родилась обработка, позволяющая заранее, перед выгрузкой проверить базу, чтобы потом не искать в XML ошибки.
Добавлен выбор видов справочников и документов для обработки.
я во всех обменах использую следующую функцию…
Показать
все строковые реквизиты при выгрузке прогоняю через нее….
ИМХО а вносить изменения в строковые значения в базе 1С я считаю некорректными
(1) serpent, если в строчном поле мусор, это может вылезти где-нибудь еще, не только при обменах. К тому же встречаются люди, которые пользуются штатными обменами вообще без специалистов, и когда у них обмен встает колом, не всегда есть возможность заказать его переписку.
Здравствуйте, обработка вылетела — написала «Нехватка памяти» — как можно побороться? Может быть сделать проверку не по всем сразу справочникам, а предложить выбор — какие проверяем?
(3) skteks, Ну и база у Вас… Я проверял на 30000 номенклатуры и сотнях тысяч документов… Очень устал, но попробую реализовать отбор, правда, срок не обещаю.
Кстати, Вы с подробным протоколом запускали? Там вроде больше нигде память не расходуется.
Добавлен выбор видов справочников и документов для обработки.
Исправлена ошибка отображения изменяемых реквизитов справочников в протоколе. Для скачавших файл — текст исправления (строка 257 модуля формы):
ТаблицаИсправлений.ВыбратьСтроки();
Пока ТаблицаИсправлений.ПолучитьСтроку() = 1 Цикл
Если спр.НайтиЭлемент(ТаблицаИсправлений.Элемент) = 1 Тогда
//ЗаписьПротокола(«Изменение справочника «+ВидСпр+», элемент «»»+СокрЛП(спр.ТекущийЭлемент())+»»», реквизит «»»+ИмяРеквизита+»»», значение «»»+СтрокаПроверки+»»»»,»!!»,1);
ЗаписьПротокола(«Изменение справочника «+ВидСпр+», элемент «»»+СокрЛП(спр.ТекущийЭлемент())+»»», реквизит «»»+ТаблицаИсправлений.Реквизит+»»», значение «»»+ТаблицаИсправлений.Значение+»»»»,»!!»,1);
Попытка
спр.УстановитьАтрибут(ТаблицаИсправлений.Реквизит,ТаблицаИсправлений.Значение);