Modber Сообщество
профессионалов по 1С

Сравнение данных из разных источников (1С 8, SQL, CSV/TXT/DBF/XLS, табличный документ)



Скачиваний: 1
Платформы: 1С:Предприятие 8.3, 1С:Предприятие 8.2, Linux, Windows
Конфигурации: Все конфигурации
2017-02-13
947 
sertak
0  

Сравнение можно производить между данными любых баз: текущей, внешними базами 1С 8, внешними базы данных SQL, файлами форматов CSV/TXT/DBF/XLS, вручную заполненного табличного документа по простому и составному ключу из двух столбцов. В каждом сравнении участвуют выборки из двух источников данных, к каждому из которых должен быть написан запрос на языке 1С для информационной базы 1С 8 либо SQL для базы данных SQL либо указаны номера колонок в файле. После этого оба запроса выполняются, а полученные таблицы значений сравниваются между собой по ключу, который определяется как первая колонка для простого ключа или первая и вторая  колонка запроса для составного ключа. Сравнение таблиц значений производится в соответствии с выбранной операцией реляционной алгебры. Результат сравнения помещается в таблицу значений Результат сравнения, расположенную на форме на соответствующей вкладке. Таблица значений Результат сравнения содержит колонки:

  • ключ – первичный ключ;
  • А — количество строк, найденных в базе А по первичному ключу;
  • Б — количество строк, найденных в базе Б по первичному ключу;
  • реквизит А1...А5 – реквизиты выборки из базы А, номер совпадает с номером колонки в запросе;
  • реквизит Б1...Б5 – реквизиты выборки из базы Б, номер совпадает с номером колонки в запросе.

В случае, если число строк с данным первичным ключом в базе X больше одной, то в колонке X, хранящей количество строк, найденных по данному первичному ключу, выводится число найденных строк, а реквизиты X1 — X5 заполняются данными из первой попавшейся строки внешней БД (для облегчения последующего поиска ошибки), и подсвечиваются розовым цветом. Такие строки должны отсутствовать, если первичный ключ выбран правильно.
При выводе каждой строки (т.е. уже после применения операции реляционной алгебры) производится проверка условий вывода и условий запрета вывода, расположенных в табличной части, и если не выполняется условие вывода или выполняется условие запрета вывода, то строка удаляется из таблицы значений. Данный механизм игнорируется только для строк, в которых в одной из баз найдено больше одной строки для данного первичного ключа, т.к. в этом случае сравнение бессмысленно.
В верхней части формы находятся кнопки с изображениям кругов Эйлера, предназначенные для указания обработке, какую операцию реляционной алгебры применять для объединения результатов запросов. Выбранная операция подсветится зеленым цветом.
Параметры, устанавливаемые для каждой базы данных, заполняются на вкладках, соответствующих баз:

Тип базы – реквизит может принимать следующие значения:

  • текущая база 1С 8 – в этом случае никаких дополнительных параметров подключения к базе данных заполнять не нужно;
  • внешняя база 1С 8 – внешняя база 1 С8, доступная из текущей подсети, в этом случае необходимо заполнить параметры Версия платформы, Вариант работы, Путь к базе или Сервер/Имя базы, Логин и Пароль;
  • база данных SQL – база данных SQL;
  • файл -  файл формата CSV/TXT/DBF/XLS;
  • таблица — табличный документ, расположенный на форме;
  • вариант работы – вариант работы информационной базы, может принимать следующие значения:
  • файловый – внешняя база размещена в файле, в этом случае необходимо заполнить Путь к базе, Логин и Пароль;
  • клиент-серверный – внешняя база размещена на сервере приложений 1С, в этом случае необходимо заполнить Сервер, Имя базы, Логин и Пароль;
  • версия платформы – версия платформы 1С 8, отвечает за выбор COM-компоненты, используемой для подключения к базе;
  • путь к базе – путь к файловой базе;
  • сервер – имя сервера приложений 1С или сервера баз данных;
  • имя базы – имя базы на сервере приложений 1С или базы данных SQL;
  • логин – логин пользователя внешней базы 1С (у пользователя должно быть право внешнего соединения) или пользователя SQL;
  • пароль – пароль пользователя внешней базы 1С 8 или пользователя SQL:
  • приводить ключ к верхнему регистру – символы нижнего регистра, входящие в первичный ключ, будут преобразованы в символы верхнего регистра;
  • удалять из ключа фигурные скобки – символы { и } будет заменены в ключе на пустые строки;
  • использовать в качестве ключа УИД – первичный ключ будет сформирован путем вызова функции УникальныйИдентификатор() из первой колонки, которая должна быть ссылочного типа;
  • текст запроса – текст запроса на языке 1С для баз 1С 8 (доступен конструктор запроса) и на языке SQL для баз данных SQL.

Параметры, отвечающие за вывод и запрет вывода строк, заполняются на вкладке Настройки отбора. На вкладках Условия вывода строк и Условия запрета вывода строк можно заполнить следующие реквизиты:

  • логический оператор для объединения условий – оператор объединяет все строки из табличной части;
  • код редактируется вручную – при установке флага код становится доступным для редактирования;
  • многострочное поле ввода без имени – произвольный код, формируемый автоматически на основании строк табличной части, может редактироваться вручную, выполняется для каждой строки таблицы значений Результат сравнения.

Реквизиты табличных частей заполняются следующим образом:

  • реквизит – имя реквизита таблицы значений Результат сравнения;
  • условие – условие сравнения;
  • с чем сравнивать – определяется режим сравнения, может принимать значения Реквизит и Значение;
  • значение – заполняется в случае, если реквизит С чем сравнивать равен Значение, в данном режиме значение реквизита таблицы значений сравнивается с указанным в данном поле значением;
  • реквизит – заполняется в случае, если реквизит С чем сравнивать равен Реквизит, в данном режиме значение реквизита таблицы значений сравнивается со значением реквизита, указанного в данном поле.

Для обеспечения возможности сравнения данных по периодам можно использовать предопределенные параметры ДатаНачала и ДатаОкончания, которые можно задать на вкладке Общие предопределенные параметры запросов как в виде абсолютного значения периода, так и виде относительного значения с указанием дискретности (год, месяц, день). Относительный период удобен при ежедневном контроле данных, т.к. период в этом случае рассчитывается атвтоматически относительно текущей даты.

В результате выполнения произвольного кода с вкладки Условия вывода строк устанавливается значение переменной УсловияВыводаСтрокиВыполнены, а с вкладки Условия запрета вывода строк — значение переменной УсловияЗапретаВыводаСтрокиВыполнены. Строка останется в таблице значений Результат сравнения, если УсловияВыводаСтрокиВыполнены = Истина, а УсловияЗапретаВыводаСтрокиВыполнены = Ложь. Необходимо также помнить, что если по первичному ключу хотя бы в одной из баз найдено более одной строки, то условия игнорируются, т.к. такие сроки должны быть отображены для выявления причин ошибки.
После настройки всех параметров необходимо нажать кнопку кнопку Сравнить данные обработка выполнит оба запроса, объединит их в соответствии с выбранной операцией реляционной алгебры, выведет в таблицу значений, затем отфильтрует в соответствии с условиями вывода и запрета вывода строк, после чего отобразит ее на форме на вкладке Результат сравнения.

При подключениях к информационным базам 1С 8 доступен обычный конструктор запросов (команда Конструктор запросов расположена на вкладках, соответствующих настройкам баз 1С 8).

Для обеспечения возможности хранения настроек сравнения в базе необходимо добавить в конфигурацию справочник НастройкиКонсолиСравненияДанных с реквизитом Настройка типа ХранилищеЗначения.

P.S. Данное описание могло устареть, актуальное описание всегда доступно в самой обработке по клавише F1.



Как установить отработку или отчет 1С


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


Комментарии (0)