"можно через АДО только смысла нет - все равно цикл рекордсета придется перебирать<br>попробуй этот способ надеюсь разберешься ((((<br><br>Процедура Кнопка1Нажатие(Элемент)<br> ПутьКФайлу = "C:\Files\Обмен1с\Nomenklatura.xls";<br>попытка<br> Ексель = Новый COMОбъект("Excel.Application") ;<br>исключение<br> Сообщить(ОписаниеОшибки()); <br> Сообщить("Не удалось инициализировать Excel"); <br> Возврат; <br>КонецПопытки; <br>//..................................................<br>попытка <br> ФайлЕксель = Ексель.Workbooks.Open(ПутьКФайлу); <br> //..............................................<br>КС = Новый КвалификаторыСтроки(250);<br>Массив = Новый Массив;<br>Массив.Добавить(Тип("Строка"));<br>ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);<br> //----будем считать что все данные в Эксель типа Строка---<br> ТЗ =Новый ТаблицаЗначений;<br> ТЗ.Колонки.Добавить("Колонка1",ОписаниеТиповС);<br> ТЗ.Колонки.Добавить("Колонка2",ОписаниеТиповС);<br> ТЗ.Колонки.Добавить("Колонка3",ОписаниеТиповС);<br> ТЗ.Колонки.Добавить("Колонка4",ОписаниеТиповС);<br> //-----и сравнивать их будем тоже со строкой--------------------<br> ТЗДокументы =Новый ТаблицаЗначений;<br> ТЗДокументы.Колонки.Добавить("Номер",ОписаниеТиповС);<br> ТЗДокументы.Колонки.Добавить("Организация",ОписаниеТиповС);<br> ТЗДокументы.Колонки.Добавить("Контрагент",ОписаниеТиповС);<br> ТЗДокументы.Колонки.Добавить("Склад",ОписаниеТиповС);<br><br><br>Колонки =1;<br>Строки =2; //заголовок не берем<br>КоличествоСтраниц = 1;<br>ТекНомерЛиста =1;<br><br> //сколько непустых строк<br> ВсегоКоличестовСтрок = Ексель.Sheets(ТекНомерЛиста).UsedRange.row + Ексель.Sheets(ТекНомерЛиста).UsedRange.Rows.Count - 1;<br> //сколько непустых колонок<br> //ВсегоКоличестовКолонок = Ексель.Sheets(ТекНомер).UsedRange.Column + Ексель.Sheets(ТекНомер).UsedRange.Columns.Count - 1<br> <br> для строки = 2 по ВсегоКоличестовСтрок цикл<br> //или<br> //Пока Ексель.Sheets(ТекНомер).Cells(Строки,1).Value <> Неопределено Цикл<br> НовСтрока =ТЗ.Добавить();<br> НовСтрока.Колонка1 = Ексель.Sheets(ТекНомерЛиста).Cells(Строки,Колонки ).Value;<br> НовСтрока.Колонка2 = Ексель.Sheets(ТекНомерЛиста).Cells(Строки,Колонки +1).Value;<br> НовСтрока.Колонка3 = Ексель.Sheets(ТекНомерЛиста).Cells(Строки,Колонки +2).Value;<br> НовСтрока.Колонка4 = Ексель.Sheets(ТекНомерЛиста).Cells(Строки,Колонки +3).Value;<br><br> КонецЦикла;<br> //-------------------------------------------------------------------<br> МенеджерВТ =новый МенеджерВременныхТаблиц;<br> Запрос =Новый Запрос;<br> Запрос.МенеджерВременныхТаблиц =МенеджерВТ;<br> Запрос.Текст = "ВЫБРАТЬ Колонка1,колонка2,колонка3,колонка4<br> | ПОМЕСТИТЬ ВременнаяТаблицаЭксель <br> | ИЗ<br> | &ВнешнийИсточник как ВнешнийИсточник <br> |";<br> Запрос.УстановитьПараметр("ВнешнийИсточник",ТЗ);<br> Запрос.Выполнить();<br> <br> //----приводим все данные документов к строке т.к в запросе это сделать нельзя-------- <br> Запрос.Текст ="ВЫБРАТЬ<br> | Представление(ПоступлениеТоваровУслуг.Номер) как Номер ,<br> | Представление(ПоступлениеТоваровУслуг.Организация) как Организация, <br> | Представление(ПоступлениеТоваровУслуг.Контрагент) как Контрагент ,<br> | Представление(ПоступлениеТоваровУслуг.Склад) как Склад<br> | ИЗ<br> | Документ.ПоступлениеТоваровУслуг как ПоступлениеТоваровУслуг<br> |";<br> выборка = Запрос.Выполнить().Выбрать();<br> Пока выборка.Следующий() цикл<br> НовСтрока= ТЗДокументы.Добавить();<br> НовСтрока.Номер =Строка(выборка.Номер);<br> НовСтрока.Организация =Строка(выборка.Организация);<br> НовСтрока.Контрагент =Строка(выборка.Контрагент);<br> НовСтрока.Склад =Строка(выборка.Склад);<br> КонецЦикла;<br> <br> //------------------------------------------------------------- <br> Запрос.Текст = "ВЫБРАТЬ Номер,Организация,Контрагент,Склад<br> | ПОМЕСТИТЬ ВременнаяТаблицаДокументы <br> | ИЗ<br> | &ВнешнийИсточникДокументы как ВнешнийИсточникДокументы <br> |";<br> Запрос.УстановитьПараметр("ВнешнийИсточникДокументы",ТЗДокументы);<br> Запрос.Выполнить();<br> <br> //----соедиянем таблицы там где ВТ.Колонка1 будет NULL значит этих документов нет в Эксель--<br> //--запрос можно перевернуть и проверить что есть в Эксель и чего нет в 1 с<br> //| ИЗ ВременнаяТаблицаЭксель как ВТ<br> //|ЛЕВОЕ СОЕДИНЕНИЕ<br> //| ВременнаяТаблицаДокументы как ВТД<br> //<br> Запрос.Текст ="ВЫБРАТЬ <br> |ВТД.Номер,<br> |ВТД.Организация,<br> |ВТД.Контрагент, <br> |ВТД.Склад ,<br> | ВТ.Колонка1,<br> | ВТ.Колонка2,<br> | ВТ.Колонка3 ,<br> | ВТ.Колонка4<br> | ИЗ ВременнаяТаблицаДокументы как ВТД<br> |ЛЕВОЕ СОЕДИНЕНИЕ<br> | ВременнаяТаблицаЭксель как ВТ<br> | ПО <br> | ВТД.НОМЕР = ВТ.Колонка1 И<br> | ВТД.Организация = ВТ.Колонка2 И<br> | ВТД.Контрагент = ВТ.Колонка3 И<br> | ВТД.Склад = ВТ.Колонка4 <br> | ГДЕ ВТ.Колонка1 ЕСТЬ NULL<br> |<br> |";<br> <br> //--------------------------------------------------------------------<br> <br> Список= Запрос.Выполнить().Выгрузить();<br> Список.ВыбратьСтроку();<br> //Пока выборка.Следующий() цикл<br> // Сообщить(выборка.Организация) ;<br> //конецЦикла;<br>исключение<br>Сообщить(ОписаниеОшибки()); <br>Ексель.Application.Quit();<br>конецПопытки;<br>КонецПроцедуры<br>"