Оптимальное сравнение двух файлов Excel

1. Masterics 11.01.19 10:34 Сейчас в теме
Добрый день! Подскажите начинающему программисту, может кто сталкивался лично... У меня есть два Эксель файла, оба они состоят из двух колонок, в первой колонке Характеристика оборудования (строка), во второй - значение характеристики (или строка, или число). Мне нужно сравнить эти два файла и различия выделить цветом. Вопрос в том, как это сделать наиболее оптимально. Пока мысли только в сторону того,чтобы выгрузить оба файла в 2 таблицы значений и сравнивать их между собой. Может кто-нибудь подскажет более красивый способ?
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. kuzev 47 11.01.19 10:44 Сейчас в теме
(1) если на один раз, то ВПР()
+
3. dandykry 9 11.01.19 10:52 Сейчас в теме
(1) если тупо сравнить 2 файла то http://prntscr.com/m5plc7 самый простой
+
6. Masterics 11.01.19 11:11 Сейчас в теме
(3) Так не подойдет, потому что нужно будет эту возможность встроить в документ
+
4. PhoenixAOD 62 11.01.19 10:52 Сейчас в теме
(1)если это нужно делать постоянно, то выгружаешь их в две ТЗ, потом эти ТЗ сравниваешь запросом и все.
+
5. Masterics 11.01.19 11:06 Сейчас в теме
Объясню как будет происходить сравнивание. Изначально есть файл Эксель с согласованными характеристиками поставляемого оборудования. Но в процессе установки оборудования изменяются какие-либо характеристики этого оборудования, то есть грубо говоря насос с одним давлением меняют на насос с другим давлением. В итоге по завершению поставки, установки появляется второй файл Эксель, как бы итоговый, который содержит данные что поставили в итоге. Вот их между собой нужно сравнить. Вобще, этот второй файл, он заполняется динамически, то есть в процессе установки оборудования в него вносят корректировки... Просто сам факт сравнения планировалось делать в конце, когда проект поставки завершен
+
7. dandykry 9 11.01.19 11:21 Сейчас в теме
(5) Самый лучший способ, на мой взгляд, использовать документы.
Если взять типовые конфигурации, то сильно похоже на Заказ клиента - Реализация.
Заказать можно крыло от боинга, а получить шаурму. По информации Заказно - Реализовано по заказу как раз можно собрать нужную информацию.
На крайний случай создать отдельные документы с табличными частями. или регистр сведений (может накопления, если отгрузка может происходить частями)
С табличными файлами выглядит ненадежно.
+
8. user623969_dusa 11.01.19 11:59 Сейчас в теме
(1) в одном из экселей написать макрос выделения цветом
+
9. D_e_X_T_e_R 573 11.01.19 14:35 Сейчас в теме
Я выгружал в две ТЗ, а потом соединял в запросе, и добавлял еще одну колонку Соответствие/Несоответствие.
+
12. Masterics 13.01.19 11:18 Сейчас в теме
(9) Это как-то так?

Запрос = Новый Запрос;
Запрос.Текст = "
| ВЫБРАТЬ Колонка1, Колонка2, Колонка3
| ПОМЕСТИТЬ НоваяТЗ
| ИЗ &Таблица1
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ Колонка1, Колонка2, Колонка3
| ИЗ &Таблица2
|
| ;
|
| ВЫБРАТЬ Колонка1, Колонка2, Сумма(Колонка3) ИЗ НоваяТЗ
| СГРУППИРОВАТЬ ПО Колонка1, Колонка2
| ";

Запрос.УстановитьПараметр("Таблица1",Таблица1);
Запрос.УстановитьПараметр("Таблица2",Таблица2);
НоваяТЗ = Запрос.Выполнить().Выгрузить();
+
10. pavel06 2 13.01.19 00:37 Сейчас в теме
В самом Excel есть куча процедур(формул) сравнения таких файлов с выделением или простановкой отметки в отдельный столбец об измененной записи.
Причем работают процедуры в Excel намного быстрее, чем если переносить это в 1С и сравнивать.
Погуглите "сравнение файлов/данных Excel" и попробуйте. Это самое оптимальное.
+
11. Masterics 13.01.19 11:16 Сейчас в теме
(10) Дело в том, что мне надо чтобы пользователь в 1с нажимал кнопку "Сравнить файлы" и происходило сравнение и в зависимости от результата менялся бы статус документа, поэтому и нужно, как мне кажется, делать это в 1с, а не в Excel.
+
14. pavel06 2 13.01.19 20:52 Сейчас в теме
(11)
и происходило сравнение и в зависимости от результата менялся бы статус документа


Вообще все функции Excel можно вызывать и из 1С. Смотря что надо. Вы,вот, не говорите всю задачу до конца. И по последним словам про кнопки, Вам, вроде, совсем необязательно выделять что-то зрительно, а важно автоматическое измение статуса документа, может, если есть несовпаденеие в Excel. Это более простая задача, но все равно, лучше сравнение делать, имхо, в самом Excel и от него отталкиваться.
+
13. D_e_X_T_e_R 573 13.01.19 13:11 Сейчас в теме
(10)Примерно да. Я помещал каждую таблицу во временную, затем делал полным соединением, чтобы сопоставлялись одинаковые поля, после этого в последнем запросе добавлял колонку Соответствие/Несоответствие и с помощью функции ВЫБОР заполнял ее. Это может и не самое оптимальное решение, но для той задачи, что передо мной стояла - оно подошло.
+
16. Masterics 19.01.19 19:46 Сейчас в теме
(13) С запросом я более-менее разобралась... Возник немного другой вопрос. Вот я с помощью запроса получаю различия, функция выполняется &На Сервере, а как потом обратиться опять к строчкам Экселя и расскрасить их?
+
17. D_e_X_T_e_R 573 20.01.19 08:07 Сейчас в теме
(16) Я помещал результат в реквизит с типом табличный документ.

Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Результат.Выгрузить());
Построитель.ВыводитьЗаголовокОтчета = Ложь;
Построитель.Вывести(ТабДокумент);


Результат.Выгрузить() - это как раз результат запроса сравнения.

Затем у меня просто была кнопка, сохранить результат, которая:
&НаКлиенте
Процедура СохранитьРезультат(Команда)
		
	Режим = РежимДиалогаВыбораФайла.Сохранение; 
	ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(Режим); 
	ДиалогСохраненияФайла.ПолноеИмяФайла = ""; 
	Фильтр = "Excel(*.xlsx)|*.xlsx"; // | Excel_2003(*.xls)|*.xls";                 
	ДиалогСохраненияФайла.Фильтр = Фильтр; 
	ДиалогСохраненияФайла.МножественныйВыбор = Ложь; 
	ДиалогСохраненияФайла.Заголовок = "Выберите файл для сохранения";
	
	Если ДиалогСохраненияФайла.Выбрать() Тогда 
		ПутьКФайлу = ДиалогСохраненияФайла.ПолноеИмяФайла; 
	КонецЕсли; 
	
	ТабДокумент.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
		
КонецПроцедуры
Показать


Тут на клиенте попробуйте обработать табличный документ и раскрасить, как нужно. Если нужно, то в личку свою обработку скину, она не является законченной, так как нужно было сделать быстро для сравнения двух конкретных счетов в УПП и ERP.
+
15. meriferi 14.01.19 09:20 Сейчас в теме
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот