При первом открытии обработки видим надпись Файл не загружен
Загрузим вот такой файл Excel для примера
Теперь при открытии обработки видим, что файл загружали и дату последней загрузки.
В дальнейшем при открытии обработки можно сразу жать кнопку Выполнить.
Сделал это с помощью выгрузки ТаблицыЗначений в файл и последующего использования этого файла.
По нажатию кнопки обновить:
Если Не ЗначениеЗаполнено(ПутьКФайлу) Тогда
Сообщить("Выберите файл для загрузки!");
Возврат;
КонецЕсли;
Док = ПолучитьCOMОбъект(ПутьКФайлу);
НомерЛиста = 1;
ВсегоСтрок = Док.Sheets.Item(НомерЛиста).UsedRange.Rows.Count();
КЧ = Новый КвалификаторыЧисла(10,0);
КС = Новый КвалификаторыСтроки(200);
Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
Массив.Очистить();
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
ТЗЕксель = Новый ТаблицаЗначений;
ТЗЕксель.Колонки.Добавить("Наименование",ОписаниеТиповС);
ТЗЕксель.Колонки.Добавить("Количество",ОписаниеТиповЧ);
Для сч = 1 По ВсегоСтрок Цикл
Наименование =СокрЛП(Док.Sheets(НомерЛиста).Cells(сч, 1).Value);
Количество =СокрЛП(Док.Sheets(НомерЛиста).Cells(сч, 2).Value);
НовСтр = ТЗЕксель.Добавить();
НовСтр.Наименование = Наименование;
НовСтр.Количество = Количество;
КонецЦикла;
УдалитьФайлы(ВремХранилище, "*.sel");
ИмяФайла = СтрЗаменить(ТекущаяДата(),":",".");
ЗначениеВФайл(ВремХранилище+ИмяФайла+".sel",ТЗЕксель);
ЭлементыФормы.НадписьФайл.Заголовок = "Файл Excel последний раз обновлялся: " + ИмяФайла;
При открытии:
ВремХранилище = КаталогВременныхФайлов() + "excel\";
Файл = Новый Файл(ВремХранилище);
Если Не Файл.Существует() Тогда
СоздатьКаталог(ВремХранилище);
Иначе
МассивНайденных = НайтиФайлы(ВремХранилище, "*.sel");
Если МассивНайденных.Количество() > 0 Тогда
ЭлементыФормы.НадписьФайл.Заголовок = "Файл Excel последний раз обновлялся: " + МассивНайденных[0].ИмяБезРасширения;
ТЗЕксель = ЗначениеИзФайла(ВремХранилище + МассивНайденных[0].Имя);
Иначе
ЭлементыФормы.НадписьФайл.Заголовок = "Файл Excel не загружали!";
КонецЕсли;
КонецЕсли;
По нажатию кнопки Выполнить:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТЗЕксель.Наименование,
| ТЗЕксель.Количество
|ПОМЕСТИТЬ ВТ
|ИЗ
| &ТЗЕксель КАК ТЗЕксель
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ.Наименование,
| СУММА(ВТ.Количество) КАК Количество
|ИЗ
| ВТ КАК ВТ
|
|СГРУППИРОВАТЬ ПО
| ВТ.Наименование";
Запрос.УстановитьПараметр("ТЗЕксель",ТЗЕксель);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование +" = "+ Выборка.Количество);
КонецЦикла;