Минимально необходимая версия платформы: 8.3.6.1977.
Сравнение можно производить между данными из следующих источников:
- текущая база 1С 8
- внешняя база 1С 8 (через COM)
- внешняя база 1С 7.7 (файловая, через COM)
- внешняя база данных SQL (MS, Postgre и др., для которых есть драйвер)
- файл формата CSV
- файл формата TXT
- файл формата DBF
- файл формата XLS
- файл формата XML
- строка JSON
- табличный документ на форме обработки
Данные сравниваются между собой по ключу (от одной до трех колонок), который определяется как первая колонка (первые колонки) запроса для 1С/SQL или в соответствии с настройками для файлов и табличного документа. Результат сравнения можно выгрузить в CSV-файл, в т.ч. программно. Настройки консоли можно сохранять в файл и справочник ВС_ОперацияСравненияДанных (справочник должен содержать один элемент с именем Операция и типом Хранилище значения).
Порядок работы с обработкой КСД:
- Настройка источников А и Б: текст запроса 1С/SQL, параметры (кроме ДатаНачала и ДатаОкончания) для 1С, номера колонок для файлов и табличного документа, при необходимости дополнительной обработки данных перед сравнением для ключей и остальных реквизитов можно указать произвольный код, кроме того, для устранения дубликатов в файлах можно установить флаг "Сворачивать данные по ключу"
- Общие настройки: заполнение параметров ДатаНачала и ДатаОкончания (данные параметры общие для источников А и Б), число столбцов в ключе
- Выбор операции реляционной алгебры (левое соединение, разность и т.д.), которая будет использована для объединения результатов запросов (с помощью кнопок в верхней части формы)
- Настройка фильтрации строк на вкладках Условия вывода строк и/или Условия вывода строк: можно указать, какие условия должны или не должны выполняться для каждой результирующей строки, чтобы она была выведена
Актуальную инструкцию можно скачать здесь.
Буду благодарен, если напишете о найденном баге на sertakov [а] list.ru, в личку или в комментариях.
P.S. На основании данной обработки разработана конфигурация Сценарное сравнения данных (ССД), позволяющая в автоматическом режиме выполнять последовательность из операций сравнения данных с возможностью указания условий выполнения и автоматического изменения анализируемого периода.
P.P.S. Если вам нужно извлекать данные из 1С 7.7 более сложными запросами, пишите в личку, могу доработать, но нужна помощь с 1С 7.7.
Неплохо бы увидеть возможность выбора драйвера, отличного от MS SQL
(1) Версия 4.4.12: драйвер можно указать вручную, можно выбрать из списка (SQL Server, PostgreSQL).
Версия 5.0.13:
добавлена возможность сравнения с файлами CSV/TXT/DBF/XLS.
Теперь можно сравнивать данные из любых двух источников:
— текущая база 1С 8;
— внешняя база 1С 8;
— база данных SQL Server;
— база данных PostgreSQL;
— другая база SQL через вручную указанный драйвер;
— файл формата CSV/TXT/DBF/XLS.
Версия 6.1.15:
добавлена возможность использования составного ключа из двух колонок;
исправлена ошибка, из-за которой невозможно было извлечь УИД из ссылки из внешней базы 1С 8.
Версия 6.1.16:
исправлена ошибка.
Версия 7.0.17:
реализована возможность загрузки данных из табличного документа.
Версия 7.0.18:
исправлена ошибка.
Версия 7.1.19:
увеличена длина и точность типа Число реквизитов.
Как внести значения параметра Период в запросе к ВТ регистра сведенийЦеныНоменклатурыСрезПоследних ?
Такое впечатление, что запрос работает с обычной таблицей ЦеныНоменклатуры. Выводит даты документов- регистраторов.
(8) Скиньте ваш запрос
(8)
1)
2)
а на вкладке консоли Общие настроки -> Основные нужно в левую границу периода внести нужную дату среза цен
(10)
Спасибо! Я по второму варианту строил запрос. Мое «впечатление» было ошибочным, периоды и должны были быть разными, главное что бы были последними ).
Версия 7.1.20:
исправлена ошибка, из-за которой в некоторых случаях сравнение по составному ключу производилось некорректно.
Версия 7.2.21:
реализована возможность использования параметров запроса при подключении к текущей базе 1С 8 (параметры ДатаНачала и ДатаОкончания берутся только с вкладки Общие настройки -> Основные даже в том случае, если одноименные есть на вкладке Параметры запроса);
исправлена ошибка, из-за которой в настройках не сохранялся номер первой строки файла.
Версия 8.0.22:
реализована возможность загрузки данных из файлов формата XML;
исправлена ошибка, из-за которой в некоторых режимах некорректно определялся список обязательных к заполнению полей;
доработан вывод сообщений об ошибках заполнения реквизитов.
А параметров запроса Б нет? Хотя бы примитивный типов… для начала
Вы имеете в виду ситуацию, когда Б — внешняя база 1С, видимо. Не реализовывал пока.
(17) Да именно это. А пока делаю так:
Оч.крутая штука!
Как мысль для дальнейшего развития: нужен какой-то а-ля пользовательский режим, в котором не видны настройки подключений, запросы, но есть возможность редактировать режим «таблица». т.е. программист все настроил, сохранил настройки, потом пользователь просто открывает настройки, сравнивает и смотрит на результат.
Спасибо, сам к ней неравнодушен ).
Сохранение/открытие настроек есть, пользователю достаточно сделать 2 действия: выбрать настройку и нажать кнопку сформировать, даже период будет сам пересчитываться, т.к. его можно задать в единицах времени относительно текущей даты. Напишите подробнее мысль, заинтересовали.
Версия 8.0.23:
исправлена ошибка, из-за которой при наличии пробелов в ключе могли не заполняться реквизиты.
Версия 8.0.24:
исправен запрет на имя колонки выборки запроса: теперь колонку можно называть Количество.
(19) реализовано в 8.1.25.
Версия 8.1.25:
Маркову Роману за идею.
добавлена возможность открытия формы в пользовательском режиме, где пользователь может только выбирать сохраненные настройки и производить сравнение, для включения режима достаточно установить флаг Пользовательский режим в программно созданную обработку либо передать этот флаг как параметр при открытии формы (ОткрытьФорму(«Обработка.ВС_КонсольСравненияДанныхИзРазныхИсточников.Форма», Новый Структура(«ПользовательскийРежим», Истина), ПараметрыВыполненияКоманды.Источник, Новый УникальныйИдентификатор)).
П.С. Спасибо
Версия 8.2.26:
добавлена возможность программного заполнения реквизитов с помощью произвольного кода при чтении данных из файлов (обращение к значениям реквизитов осуществлется по именам Р1…Р5, обращение к текущему — по имени РТек, например, для реквизита 3 может быть задан такой произвольный код: РТек = Р1 * Р2 * 1.2).
Версия 9.0.27:
реализована возможность использования составного ключа из трех столбцов (используются первые три колонки каждой выборки для баз 1С и SQL и явно указанные номера колонок для файлов).
Версия 10.0.28:
реализована возможность программного изменения столбцов ключа с помощью произвольного кода при чтении данных (обращение к исходным значениям столбцов ключа осуществляется по именам Ключ1, Ключ2, Ключ3, например, может быть задан такой произвольный код: КлючТек = Число(Лев(СокрЛП(КлючТек ), 5));
добавлены кнопки открытия в реквизитах с ключами и произвольным кодом;
исправлена ошибка, из-за которой при чтении XML-файла не заполнялся третий столбец составного ключа.
Версия 11.0.29:
реализована возможность сворачивания данных, полученных из файлов или табличного документа, по ключу (для реквизитов применяется агрегатная функция Сумма).
(15) реализовано в версии 11.1.30.
Версия 11.1.30:
реализована возможность установки параметров запроса примитивных типов данных для внешней базы 1С 8.
Версия 11.2.31:
добавлены колонки Тип столбца 1-3 ключа.
Версия 11.3.32:
реализована возможность выгрузки результата сравнения в файл формата CSV (на сервере).
Версия 11.3.34:
доработан интерфейс (добавлены пояснения и др.).
Умеет работать по регламенту и данные в файл класть? Типа база 1, в которой остатки, база 2, в которой остатки, регламент обмена, регламент сравнения после обмена (или до, и в качестве параметра для обмена результат сравнения в части отличающихся данных). Весьма распространенный кейс для компаний, которые режут разбухшие базы на актуальную с остатками и архивную с доступом только для определенных людей и ежедневной синхронизацией.
(34) Да, функции и процедуры находятся в модуле объекта, без проблем. Создаете новый элемент справочника с настройками, в регламенте создаете экземпляр обработки, скармливаете ей этот элемент, устанавливаете дату либо же она автоматом, если в настройках была указана относительная и вызываете соответствующую функцию. Напишу между делом пример использования обработки из регламентного задания.
(35)
Внешние обработки могут подключаться к системе и выполняться по-расписанию. Вы не используете данный функционал БСП?
(36) Нет, не реализовывал такой вариант, при наличии времени посмотрю.
Писал коллегам как-то лет сто назад:
————————
На всякий случай хочу рассказать, как за пять минут превратить внешнюю обычную обработку в подключаемое регламентное задание для систем на базе БСП 2.х. (все наши решения, основанные на бухгалтерии 3.х).
1. Код обработки должен быть в модуле обработки, а не в ее форме.
2. Нужно создать парочку процедур:
Показать
(38) Спасибо, при наличии времени думаю сделать, основное время работаю с нетиповой конфигой, с БСП редко имею дело последнее время.
(38)Извините за глупые вопросы. Я не вижу как это должно лечь в регламентные задания и в какой момент это должно произойти. Я вижу внешнюю обработку в которой описана команда вызова серверного метода. Это стандартная технология подключения внешних обработок в БСП. Не могли бы вы объяснить подробнее причем здесь регламентные задания, если вам не сложно.
(40) всякую подключенную внешнюю обработку можно настротть выполняться по расписанию — это стандартный механизм БСП. Настраивается все в справочнике внешних обработок. Могу за мзду показать как, если до сих пор не ясно.
(40) Я имел в виду создание нового регламентного в конфигураторе, а через БСП я не рассматривал.
(41) ну не всякую, не вводите слабые умы в заблуждение…
(41)
БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному
(40)Можно без мзды.
Вот статья в помощь
(41)Понятно. Я не понял просто, Написано вот как добавить обработку в регламентные задания. А код приведен регистрации обработки. Так бы и написали — Можно добавить обработку с вызовом серверного метода и зарегистрировать ее как регламентное задание штатными средствами БСП.
(45) Мы покажем что у нас есть и посмотрим что ты можешь ©заказчики
Удачи в продвижении.
(43) а какую нельзя?
(44)
Без мзды я уже все написал )))
Версия 11.4.35:
модальные окна заменены на блокирующие;
реализована возможность выгрузки результата сравнения в файл на клиенте.
Вот о чем я мечтал давненько, но руки так и не дошли. А то некоторое количество удаленных БД в тьму-таракани и некоторых случаев сбоев обмена данными.
К сожалению проверить данную обработку смогу не скоро. Поделюсь своими мыслями о функционале. Очень интересны шаблоны проверки баз с идентичными конфигурациями. Обычно самое важное в данных это бухгалтерские регистры и регистры накопления. Сравнивать по записям накладно и долго, поэтому можно организовать сравнение сверху-вниз. 1 этап — остатки на начало каждого месяца и помесячные обороты (за заданный период). Потом, при необходимости, по неделям, по дням, по записям. По измерениям.
То есть предыдущие периоды сравнивать для контроля, а последний год (или квартал) с максимальной детализацией.
Вот как-то так.
(50) интересная идея, подумаю на досуге, что-то вроде справочника Сценарии сравнения, каждый элемент которого включает список настроек сравнения.
(50) лучше обороты сравнить за периоды, если есть разница — найти период с нестыковкой, потом уже по нему детализироваться. вываливая только разницу (могли контрагента поменять в базе А, а в базу Б он не приехал — самая частая причина нестыковок, а могли документ распровести или он не приехал по какой-то причине)
(51) в принципе со сценариями и разворотом детализации вполне себе продукт получается за денежку. Автоотправку на почту прикрутить — и за 2к выставить.
(52) целей заработать нет, но идея стоящая. Я когда-то в одной компании работал, там 8 юрлиц было и даже конфиги не все одинаковые, а они друг другу комиссионный товар продавали, хлебнул горя, тогда-то и начала зарождаться идея о создании гибкого инструмента для сравнения чего угодно. Сейчас у меня баз немного, но сценарность и тут бы пригодилась. Попытка не пытка же ).
(53) мы в свое время базу написали, там SQL-запросики всю разность давали.
Версия 12.0.37
заголовок устанавливается при открытии из файла или элемента справочника, вручную не изменяется;
справочник хранения настроек НастройкиКонсолиСравненияДанных переименован в ВС_ОперацииСравненияДанных для унификации с конфигурацией Сценарное сравнение данных;
реализована возможность заполнения на основании элемента справочника ВС_ОперацииСравненияДанных при открытии (параметр ОперацияСравненияДанных);
при сохранении вместо открытия формы выбора можно обновить элемент справочника, из которого была заполнена консоль.
Версия 12.1.38
реализована возможность указания правой границы относительного периода (например, первые 6 месяцев из последних 1 лет, первые 1 день из последних 2 дней, т.е. вчера).
Версия 12.2.39
пересчет значения относительного периода перенесен в модуль объекта, вызывается при изменении реквизитов формы и в процедуре сравнения данных (перед программным вызовом процедуры СравнитьДанныеНаСервере() необходимо либо рассчитать и установить границы периода либо вызвать процедуру ОбновитьДанныеПериода() для автоматического расчета);
перед закрытием выводится запрос на обновление связанного элемента справочника ВС_ОперацииСравненияДанных;
в произвольном коде условий вывода строк в таблицу расхождений обращение к имени реквизита теперь производится по имени СтрокаТР.<Имя реквизита>;
исправлена ошибка, из-за которой не отрабатывал произвольный код обработки ключа в базах 1С 8.
Актуальная инструкция теперь всегда доступна поэтой ссылке .
(50)
https://infostart.ru/public/1109393/ .
(54)
Реализовал сценарное сравнение данных:
Версия 12.2.41
доработаны пиктограммы активных реляционных операций;
добавлена команда скачивания последней версии обработки с сайта автора;
для источника типа Таблица номер первой строки нужно указывать в соответствующем реквизите;
исправлена ошибка, из-за которой не контролировалось заполнение некоторых реквизитов для источников типа Таблица.
Версия 12.2.42
исправлена ошибка, из-за которой в запросе к внешней базе 1С 8 колонку нельзя было назвать Количество;
на интерфейсе формы команды перехода к web-страницам сгруппированы в подменю Поддержка.
Версия 13.0.43
реализовано получение данных из файловых информационных баз 1С 7.7 через простые запросы.
Версия 14.0.44
реализовано получение данных из файлов формата DOC (Microsoft Word);
реализована возможность указания конкретного номера книги при получении данных из файла формата XLS;
реализована возможность загрузки файлов с клиентского ПК (тем не менее, необходимое для чтения ПО должно быть установлено на сервере, например, Microsoft Office, т.к. обработка файлов производится на сервере).
Версия 14.1.45:
реализована возможность отключения условий вывода и запрета вывода строк без удаления строк табличной части;
расширен список возможных значений версии платформы 1С 8 (используется для получения ProgID COM-объекта при подключении к внешней базе);
реализован вывод предупреждения, если число колонок в файле XLS меньше указанного в настройках для ключа или реквизитов;
реализован вывод предупреждения, если число колонок в выборке 1С 8 / SQL меньше указанного числа столбцов в ключе;
исправлена ошибка, из-за которой при ключе из трех столбцов и некоторых вариантах обработки ключа колонки могли расположиться в некорректной последовательности.
Версия 15.0.46:
реализована возможность получения данных из строки JSON;
после открытия операции из справочника или файла таблица расхождений очищается;
доработан интерфейс.
Добрый вечер.
В режиме совместимости 8.2.13 почти завелась с пол пинка.
Предлагаю рассмотреть вариант заменить новые платформенные строковые функции СтрНайти и прочее на функции из БСП модуля СтроковыеФункции*, это позволит иметь совместимость между платформами.
Так же у меня по каким то причинам неверно заполнялись реквизиты при сравнении двух баз через COM, все данные были записаны как COMОбъект, особо ночью разбираться не стал, вставил заглушку в процедуре СравнитьДанныеНаСервере в виде ЗначениеИзСтрокиВнутр(ПодключениеБ.ЗначениеВСтрокуВнутр(ТЗ_Б_Сгруппированная)) — вроде сравнило корректно.
(66) Добрый день. Обработка должна работать в любой конфигурации, в т.ч. нетиповой, поэтому про БСП она ничего не должна знать, но я доработаю для 8.2 по возможности.
По ошибке: хотелось бы попробовать воспроизвести у себя, напишите в личку подробности источников данных, может, конфигурации можете предоставить, я бы поэкспериментировал.
(66)
При получении данных из внешней информационной базы 1С 8 необходимо явно преобразовать все ссылки к простым типам, как правило, к строкам через ПРЕДСТАВЛЕНИЕ(), ВЫРАЗИТЬ(… КАК …) или через явное получение конкретного реквизита ссылки, который обычно используется как представление ссылок данного типа. Иначе в текущей базе ссылка никак превратится в представление, как это происходит со ссылками, для которых текущая база является родной, более того, ссылки из внешней базы будут отображаться как «COMОбъект», что никак не поможет при анализе расхождений. Преобразование ЗначениеИзСтрокиВнутр(ПодключениеБ.ЗначениеВСтрокуВнутр( помогло в данном случае получить преставления, но я рекомендую приводить ссылки к простым типам в запросе.
Пример:
вместо ссылок
ДокументПриходТовары.Ссылка,
ДокументПриходТовары.Товар
нужно использовать их представления, которые можно получить, например, так:
ПРЕДСТАВЛЕНИЕ(ДокументПриходТовары.Ссылка),
ДокументПриходТовары.Товар.Код
Это что касается реквизитов. В случаях с ключами все так же, за исключением ситуации, когда из ссылки извлекается GUID, тогда ссылку не нужно преобразовывать в простой тип.
(66)
К сообщению прикреплена обработки версии 15.0.46.2 для платформы 8.2 (тестировал на 8.2.19.130).
Версия 15.0.47:
MrGrey за выявление ошибки.
исправлена ошибка, из-за которой не обновлялись связанные элементы справочника Операции сравнения данных.
Спасибо пользователю
Добрый день!
https://infostart.ru/public/711302/
Заинтересовал вариант сравнения по oData:
Планируете расширять функционал?
По ком как обычно не взлетело. Сервер 64-битный. Ни на 32-битном, ни на 64-битном клиенте класс не зарегистрирован. Регистрацию 64-битной компоненты делал.
(71) Добрый день. Да, есть планы, но все зависит от наличия свободного времени.
По oData никогда не пробовал, интересная тема.
(72) Ну тут обычные танцы с бубном каждый раз приходится проходить, чтобы COM заработал. Ссылки на рецепты не стану приводить, вы их и без меня найдете.
(73) сообщите, если появится время. Пока отложил такую задачу на полку!
(74) единственное, что может решить эту проблему создание ком-коннектора, но это конечно не вариант((
(76) Хорошо.