Данная обработка основана на предыдущей публикации Сравнение элементов справочников двух баз по COM соединению. Алгоритм остался без изменений: заполняется таблица данных текущей базы по выбранным критериям, заполняется таблица данных внешней базы по тем же критериям и обе таблицы сравниваются. Поиск соответствующих объектов производится по UUID. Расхождения выводятся в таблицу формы.
Ключевые отличия:
- Управляемые формы;
- Добавлена возможность сравнения реквизитов документов;
- Вместо построителя используется СКД. В текущей базе программно формируется макет компоновки, сериализуется и передается во внешнюю базу. IMHO стало попроще с поиском объектов во внешней базе. Собственно, их там искать не надо. СКД все делает сама;
UPD. 11.07.2024 Исправлена ошибка при создании элементов формы динамического списка
P.S. Скачивайте, комментируйте, критикуйте (конструктивно!!!! )
Спасибо, сейчас проверим!
А что означает реквизит «профиль Инфостарта» в таблице на 1-м рисунке и «свертка» — в таблице на 2-м?
(2) 1) Я тестировал в своей самописной конфиге. Там есть такой реквизит «Профиль Инфостарта» в документе.
2) Реквизит «Свертка» может принимать значения +1 и -1. Значение -1 означает, что объект получен из внешней базы. Подробности можно прочитать во встроенной справке к обработке в разделе «Интерпретация полученных результатов»
Упс, Вы не скачивали. Тогда подробности выложу здесь:
В табличной части обработки присутствует реквизит Свертка, который может принимать значения -1 и 1. Значение -1 означает, что объект выбирался из внешней базы. Соответственно, значение 1 означает, что объект выбирался из текущей базы.
Если значение свертки = -1 и объект не найден, то это означает, что объект присутствует во внешней базе и отсутствует в текущей.
Если значение свертки = 1, и нет объекта с таким же UUID, но со значением свертки = -1, то это означает, что объект присутствует только в текущей базе.
Там вроде вместо
СписокРеквизитов = ОткрытьФормуМодально(«ВнешняяОбработка.СравнениеСправочниковВРазныхБазах.Форма.ФормаВыбораРеквизитов», ПараметрыФормы);
надо написать:
СписокРеквизитов = ОткрытьФормуМодально(«ВнешняяОбработка.СравнениеСправочниковДокументовВРазныхБазах.Форма.ФормаВыбораРеквизитов», ПараметрыФормы);
(5) Да, Вы совершенно правы, есть такой косяк. Исправился.
Вышеописанный косяк не исправленн! +Обработка не стала работать на торговля 8.2 редакции 11 ругается на
Функция COMЗначениеВСтрокуXML(Соединение, Значение) Экспорт
ЗаписьXML = Соединение.NewObject(«ЗаписьXML»);
ЗаписьXML.УстановитьСтроку();
Соединение.СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение);
Возврат ЗаписьXML.Закрыть();
КонецФункции
{Форма.УправляемаяФорма.Форма(310)}: Ошибка при вызове метода контекста (ЗаписатьXML)
Соединение.СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение);
по причине:
Неизвестная ошибка
Неизвестная ошибка
(7)
1. Наконец-то исправился.
2. Насчет УТ 11 — попробовал на демо УТ 11 сравнить справочники «Виды номенклатуры» — вроде все нормально (см. картинку). Версия УТ 11 и платформы — на второй картинке
В список версий платформы добавьте «8.3», в поле пароля скройте символы.
В остальном обработка очень помогла при наведении порядка в Распределенной Информационной Базе.
Планируете ли сделать обработку в обычной форме?
(10) Нет, не планирую — есть предыдущая публикация. Правда в ней нет сравнения документов.
Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(1, 1)}: Ожидается выражение «ВЫБРАТЬ»
ошибка при открытии
(12) Какая конфигурация, платформа?
Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(1, 1)}: Ожидается выражение «ВЫБРАТЬ»
ошибка при открытии
8.3.8
(12), (14)
Исправил. Спасибо за наводку.
Под 8.3 изменилось поведение динамического списка. Теперь он в обязательном порядке требует запрос, если установлен флаг «Произвольный запрос»
(7) Тоже вылетает такая ошибка!
Плюс отбор который накладываю на динамический списка объектов не работает. Т.е. визуально он накладывается, но при Заполнении расхождений обрабатываются все записи по Типу объекта… Это очень не удобно, во вторых чтобы проверить один объект, жду по несколько минут. И еще вопрос, если у меня самописная база, в которой есть справочник Контрагенты со стандартными реквизитами, будет ли работать эта обработка?
(16) Какой релиз платформы?
(17)
8.3.14
С отбором переделал. Отбор пользовательский был.
(16)
По идее, обработка не привязана к какой-либо конфигурации.
(16) Сейчас сравнивал контрагентов в 2-х демобазах БП 3.0 и УТ 11. Обе файловые. Ошибок при сравнении не возникло.
Какая у Вас возникла ошибка, точно такая же как в (7)?
(20)да, один в один. Когда приделал отбор к динамическому списку и стал по одному объекту сравнивать, то ошибок не было. А когда всем списком то вываливалась ошибка. Плюс это не кретично, но пожелания, если выбран реквизит которого нету в базе источнике, то вываливается ошибка.