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

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

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

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

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

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

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

 

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

 

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

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

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

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

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

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

ВИДЕО.

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

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

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

 

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

 

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.

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

02:26

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

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

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

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

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

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

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

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

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

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

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

 

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

 

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

 Проблема_1.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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. Бухгалтер примет решение о необходимости вмешательства самостоятельно.

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

 

 

Рекомендация разработплатфор программу 1С мачику.

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

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

https://infostart.ru/public/780163/

https://infostart.ru/public/236073/

https://infostart.ru/public/728052/

https://infostart.ru/public/202381/

 

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

Скриншоты


ИНН4244_03.png

СтруктураCF_04.png

РеквизитыДвеТЗ_04.png

Файлы

Наименование Файл Версия Размер Кол. Скачив.
Конструктор сравнения таблиц значения, в том числе из внешней базы.:
.rar 612,39Kb
9
.rar 612,39Kb 9 Скачать

Полная версия

© ООО "Инфостарт", 2006-2023 www.infostart.ru