Конструктор сравнения таблиц значения, в том числе из внешней базы

28.05.20

Разработка - Инструментарий разработчика

Предложен конструктор для определения различий между таблицами значений (ТЗ), в том числе сформированных во внешней базе данных. Конструктор использует СКД. Сравнение данных в разных базах востребовано, например, при свёртке базы или объединении двух баз в одну. Также конструктор можно применять для контроля обмена или просто сравнить две ТЗ. Применение СКД для формирования (ТЗ) снижает трудозатраты и гарантирует корректное сравнение по наименованию колонок.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Конструктор сравнения таблиц значения, в том числе из внешней базы.:
.rar 612,39Kb
10
10
1 SM
Скачать Купить за 1 850 руб.

Небольшое вступление.

Очень не хочется тратить своё драгоценное время программиста на написание программного кода!

Эта разработка позволяет применить Систему Компоновки Данных (СКД), для поиска несоответствий в таблицах значений.

Возможно, возникает вопрос. А зачем нужно  такое?

Разработчик, столкнувшийся с проблемой свёртки базы или объединением двух баз, такой вопрос задавать не будет. Кроме того, этот конструктор удобно использовать для контроля результата обмена или просто сравнить две ТЗ.

Существенной особенностью конструктора является то, что для создания Таблиц значений можно использовать один и тот же макет СКД. Это гарантирует возможность корректной подготовки таблиц для последующего сравнения по наименованию колонок.

 

Цель – это сокращение трудозатрат программиста на поиск несоответствий в базах, например, с помощью сравнения таблиц значений.

 

Пояснение к конструктору сравнения таблиц значений.

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

Предлагаемый конструктор методом СКД создаёт две ТаблицыЗначений (ТЗ) исходную (ТЗ_лев) и контролируемую (ТЗ_прав) на основании данных текущей базы или, при необходимости, внешней.

В третьей таблице значений (ТЗразличия) конструктор вычислит различие между таблицами и представит их в удобной форме для визуального анализа или дальнейшей обработки. На экране (ТЗразличия) размещена между (ТЗлев) и (ТЗправ).

Конструктор сравнения таблиц значений можно запускать как в обычном так и управляемом приложении. Однако следует учитывать, что в управляемом приложении функции конструктора ограничены. В управляемом приложении конструктор только подготавливает таблицы значений к сравнению, а операции по вычислению (ТЗразличия) выполняются в обычном приложении. Подробно эта особенность продемонстрирована на видео в разделе 05:14«Проблема_1» и 09:46 «Проблема_4».

На Видео демонстрация представлена на платформе 8.3.15.1830. Возможна ситуация, когда при смене версии платформы потребуется корректировка мотора (модуль ОбщегоНазначенияСКД). Ситуация возможна, но корректировка мотора прозрачна.

ВИДЕО.

Видеоролик наглядно демонстрирует применение конструктора.

Текст к видеоролику прилагается. Если речевое сопровождение отличается от текста, то правильным следует считать письменный текст.

Также в тексте размещены примечания, озвучка которых нарушает ритм видеоролика.

 

ТЕКСТ демонстрации видеоролика «Конструктор сравнения таблиц значений».

 

00:00. Заставка. (в озвучку не входит)

Сравнение будет выполнено для ТаблицыЗначений из базы обычного приложения с ТаблицейЗначения из внешней базы управляемого приложения.

В демонстрируемом примере сравниваем справочник.Контрагенты на предмет несовпадения КодаСинхронизации для ИНН и КПП в различных базах.

 

00:10. Начинается демонстрация конструктора СравнениеТаблицЗначений.

Запускаем Конструктор в базе обычного приложения.

Приступим к заполнению таблиц значений.

00:39.   В настройках макета СКД оставим только необходимые реквизиты: ИНН, КПП и КодСинхронизации.

00:51. Укажем месторасположения мотора конструктора – это внешняя база.

00:59. Выберем текущую базу и заполним (ТЗ_лев).

01:07. Выберем внешнюю базу управляемого приложения и заполним (ТЗ_прав).

На экране видим три окна.

В левом представлена таблица (ТЗ_лев) текущей базы данных.

В правом – таблица (ТЗ_прав) контролируемой  базы, в нашем примере это внешняя.

По центру – будет получен результат сравнения – это ТЗразличия. 

01:36.  Продолжаем заполнять таблицы.

Кнопкой «СравнитьТЗлев_прав» вычисляем различия.

В (ТЗразличия) собраны строки, не имеющие аналога в (ТЗ_лев) и (ТЗ_прав).

Небольшой комментарий. (в озвучке отсутствует).

 В каждой строке указано из правой или левой таблицы поступила эта строка.

В конкретном примере, База-приемник (ТЗ_прав) предназначена для сбора  данных из различных Баз-источников. Поэтому, в базе (ТЗ_прав) присутствуют объекты, не имеющие отношение к базе (ТЗ_лев), однако по формальному алгоритму определения различий эти строки попадут в (ТЗразличия).

01:50. Оставляем в (ТЗразличия) только строки, имеющие отношение к текущей Базе-источнику и представим их в удобной форме.

01:57. Это требование выполняем в два шага.

А) Настроим (ТЗразличия) на поиск строк с одинаковым набором «ИНН и КПП».

В списке колонок клавишей «Delete» удаляем всё, кроме «ИНН и КПП». После чего, кнопкой «СвернутьПоСЗ» выполняем свёртку. Процедура сгруппирует строки по полям свёртки и покажет несовпадения Лев и Прав. Различия  разделены знаком ||(две вертикальные черты).

.

02:14. Б) Кнопкой «Оставить пересечения» удалим строки, не имеющие отношения к обмену между конкретными базами (ТЗ_лев) и (ТЗ_прав).

02:26

 В) Конструктор предоставляет разработчику возможность обработать результат по своему алгоритму.

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

02:29. Перейдем на страницу ДЗ. Проверим уникальность набора «ИНН и КПП».

Получим ДеревоЗначений текущей базы

03:00. и внешней базы данных.

03:30. В конструкторе использована универсальная процедура поиска дублей. Эта процедура будет описана в другой статье.

Как видим, в БазеИсточнике дублирования НЕТ. В БазеПриемнике дублирование ЕСТЬ. Из этого следует, что автоматическую коррекцию «КодаСинхронизации» допустимо выполнить только для уникальных объектов в обеих базах.

03:46. Поясним это утверждение на примере двух строк.

  1. 03:57. Для ИНН=2901257453 в колонке «Прав» два  различных кода синхронизации.
  2. Для ИНН=5190034244 в колонке «Прав» одно значение.

04:33. Второе значение Дубля не зарегистрировано в (ТЗразличия), так как оно не является различием. Этот вариант следует учесть при автоматической обработке.

04:56.Скрин этой ситуации с пояснениями  приведён ниже.

 

05:08. Такой алгоритм реализован и сейчас его запустим. Оставшиеся контрагенты требуют ручного вмешательства. Об этом сообщено на экране.

 

05:14. Теперь немного о проблемах Конструктора.

 Проблема_1.

 Предложенный конструктор корректно работает в обычном приложении. Это обусловлено тем, что сравнение двух ТЗ выполняется по наименованию колонок.

В управляемом приложении одинаковые наименования колонок на одном экране вызовут ошибку.

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

06:12. Вызываем тот же конструктор.

06:21. Настроимся на поиск различий в КодеСинхронизации.

06:39. Изменим адрес внешней базы. Сейчас обычное приложение назначено внешней базой.

 И повторим все операции по заполнению трёх ТЗ.

07:00. Пояснение к интерфейсу.

Зеленые кнопки устанавливают активную таблицу значений. При этом номер активной таблицы указывается в заголовках кнопок.

Рыжим цветом обозначены кнопки заполнения таблиц из  текстового файла.

Голубым цветом отмечены кнопки управления  таблицей различий (ТЗразличия).

Жёлтым цветом указано место расположения мотора конструктора - «версияСКД 2.8.24».

07:35. Примечание. Для демонстрации используется ранее разработанный КонструкторСКД, описание которого можно найти в моих публикациях. В текущем примере описаны изменения КонструктораСКД, необходимые для решения задачи сравнения (ТЗ_лев) и (ТЗ_прав). Следует учитывать, что желательно использовать последнюю версию модуля СформироватьРезультатСКД «версияСКД 2.8.24». Модуль расположен либо в модуле объекта внешней обработки, либо в общем модуле конфигурации (рекомендуется). Разработчик произвольно выбирает место расположения модуля.

08:10. Возвращаемся к (ТЗразличия)  Как видно, результат одинаковый.

Согласен, предложенное решение не очень красиво, но работает.

 

08:30. Проблема_2.

Один Макет СКД обслуживает различные базы. Поэтому возможна ситуация, когда во внешней базе востребованный реквизит назван иначе. Например, КодСинхронизации и КодДляСинхронизации. В этом случае макет СКД для чтения внешней базы не пригоден.

09:05. Проблема решается применением вычисляемого поля, в котором указано правило для каждой базы индивидуально.

Скрин с пояснениями приложен.

09:30.

МинусПроблема_3.

Конструктор корректно применяет СКД в управляемом приложении. Проблема_1 касается только формирования (ТЗразличия). 

То есть, сохранять файл для последующего анализа можно из управляемого приложения по тому же макету СКД.

 

09:46.

Проблема_4.

Если внешняя база не доступна как ComОбъект.

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

Запускаем конструктор в управляемом приложении.

10:13. Выбираем место расположения мотора.

10:25. Настраиваемся на поиск различий в наименованиях.

10:54. Запоминаем Таблицу в файл.

11:13. Настраиваем обычное приложение на поиск различий в наименованиях.

11:52. Читаем данные внешней базы из файла.

И получаем (ТЗразличий) по наименованию.

12:19. Как выясняется (ТЗразличий) чувствительна к регистру.

Устраняем это неудобство предварительной унификацией наименования.

12:45. Повторяем операции по сравнению.

13:00. Бухгалтер примет решение о необходимости вмешательства самостоятельно.

Желаю Успехов всем и каждому.

 

 

Рекомендация разработчику.

Если разработчик поставил себе задачу сравнить только одну ТЗ, то можно не заморачиваться с конструктором и использовать другие решения.

Статьи по аналогичной задаче «Сравнение таблиц значений».

//infostart.ru/public/780163/

//infostart.ru/public/236073/

//infostart.ru/public/728052/

//infostart.ru/public/202381/

 

Состав файла архива .rar::
1.    Внешняя обработка КонструкторТЗразличия, erf.
2.    Конфигурация шаблона КонструктораСКД,  cf. (версияСКД 2.8.24) – это мотор конструктора. 
3.    Архив базы шаблона КонструтораСКД,  dt. Архив содержит все названные модули.
Из шаблона в свою конфигурацию необходимо обязательно перенести модули ФункцииДляОтчетовСерверСКД и ФункцииДляОтчетовСКД. Эти модули обеспечивают работу в ComСоединении с внешней базой.
Модуль ОбщегоНазначенияСКД желательно разместить в конфигурации. В таком варианте проще поддерживать последний релиз.

обработка сравнение таблиц значения внешняя база.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    140429    770    391    

802

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    11513    31    6    

60

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

5400 руб.

17.05.2024    13665    31    27    

75

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    7250    27    4    

50

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2880 руб.

14.01.2013    181810    1103    0    

876

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    15977    3    12    

39

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    101108    242    97    

303

Инструментарий разработчика Перенос данных 1C Программист Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы. Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение для 1С, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    24491    17    15    

34
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 28.05.20 15:40 Сейчас в теме
Я в одной БД в отладке на точке останова пишу что-то вроде ЗначениеВФайл(Тз, ИмяФайла)
Затем открываю консоль запросов в другой БД и загружаю Тз в параметр запроса.
Затем прямо в консоли получаю Тз из параметра в ВТ и сравниваю ее с чем попало
После сохраняю расхождения куда попало и не забиваю мозг всякими настройками.

результат тот же, но решение намного короче, нэ
2. pavley2002 199 30.05.20 11:07 Сейчас в теме
(1)Рекомендация. Если наработанный метод устраивает, то не заморачивайтесь конструктором.
Оставьте свое сообщение