Методика разработки СКД-отчетов по сверке между базами с COM-запросом в другую базу
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
В последнее время несколько раз решал задачу по сверке больших массивов данных между базами. Когда все на вид идентично, а итоги расходятся – приходится локализовывать проблему и разбираться с расхождениями уже на конкретной сущности или регистраторе.
К примеру, необходимо найти «проблемный» регистратор при переносе движений по складу по документам в УТ 10.2 в ERP2.1.
В результате, проблема должна быстро находиться в массиве данных:

Теперь собственно методика разработки отчета:
- В СКД добавляем набор данных – объект. Собственно объектом является таблица значений, в которую выгружаем результат запроса (см. рисунок ниже) в процессе выполнения процедуры ПриКомпоновкеРезультата(…).
- Формируем запрос к данным другой базы. В моем случае я использовал COM-соединение, т.к. базы лежали в одной сети и ограничений в доступе к данным у меня не было. Особенности регистрации такого отчета по технологии «внешнего» для работы в безопасном режиме - написал отдельно (//infostart.ru/public/552950/)
- Показатели одной базы формируем со знаком «плюс», движения второй базы с «минусом». Если движения по всем измерениям (кроме измерения «база») совпадают – тогда в отчете отображается результат – 0. Если присутствует разница, то будет некое число, которое необходимо быстро и удобно найти.
- Поскольку была возможность сопоставить регистраторы в обеих база по ГУИД – сопоставляем программно, после чего таблица значений передается в СКД во внешние данные
- Настраиваем группировки отчета, чтобы быстро найти проблему – в данном случае, по виду регистратора, а затем по регистратору (см рисунок)
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ПараметрПериод = Новый ПараметрКомпоновкиДанных("Период");
СтруктураПараметров = Новый Соответствие;
Для каждого ЭлементКоллекции Из Настройки.ПараметрыДанных.Элементы Цикл
Если ЭлементКоллекции.Параметр = ПараметрПериод Тогда
СтруктураПараметров.Вставить("ДатаНачала", ЭлементКоллекции.Значение.ДатаНачала);
СтруктураПараметров.Вставить("ДатаОкончания", ЭлементКоллекции.Значение.ДатаОкончания);
КонецЕсли;
КонецЦикла;
ТаблицаВнешниеДанные = ПолучитьТаблицу(СтруктураПараметров.Получить("ДатаНачала"), СтруктураПараметров.Получить("ДатаОкончания"));
ВнешниеНаборыДанных = Новый Структура("ТаблицаВнешниеДанные", ТаблицаВнешниеДанные);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных,);
КонецПроцедуры


Если данные идентичны – можно развернуть и посмотреть детальные записи.

Если различаются – открываем раздел, затем регистратор

А можем и провалиться непосредственно в форму документа

Вот собственно и все, чем хотел поделиться, если что-то нашли полезным плюсуйте ). Программистам добавляю собственно отчет, для копирования или редактирования, может будет кому полезен (он не универсальный!)
Вступайте в нашу телеграмм-группу Инфостарт