Консоль сравнения данных (1С 8, 1С 7.7, SQL, CSV, TXT, DBF, XLS, DOC, XML, табличный документ) (версия 14.1.45)

Публикация № 581794

Обработки - Универсальные обработки

сравнение сравнить данных данные 7.7 8 SQL Server PostgreSQL сопоставление разные конфигурации CSV TXT DBF XLS DOC XML базы

88
Обработка Консоль сравнения данных (КСД) предназначена для сравнения данных, полученных из разных источников данных: информационных баз 1С 8, 1С 7.7, баз данных SQL, файлов формата CSV/TXT/DBF/XLS/DOC/XML, вручную заполненного табличного документа. Минимально необходимая версия платформы: 8.3.6.1977.

Сравнение можно производить между данными из следующих источников:

  • текущая база 1С 8
  • внешняя база 1С 8 (через COM)
  • внешняя база 1С 7.7 (файловая, через COM)
  • внешняя база данных SQL (MS, Postgre и др., для которых есть драйвер)
  • файл формата CSV
  • файл формата TXT
  • файл формата DBF
  • файл формата XLS
  • файл формата XML
  • табличный документ на форме обработки

Данные сравниваются между собой по ключу (от одной до трех колонок), который определяется как первая колонка  (первые колонки) запроса для 1С/SQL или в соответствии с настройками для файлов и табличного документа. Результат сравнения можно выгрузить в CSV-файл, в т.ч. программно. Настройки консоли можно сохранять в файл и справочник ВС_ОперацияСравненияДанных (справочник должен содержать один элемент с именем Операция и типом Хранилище значения).

Порядок работы с обработкой КСД:

  1. Настройка источников А и Б: текст запроса 1С/SQL, параметры (кроме ДатаНачала и ДатаОкончания) для 1С, номера колонок для файлов и табличного документа, при необходимости дополнительной обработки данных перед сравнением для ключей и остальных реквизитов можно указать произвольный код, кроме того, для устранения дубликатов в файлах можно установить флаг "Сворачивать данные по ключу"
  2. Общие настройки: заполнение параметров ДатаНачала и ДатаОкончания (данные параметры общие для источников А и Б), число столбцов в ключе
  3. Выбор операции реляционной алгебры (левое соединение, разность и т.д.), которая будет использована для объединения результатов запросов (с помощью кнопок в верхней части формы)
  4. Настройка фильтрации строк на вкладках Условия вывода строк и/или Условия вывода строк: можно указать, какие условия должны или не должны выполняться для каждой результирующей строки, чтобы она была выведена

 

Актуальную инструкцию можно скачать здесь.

Буду благодарен, если напишете о найденном баге на sertakov [а] list.ru, в личку или в комментариях.

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

P.P.S. Если вам нужно извлекать данные из 1С 7.7 более сложными запросами, пишите в личку, могу доработать, но нужна помощь с 1С 7.7.

88

Скачать файлы

Наименование Файл Версия Размер
Консоль сравнения данных из разных источников (1С 8, SQL, CSV/TXT/DBF/XLS/DOC/XML, табличный документ)
.epf 144,38Kb
23.08.19
97
.epf 14.1.45 144,38Kb 97 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. alexzhegzdrin 15.02.17 16:28 Сейчас в теме
Неплохо бы увидеть возможность выбора драйвера, отличного от MS SQL
2. sertak 136 15.02.17 16:58 Сейчас в теме
(1) Версия 4.4.12: драйвер можно указать вручную, можно выбрать из списка (SQL Server, PostgreSQL).
3. sertak 136 16.02.17 23:11 Сейчас в теме
Версия 5.0.13:
добавлена возможность сравнения с файлами CSV/TXT/DBF/XLS.

Теперь можно сравнивать данные из любых двух источников:
- текущая база 1С 8;
- внешняя база 1С 8;
- база данных SQL Server;
- база данных PostgreSQL;
- другая база SQL через вручную указанный драйвер;
- файл формата CSV/TXT/DBF/XLS.
4. sertak 136 20.02.17 12:24 Сейчас в теме
Версия 6.1.15:
добавлена возможность использования составного ключа из двух колонок;
исправлена ошибка, из-за которой невозможно было извлечь УИД из ссылки из внешней базы 1С 8.
5. sertak 136 20.02.17 15:47 Сейчас в теме
Версия 6.1.16:
исправлена ошибка.
6. sertak 136 04.03.17 00:15 Сейчас в теме
Версия 7.0.17:
реализована возможность загрузки данных из табличного документа.

Версия 7.0.18:
исправлена ошибка.
7. sertak 136 12.03.17 19:27 Сейчас в теме
Версия 7.1.19:
увеличена длина и точность типа Число реквизитов.
8. zerdov 46 24.05.17 17:00 Сейчас в теме
Как внести значения параметра Период в запросе к ВТ регистра сведенийЦеныНоменклатурыСрезПоследних ?
Такое впечатление, что запрос работает с обычной таблицей ЦеныНоменклатуры. Выводит даты документов- регистраторов.
9. sertak 136 25.05.17 12:26 Сейчас в теме
10. sertak 136 25.05.17 12:32 Сейчас в теме
(8)
1)
 ВЫБРАТЬ
	ЦеныНоменклатурыСрезПоследних.Номенклатура,
	ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(ДАТАВРЕМЯ(2017, 1, 1), ) КАК ЦеныНоменклатурыСрезПоследних


2)
ВЫБРАТЬ
	ЦеныНоменклатурыСрезПоследних.Номенклатура,
	ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаНачала, ) КАК ЦеныНоменклатурыСрезПоследних


а на вкладке консоли Общие настроки -> Основные нужно в левую границу периода внести нужную дату среза цен
11. zerdov 46 25.05.17 16:14 Сейчас в теме
(10)
ДАТАВРЕМЯ(2017, 05, 25)

Спасибо! Я по второму варианту строил запрос. Мое "впечатление" было ошибочным, периоды и должны были быть разными, главное что бы были последними ).
ВЫБРАТЬ
	ЦеныНоменклатурыСрезПоследних.Номенклатура.Код КАК НоменклатураКод,
	ЦеныНоменклатурыСрезПоследних.Период КАК Период,
	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
	ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
ИЗ
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОкончания, ) КАК ЦеныНоменклатурыСрезПоследних
12. sertak 136 16.11.17 15:55 Сейчас в теме
Версия 7.1.20:
исправлена ошибка, из-за которой в некоторых случаях сравнение по составному ключу производилось некорректно.
13. sertak 136 17.11.17 22:24 Сейчас в теме
Версия 7.2.21:
реализована возможность использования параметров запроса при подключении к текущей базе 1С 8 (параметры ДатаНачала и ДатаОкончания берутся только с вкладки Общие настройки -> Основные даже в том случае, если одноименные есть на вкладке Параметры запроса);
исправлена ошибка, из-за которой в настройках не сохранялся номер первой строки файла.
14. sertak 136 20.02.18 11:56 Сейчас в теме
Версия 8.0.22:
реализована возможность загрузки данных из файлов формата XML;
исправлена ошибка, из-за которой в некоторых режимах некорректно определялся список обязательных к заполнению полей;
доработан вывод сообщений об ошибках заполнения реквизитов.
15. Erne100 244 26.03.18 11:23 Сейчас в теме
А параметров запроса Б нет? Хотя бы примитивный типов... для начала
Evg-Lylyk; sertak; +2 Ответить
17. sertak 136 26.03.18 14:52 Сейчас в теме
Вы имеете в виду ситуацию, когда Б - внешняя база 1С, видимо. Не реализовывал пока.
18. Erne100 244 26.03.18 15:59 Сейчас в теме
(17) Да именно это. А пока делаю так:
ГДЕ
	РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
	И РеализацияТоваровУслуг.Организация.ИНН = "32177162"
30. sertak 136 29.06.18 13:08 Сейчас в теме
(15) реализовано в версии 11.1.30.
Evg-Lylyk; +1 Ответить
19. m-rv 735 04.05.18 14:49 Сейчас в теме
Оч.крутая штука!
Как мысль для дальнейшего развития: нужен какой-то а-ля пользовательский режим, в котором не видны настройки подключений, запросы, но есть возможность редактировать режим "таблица". т.е. программист все настроил, сохранил настройки, потом пользователь просто открывает настройки, сравнивает и смотрит на результат.
20. sertak 136 04.05.18 15:51 Сейчас в теме
Спасибо, сам к ней неравнодушен ).
Сохранение/открытие настроек есть, пользователю достаточно сделать 2 действия: выбрать настройку и нажать кнопку сформировать, даже период будет сам пересчитываться, т.к. его можно задать в единицах времени относительно текущей даты. Напишите подробнее мысль, заинтересовали.
24. sertak 136 14.05.18 09:04 Сейчас в теме
21. sertak 136 05.05.18 07:25 Сейчас в теме
Версия 8.0.23:
исправлена ошибка, из-за которой при наличии пробелов в ключе могли не заполняться реквизиты.
22. sertak 136 08.05.18 11:47 Сейчас в теме
Версия 8.0.24:
исправен запрет на имя колонки выборки запроса: теперь колонку можно называть Количество.
23. sertak 136 14.05.18 09:04 Сейчас в теме
Версия 8.1.25:
добавлена возможность открытия формы в пользовательском режиме, где пользователь может только выбирать сохраненные настройки и производить сравнение, для включения режима достаточно установить флаг Пользовательский режим в программно созданную обработку либо передать этот флаг как параметр при открытии формы (ОткрытьФорму("Обработка.ВС_КонсольСравненияДанныхИзРазныхИсточников.Форма", Новый Структура("ПользовательскийРежим", Истина), ПараметрыВыполненияКоманды.Источник, Новый УникальныйИдентификатор)).
П.С. Спасибо Маркову Роману за идею.
25. sertak 136 23.05.18 11:40 Сейчас в теме
Версия 8.2.26:
добавлена возможность программного заполнения реквизитов с помощью произвольного кода при чтении данных из файлов (обращение к значениям реквизитов осуществлется по именам Р1...Р5, обращение к текущему - по имени РТек, например, для реквизита 3 может быть задан такой произвольный код: РТек = Р1 * Р2 * 1.2).
26. sertak 136 12.06.18 10:40 Сейчас в теме
Версия 9.0.27:
реализована возможность использования составного ключа из трех столбцов (используются первые три колонки каждой выборки для баз 1С и SQL и явно указанные номера колонок для файлов).
27. sertak 136 25.06.18 11:11 Сейчас в теме
Версия 10.0.28:
реализована возможность программного изменения столбцов ключа с помощью произвольного кода при чтении данных (обращение к исходным значениям столбцов ключа осуществляется по именам Ключ1, Ключ2, Ключ3, например, может быть задан такой произвольный код: КлючТек = Число(Лев(СокрЛП(КлючТек ), 5));
добавлены кнопки открытия в реквизитах с ключами и произвольным кодом;
исправлена ошибка, из-за которой при чтении XML-файла не заполнялся третий столбец составного ключа.
28. sertak 136 27.06.18 13:06 Сейчас в теме
Версия 11.0.29:
реализована возможность сворачивания данных, полученных из файлов или табличного документа, по ключу (для реквизитов применяется агрегатная функция Сумма).
29. sertak 136 29.06.18 13:08 Сейчас в теме
Версия 11.1.30:
реализована возможность установки параметров запроса примитивных типов данных для внешней базы 1С 8.
31. sertak 136 06.07.18 17:06 Сейчас в теме
Версия 11.2.31:
добавлены колонки Тип столбца 1-3 ключа.
32. sertak 136 10.07.18 11:58 Сейчас в теме
Версия 11.3.32:
реализована возможность выгрузки результата сравнения в файл формата CSV (на сервере).
33. sertak 136 25.04.19 11:17 Сейчас в теме
Версия 11.3.34:
доработан интерфейс (добавлены пояснения и др.).
34. starik-2005 1921 26.04.19 11:18 Сейчас в теме
Умеет работать по регламенту и данные в файл класть? Типа база 1, в которой остатки, база 2, в которой остатки, регламент обмена, регламент сравнения после обмена (или до, и в качестве параметра для обмена результат сравнения в части отличающихся данных). Весьма распространенный кейс для компаний, которые режут разбухшие базы на актуальную с остатками и архивную с доступом только для определенных людей и ежедневной синхронизацией.
35. sertak 136 26.04.19 13:43 Сейчас в теме
(34) Да, функции и процедуры находятся в модуле объекта, без проблем. Создаете новый элемент справочника с настройками, в регламенте создаете экземпляр обработки, скармливаете ей этот элемент, устанавливаете дату либо же она автоматом, если в настройках была указана относительная и вызываете соответствующую функцию. Напишу между делом пример использования обработки из регламентного задания.
36. starik-2005 1921 26.04.19 14:54 Сейчас в теме
(35)
Напишу между делом пример использования обработки из регламентного задания.
Внешние обработки могут подключаться к системе и выполняться по-расписанию. Вы не используете данный функционал БСП?
37. sertak 136 26.04.19 15:03 Сейчас в теме
(36) Нет, не реализовывал такой вариант, при наличии времени посмотрю.
38. starik-2005 1921 26.04.19 15:07 Сейчас в теме
Писал коллегам как-то лет сто назад:
------------------------
На всякий случай хочу рассказать, как за пять минут превратить внешнюю обычную обработку в подключаемое регламентное задание для систем на базе БСП 2.х. (все наши решения, основанные на бухгалтерии 3.х).

1. Код обработки должен быть в модуле обработки, а не в ее форме.

2. Нужно создать парочку процедур:

Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Версия = "0.1"; // это версия
    ПараметрыРегистрации.Назначение = Неопределено;
    ПараметрыРегистрации.БезопасныйРежим = Ложь; // ВАЖНО! это разрешение обработке выполняться в небезопасном режиме - файлы, интернет, ...
    ПараметрыРегистрации.Информация = НСтр("ru = 'Загрузка рейтингов'");
   
    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = НСтр("ru = 'Загрузка рейтингов'");
    Команда.Идентификатор = "ЗагрузкаРейтингов";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    Команда.ПоказыватьОповещение = Ложь;
   
    Возврат ПараметрыРегистрации;
КонецФункции

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды = Неопределено) Экспорт
    Если ИдентификаторКоманды = "ЗагрузкаРейтингов" Тогда
        ЗаписьЖурналаРегистрации("ЗагрузкаРейтингов", УровеньЖурналаРегистрации.Предупреждение, ЭтотОбъект.Метаданные(), ЭтотОбъект, "Начало загрузки рейтингов");
        ВыполнитьЗагрузку(); // это та самая процедура, которая будет выполняться в регламентном задании
    КонецЕсли;
КонецПроцедуры

// это та самая процедура, которая будет выполняться в регламентном задании
Процедура ВыполнитьЗагрузку()
// ... ТУТ ВАШ КОД!
// ... ТУТ ВАШ КОД!
КонецПроцедуры
---------------------
Показать
39. sertak 136 26.04.19 15:32 Сейчас в теме
(38) Спасибо, при наличии времени думаю сделать, основное время работаю с нетиповой конфигой, с БСП редко имею дело последнее время.
40. webester 28 27.04.19 07:27 Сейчас в теме
(38)Извините за глупые вопросы. Я не вижу как это должно лечь в регламентные задания и в какой момент это должно произойти. Я вижу внешнюю обработку в которой описана команда вызова серверного метода. Это стандартная технология подключения внешних обработок в БСП. Не могли бы вы объяснить подробнее причем здесь регламентные задания, если вам не сложно.
41. starik-2005 1921 27.04.19 10:52 Сейчас в теме
(40) всякую подключенную внешнюю обработку можно настротть выполняться по расписанию - это стандартный механизм БСП. Настраивается все в справочнике внешних обработок. Могу за мзду показать как, если до сих пор не ясно.
43. sergathome 27.04.19 12:56 Сейчас в теме
(41) ну не всякую, не вводите слабые умы в заблуждение...
47. starik-2005 1921 27.04.19 17:16 Сейчас в теме
48. starik-2005 1921 27.04.19 17:17 Сейчас в теме
(44)
Можно без мзды
Без мзды я уже все написал )))
45. webester 28 27.04.19 15:51 Сейчас в теме
(41)Понятно. Я не понял просто, Написано вот как добавить обработку в регламентные задания. А код приведен регистрации обработки. Так бы и написали - Можно добавить обработку с вызовом серверного метода и зарегистрировать ее как регламентное задание штатными средствами БСП.
Важно понимать, то, что хотел написать программист и то, что он написал, очень часто не одно и то же©не помню кто
46. acanta 60 27.04.19 16:33 Сейчас в теме
(45) Мы покажем что у нас есть и посмотрим что ты можешь ©заказчики
Удачи в продвижении.
42. sertak 136 27.04.19 12:33 Сейчас в теме
(40) Я имел в виду создание нового регламентного в конфигураторе, а через БСП я не рассматривал.
49. sertak 136 30.04.19 12:51 Сейчас в теме
Версия 11.4.35:
модальные окна заменены на блокирующие;
реализована возможность выгрузки результата сравнения в файл на клиенте.
starik-2005; +1 Ответить
50. kosmo0 81 04.05.19 16:54 Сейчас в теме
Вот о чем я мечтал давненько, но руки так и не дошли. А то некоторое количество удаленных БД в тьму-таракани и некоторых случаев сбоев обмена данными.

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

Вот как-то так.
51. sertak 136 06.05.19 20:58 Сейчас в теме
(50) интересная идея, подумаю на досуге, что-то вроде справочника Сценарии сравнения, каждый элемент которого включает список настроек сравнения.
52. starik-2005 1921 07.05.19 10:05 Сейчас в теме
(50) лучше обороты сравнить за периоды, если есть разница - найти период с нестыковкой, потом уже по нему детализироваться. вываливая только разницу (могли контрагента поменять в базе А, а в базу Б он не приехал - самая частая причина нестыковок, а могли документ распровести или он не приехал по какой-то причине)


(51) в принципе со сценариями и разворотом детализации вполне себе продукт получается за денежку. Автоотправку на почту прикрутить - и за 2к выставить.
53. sertak 136 07.05.19 11:10 Сейчас в теме
(52) целей заработать нет, но идея стоящая. Я когда-то в одной компании работал, там 8 юрлиц было и даже конфиги не все одинаковые, а они друг другу комиссионный товар продавали, хлебнул горя, тогда-то и начала зарождаться идея о создании гибкого инструмента для сравнения чего угодно. Сейчас у меня баз немного, но сценарность и тут бы пригодилась. Попытка не пытка же ).
54. starik-2005 1921 07.05.19 11:17 Сейчас в теме
(53) мы в свое время базу написали, там SQL-запросики всю разность давали.
59. sertak 136 16.08.19 16:41 Сейчас в теме
(50)
(54)
Реализовал сценарное сравнение данных: https://infostart.ru/public/1109393/.
55. sertak 136 30.07.19 09:07 Сейчас в теме
Версия 12.0.37
заголовок устанавливается при открытии из файла или элемента справочника, вручную не изменяется;
справочник хранения настроек НастройкиКонсолиСравненияДанных переименован в ВС_ОперацииСравненияДанных для унификации с конфигурацией Сценарное сравнение данных;
реализована возможность заполнения на основании элемента справочника ВС_ОперацииСравненияДанных при открытии (параметр ОперацияСравненияДанных);
при сохранении вместо открытия формы выбора можно обновить элемент справочника, из которого была заполнена консоль.
56. sertak 136 01.08.19 12:17 Сейчас в теме
Версия 12.1.38
реализована возможность указания правой границы относительного периода (например, первые 6 месяцев из последних 1 лет, первые 1 день из последних 2 дней, т.е. вчера).
57. sertak 136 12.08.19 12:45 Сейчас в теме
Версия 12.2.39
пересчет значения относительного периода перенесен в модуль объекта, вызывается при изменении реквизитов формы и в процедуре сравнения данных (перед программным вызовом процедуры СравнитьДанныеНаСервере() необходимо либо рассчитать и установить границы периода либо вызвать процедуру ОбновитьДанныеПериода() для автоматического расчета);
перед закрытием выводится запрос на обновление связанного элемента справочника ВС_ОперацииСравненияДанных;
в произвольном коде условий вывода строк в таблицу расхождений обращение к имени реквизита теперь производится по имени СтрокаТР.<Имя реквизита>;
исправлена ошибка, из-за которой не отрабатывал произвольный код обработки ключа в базах 1С 8.
58. sertak 136 13.08.19 16:37 Сейчас в теме
Актуальная инструкция теперь всегда доступна по этой ссылке.
60. sertak 136 19.08.19 10:02 Сейчас в теме
Версия 12.2.41
доработаны пиктограммы активных реляционных операций;
добавлена команда скачивания последней версии обработки с сайта автора;
для источника типа Таблица номер первой строки нужно указывать в соответствующем реквизите;
исправлена ошибка, из-за которой не контролировалось заполнение некоторых реквизитов для источников типа Таблица.
61. sertak 136 20.08.19 08:46 Сейчас в теме
Версия 12.2.42
исправлена ошибка, из-за которой в запросе к внешней базе 1С 8 колонку нельзя было назвать Количество;
на интерфейсе формы команды перехода к web-страницам сгруппированы в подменю Поддержка.
62. sertak 136 21.08.19 15:11 Сейчас в теме
Версия 13.0.43
реализовано получение данных из файловых информационных баз 1С 7.7 через простые запросы.
63. sertak 136 22.08.19 16:11 Сейчас в теме
Версия 14.0.44
реализовано получение данных из файлов формата DOC (Microsoft Word);
реализована возможность указания конкретного номера книги при получении данных из файла формата XLS;
реализована возможность загрузки файлов с клиентского ПК (тем не менее, необходимое для чтения ПО должно быть установлено на сервере, например, Microsoft Office, т.к. обработка файлов производится на сервере).
64. sertak 136 23.08.19 14:23 Сейчас в теме
Версия 14.1.45:
реализована возможность отключения условий вывода и запрета вывода строк без удаления строк табличной части;
расширен список возможных значений версии платформы 1С 8 (используется для получения ProgID COM-объекта при подключении к внешней базе);
реализован вывод предупреждения, если число колонок в файле XLS меньше указанного в настройках для ключа или реквизитов;
реализован вывод предупреждения, если число колонок в выборке 1С 8 / SQL меньше указанного числа столбцов в ключе;
исправлена ошибка, из-за которой при ключе из трех столбцов и некоторых вариантах обработки ключа колонки могли расположиться в некорректной последовательности.
Оставьте свое сообщение