// Клиентский модуль для COM-взаимодействия с Excel // Содержит только COM-вызовы &НаКлиенте Функция ОткрытьФайлExcel(ПутьКФайлу) Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.Visible = Ложь; Excel.DisplayAlerts = Ложь; Книга = Excel.Workbooks.Open(ПутьКФайлу); Возврат Новый Структура("Книга, Excel", Книга, Excel); Исключение Сообщить("Не удалось открыть Excel: " + ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; КонецФункции &НаКлиенте Процедура ЗакрытьExcel(КонтекстExcel, ВременныйФайл) Если КонтекстExcel = Неопределено Тогда Возврат; КонецЕсли; Попытка КонтекстExcel.Книга.Close(Ложь); КонтекстExcel.Excel.Quit(); Исключение КонецПопытки; Если ЗначениеЗаполнено(ВременныйФайл) Тогда УдалитьФайлы(ВременныйФайл); КонецЕсли; КонецПроцедуры &НаКлиенте Функция ПрочитатьЯчейкуЧисло(Лист, Строка, Колонка, КонтекстОшибки) Попытка Значение = Лист.Cells(Строка, Колонка).Value; Если Значение = Неопределено ИЛИ Значение = "" Тогда Возврат 0; КонецЕсли; Возврат Число(Значение); Исключение Сообщить("Ошибка чтения числа: " + КонтекстОшибки + " | строка " + Строка + " колонка " + Колонка); Возврат 0; КонецПопытки; КонецФункции &НаКлиенте Функция ПрочитатьЯчейкуСтрока(Лист, Строка, Колонка) Попытка Значение = Лист.Cells(Строка, Колонка).Value; Если Значение = Неопределено Тогда Возврат ""; КонецЕсли; Возврат СокрЛП("" + Значение); Исключение Возврат ""; КонецПопытки; КонецФункции &НаКлиенте Функция ИзвлечьИмяЛистаИзФормулы(Формула) Если Формула = Неопределено Тогда Возврат ""; КонецЕсли; Текст = СокрЛП("" + Формула); Если Не СтрНачинаетсяС(Текст, "='") Тогда Возврат ""; КонецЕсли; Поз = СтрНайти(Текст, "'!"); Если Поз = 0 Тогда Возврат ""; КонецЕсли; Возврат Сред(Текст, 3, Поз - 3); КонецФункции &НаКлиенте Функция НайтиЛист(Книга, ИмяЛиста) Для Каждого Лист Из Книга.Sheets Цикл Если ВРег(Лист.Name) = ВРег(ИмяЛиста) Тогда Возврат Лист; КонецЕсли; КонецЦикла; Возврат Неопределено; КонецФункции