Мне часто приходится заниматься переносом данных из одной базы в другую. После переноса неизбежно возникает задача сравнить две базы друг с другом, выявить возможные ошибки. Для сравнения, как правило, формируются подобные отчеты в двух базах. Эти отчеты потом сравниваются друг с другом. Бывает так, что формат отчетов не всегда совпадает. У них может различаться структура отчета, использоваться разная сортировка, выводиться разные показатели. Среди коллег преобладает подход, который можно свести к созданию одинаковых отчетов в 1с, чтобы их было легче сравнивать друг с другом. Есть еще варианты, связанные с прямым подключением по com соединению ко второй базе, и получением данных с его помощью. Это все работает, но у этого всего есть один существенный недостаток,- это очень ВРЕМЯЗАТРАТНО.
Я предлагаю вам посмотреть на то, как эту задачу решает «продвинутый» бухгалтер, менеджер, расчетчик. Решают они такого рода задачи при помощи старого доброго Экселя. В качестве примера, мы возьмем сравнение баз «ЗУП» редакции 25 и 31 после переноса данных. Точно так же сравниваются разного рода оборотки, отчеты о продажах и прочее. Итак, мы начисляем зарплату в двух базах и сравниваем между собой расчетную ведомость версии 2.5 и Анализ зарплаты по сотрудникам (помесячно) версии 3.1 за один и тот же месяц. С первого взгляда понятно, что у этих отчетов разный порядок сортировки и структуры.
Это затрудняет их сравнение друг с другом. Итак, мы сформировали в двух базах эти отчеты и сохранили их как эксель файлы. Далее, мы можем создать новый файл эксель, а можем и на одном из сохраненных файлов, добавить лист с отчетом из другой базы.
В третьем листе мы будем выводить результаты сравнения.
Нам будет удобно пронумеровать строки исходных отчетов. В этом нам поможет функция
=СТРОКА(RC[-1])
В качестве аргумента этой функции мы просто укажем любую ячейку из этой строки.
Добавляем этот столбец справа, в каждом исходном отчете и «протягиваем» формулу вниз. Строго говоря, мы можем обойтись и без этого, но так мы будем видеть результат сравнения более наглядно.
Далее мы копируем первый столбец с сотрудникам на лист «Сравнение». Нам нужны будут номера строк на исходных отчетах, где находится нужный сотрудник. Поможет нам его найти функция
=ВПР(<Ячейка значение которой ищем>;<где ищем>;<номер столбца в массиве «где ищем»>;0)
Теперь, когда мы знаем, из какой строки исходного отчета брать нужную цифру, сравнивать две базы становиться гораздо проще. Нам нужно вывести в итоговый лист сравнения нужные значения из исходных отчетов и сравнить их друг с другом. Это можно сделать с помощью функции
=ИНДЕКС(<таблица откуда берем цифры>;<Номер строки>;<Номер столбца в исходной таблице>)
Теперь мы вывели нужные показатели по сотрудникам из разных отчетов и можем их сравнивать друг с другом.
По правде говоря, многие используют только функцию ВПР, но так, на мой взгляд, нагляднее. Точно так же, можно сравнивать любые подобные отчеты.