//////////////////////////////////////////////////////////////////////
/////////////////Первая Таблица////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Проводник = Новый ДиалогВыбораФайла (РежимДиалогаВыбораФайла.Открытие);
Проводник.Заголовок = "Выберите файл";
Если Объект.ФорматФайла = "XLS" Тогда
Фильтр = "Таблица XLS (*.xls)|*.xls";
ИначеЕсли
Объект.ФорматФайла = "XLSX" Тогда
Фильтр = "Таблица XLSX (*.xlsx)|*.xlsx";
Иначе
Возврат;
КонецЕсли;
Проводник.Фильтр = Фильтр;
Оповещение = Новый ОписаниеОповещения ("ПослеВыбораФайла", ЭтотОбъект);
Проводник.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
Если ВыбранныеФайлы = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.ПутьКФайлу = ВыбранныеФайлы[0];
КонецПроцедуры // ПослеВыбораФайла()
&НаКлиенте
Процедура ПрочитатьФайл(Команда)
Объект.ДанныеФайла.Очистить();
Если Объект.ФорматФайла = "XLS" Тогда
ПрочитатьФайл_XLS();
ИначеЕсли Объект.ФорматФайла = "XLSX" Тогда
ПрочитатьФайл_XLSX();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПрочитатьФайл_XLS_НаСервере(АдресДанных)
ТабДок = Новый ТабличныйДокумент;
Данные = ПолучитьИзВременногоХранилища (АдресДанных);
ПутьКФайлуНаСервере = ПолучитьИмяВременногоФайла("xls");
Данные.Записать(ПутьКФайлуНаСервере);
Попытка
ТабДок.Прочитать(ПутьКФайлуНаСервере,СпособЧтенияЗначенийТабличногоДокумента.Значение);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось прочитать указанный файл по причине: " + ОписаниеОшибки() ;
Сообщение.Сообщить();
Возврат;
КонецПопытки;
КоличествоСтрок = ТабДок.ВысотаТаблицы;
Для НомерСтроки = 2 По КоличествоСтрок Цикл
СтрокаДанных = Объект.ДанныеФайла.Добавить();
СтрокаДанных.Договор = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст;
СтрокаДанных.Сумма = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст;
КонецЦикла;
КонецПроцедуры // ПрочитатьФайл_XLS_НаСервере()
&НаКлиенте
Процедура ПрочитатьФайл_XLS()
ДанныеФайла = Новый ДвоичныеДанные(Объект.ПутьКФайлу);
АдресДанных = ПоместитьВоВременноеХранилище(ДанныеФайла);
ПрочитатьФайл_XLS_НаСервере(АдресДанных);
КонецПроцедуры // ПрочитатьФайл_XLS()
&НаСервере
Процедура ПрочитатьФайл_XLSX_НаСервере(АдресДанных)
ТабДок = Новый ТабличныйДокумент;
Данные = ПолучитьИзВременногоХранилища (АдресДанных);
ПутьКФайлуНаСервере = ПолучитьИмяВременногоФайла("xlsx");
Данные.Записать(ПутьКФайлуНаСервере);
Попытка
ТабДок.Прочитать(ПутьКФайлуНаСервере,СпособЧтенияЗначенийТабличногоДокумента.Значение);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось прочитать указанный файл по причине: " + ОписаниеОшибки() ;
Сообщение.Сообщить();
Возврат;
КонецПопытки;
КоличествоСтрок = ТабДок.ВысотаТаблицы;
Для НомерСтроки = 2 По КоличествоСтрок Цикл
СтрокаДанных = Объект.ДанныеФайла.Добавить();
СтрокаДанных.Договор = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст;
СтрокаДанных.Сумма = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст;
КонецЦикла;
КонецПроцедуры // ПрочитатьФайл_XLSX_НаСервере()
&НаКлиенте
Процедура ПрочитатьФайл_XLSX()
ДанныеФайла = Новый ДвоичныеДанные(Объект.ПутьКФайлу);
АдресДанных = ПоместитьВоВременноеХранилище(ДанныеФайла);
ПрочитатьФайл_XLSX_НаСервере(АдресДанных);
КонецПроцедуры // ПрочитатьФайл_XLSX()
//////////////////////////////////////////////////////////
//Вторая Таблица
/////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
&НаКлиенте
Процедура ПутьКФайлу2НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Проводник = Новый ДиалогВыбораФайла (РежимДиалогаВыбораФайла.Открытие);
Проводник.Заголовок = "Выберите файл";
Если Объект.ФорматФайла2 = "XLS" Тогда
Фильтр = "Таблица XLS (*.xls)|*.xls";
ИначеЕсли
Объект.ФорматФайла2 = "XLSX" Тогда
Фильтр = "Таблица XLSX (*.xlsx)|*.xlsx";
Иначе
Возврат;
КонецЕсли;
Проводник.Фильтр = Фильтр;
Оповещение = Новый ОписаниеОповещения ("ПослеВыбораФайла2", ЭтотОбъект);
Проводник.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораФайла2(ВыбранныеФайлы2, ДополнительныеПараметры) Экспорт
Если ВыбранныеФайлы2 = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.ПутьКФайлу2 = ВыбранныеФайлы2[0];
КонецПроцедуры // ПослеВыбораФайла()
&НаКлиенте
Процедура ПрочитатьФайл2(Команда)
Объект.ДанныеФайла2.Очистить();
Если Объект.ФорматФайла2 = "XLS" Тогда
ПрочитатьФайл2_XLS();
ИначеЕсли Объект.ФорматФайла2 = "XLSX" Тогда
ПрочитатьФайл2_XLSX();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПрочитатьФайл2_XLS_НаСервере(АдресДанных2)
ТабДок = Новый ТабличныйДокумент;
Данные = ПолучитьИзВременногоХранилища (АдресДанных2);
ПутьКФайлу2НаСервере = ПолучитьИмяВременногоФайла("xls");
Данные.Записать(ПутьКФайлу2НаСервере);
Попытка
ТабДок.Прочитать(ПутьКФайлу2НаСервере,СпособЧтенияЗначенийТабличногоДокумента.Значение);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось прочитать указанный файл по причине: " + ОписаниеОшибки() ;
Сообщение.Сообщить();
Возврат;
КонецПопытки;
КоличествоСтрок = ТабДок.ВысотаТаблицы;
Для НомерСтроки = 2 По КоличествоСтрок Цикл
СтрокаДанных = Объект.ДанныеФайла2.Добавить();
СтрокаДанных.Договор = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст;
СтрокаДанных.Сумма = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст;
КонецЦикла;
КонецПроцедуры // ПрочитатьФайл2_XLS_НаСервере()
&НаКлиенте
Процедура ПрочитатьФайл2_XLS()
ДанныеФайла2 = Новый ДвоичныеДанные(Объект.ПутьКФайлу2);
АдресДанных2 = ПоместитьВоВременноеХранилище(ДанныеФайла2);
ПрочитатьФайл2_XLS_НаСервере(АдресДанных2);
КонецПроцедуры // ПрочитатьФайл2_XLS()
&НаСервере
Процедура ПрочитатьФайл2_XLSX_НаСервере(АдресДанных2)
ТабДок = Новый ТабличныйДокумент;
Данные = ПолучитьИзВременногоХранилища (АдресДанных2);
ПутьКФайлу2НаСервере = ПолучитьИмяВременногоФайла("xlsx");
Данные.Записать(ПутьКФайлу2НаСервере);
Попытка
ТабДок.Прочитать(ПутьКФайлу2НаСервере,СпособЧтенияЗначенийТабличногоДокумента.Значение);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось прочитать указанный файл по причине: " + ОписаниеОшибки() ;
Сообщение.Сообщить();
Возврат;
КонецПопытки;
КоличествоСтрок = ТабДок.ВысотаТаблицы;
Для НомерСтроки = 2 По КоличествоСтрок Цикл
СтрокаДанных = Объект.ДанныеФайла2.Добавить();
СтрокаДанных.Договор = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст;
СтрокаДанных.Сумма = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст;
КонецЦикла;
КонецПроцедуры // ПрочитатьФайл2_XLSX_НаСервере()
&НаКлиенте
Процедура ПрочитатьФайл2_XLSX()
ДанныеФайла2 = Новый ДвоичныеДанные(Объект.ПутьКФайлу2);
АдресДанных2 = ПоместитьВоВременноеХранилище(ДанныеФайла2);
ПрочитатьФайл2_XLSX_НаСервере(АдресДанных2);
КонецПроцедуры // ПрочитатьФайл_XLSX()
///////////////////////////////////////////////////////////////////////////////////
////////////////////////////////Сравнение и вывод разницы v1///////////////////////
//////////////////////////////////////////////////////////////////////////////////
&НаСервере
Процедура ВывестиРазницуНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Таблица1.Договор КАК Договор,
| Таблица1.Сумма КАК Сумма
|ПОМЕСТИТЬ вт_Таб1
|ИЗ
| &Таблица1 КАК Таблица1
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Таблица2.Договор КАК Договор,
| Таблица2.Сумма КАК Сумма
|ПОМЕСТИТЬ вт_Таб2
|ИЗ
| &Таблица2 КАК Таблица2
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| вт_Таб1.Договор КАК Договор,
| вт_Таб1.Сумма КАК Сумма1,
| вт_Таб2.Сумма КАК Сумма2
|ИЗ
| вт_Таб1 КАК вт_Таб1
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ вт_Таб2 КАК вт_Таб2
| ПО вт_Таб1.Договор = вт_Таб2.Договор
|ГДЕ
| вт_Таб1.Сумма <> вт_Таб2.Сумма";
Запрос.УстановитьПараметр("Таблица1", Объект.ДанныйФайла.Выгрузить());
Запрос.УстановитьПараметр("Таблица2", Объект.ДанныеФайла2.Выгрузить());
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.ДанныеИтог.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВывестиРазницу(Команда)
ВывестиРазницуНаСервере();
КонецПроцедуры