1. Masterics 11.01.19 10:34 Сейчас в теме

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

Добрый день! Подскажите начинающему программисту, может кто сталкивался лично... У меня есть два Эксель файла, оба они состоят из двух колонок, в первой колонке Характеристика оборудования (строка), во второй - значение характеристики (или строка, или число). Мне нужно сравнить эти два файла и различия выделить цветом. Вопрос в том, как это сделать наиболее оптимально. Пока мысли только в сторону того,чтобы выгрузить оба файла в 2 таблицы значений и сравнивать их между собой. Может кто-нибудь подскажет более красивый способ?
Ответы
Избранное Подписка Сортировка: Древо
2. kuzev 40 11.01.19 10:44 Сейчас в теме
(1) если на один раз, то ВПР()
3. dandykry 3 11.01.19 10:52 Сейчас в теме
(1) если тупо сравнить 2 файла то http://prntscr.com/m5plc7 самый простой
6. Masterics 11.01.19 11:11 Сейчас в теме
(3) Так не подойдет, потому что нужно будет эту возможность встроить в документ
4. PhoenixAOD 56 11.01.19 10:52 Сейчас в теме
(1)если это нужно делать постоянно, то выгружаешь их в две ТЗ, потом эти ТЗ сравниваешь запросом и все.
5. Masterics 11.01.19 11:06 Сейчас в теме
Объясню как будет происходить сравнивание. Изначально есть файл Эксель с согласованными характеристиками поставляемого оборудования. Но в процессе установки оборудования изменяются какие-либо характеристики этого оборудования, то есть грубо говоря насос с одним давлением меняют на насос с другим давлением. В итоге по завершению поставки, установки появляется второй файл Эксель, как бы итоговый, который содержит данные что поставили в итоге. Вот их между собой нужно сравнить. Вобще, этот второй файл, он заполняется динамически, то есть в процессе установки оборудования в него вносят корректировки... Просто сам факт сравнения планировалось делать в конце, когда проект поставки завершен
7. dandykry 3 11.01.19 11:21 Сейчас в теме
(5) Самый лучший способ, на мой взгляд, использовать документы.
Если взять типовые конфигурации, то сильно похоже на Заказ клиента - Реализация.
Заказать можно крыло от боинга, а получить шаурму. По информации Заказно - Реализовано по заказу как раз можно собрать нужную информацию.
На крайний случай создать отдельные документы с табличными частями. или регистр сведений (может накопления, если отгрузка может происходить частями)
С табличными файлами выглядит ненадежно.
8. user623969_dusa 11.01.19 11:59 Сейчас в теме
(1) в одном из экселей написать макрос выделения цветом
9. yadexter1986 367 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 13.01.19 00:37 Сейчас в теме
В самом Excel есть куча процедур(формул) сравнения таких файлов с выделением или простановкой отметки в отдельный столбец об измененной записи.
Причем работают процедуры в Excel намного быстрее, чем если переносить это в 1С и сравнивать.
Погуглите "сравнение файлов/данных Excel" и попробуйте. Это самое оптимальное.
11. Masterics 13.01.19 11:16 Сейчас в теме
(10) Дело в том, что мне надо чтобы пользователь в 1с нажимал кнопку "Сравнить файлы" и происходило сравнение и в зависимости от результата менялся бы статус документа, поэтому и нужно, как мне кажется, делать это в 1с, а не в Excel.
14. pavel06 13.01.19 20:52 Сейчас в теме
(11)
и происходило сравнение и в зависимости от результата менялся бы статус документа


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

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


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

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


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

Вакансии

Программист 1С
Москва
Полный день

Программист 1С
Видное
Полный день

Программист 1С
Москва
зарплата до 120 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 100 000 руб. до 170 000 руб.
Полный день