Создадим обработку ВыгрузкаВФайл. Добавим реквизиты КаталогСохраненния (строка Неограниченная длина), ТипФайла (строка 50).
Создадим форму обработки (контекстное меню "Форма" нашей обработки -- Добавить -- Готово).
Перенесем на нее ТипФайла (синоним Формат файла). В свойствах элемента ТипФайла на закладке Использование откроем СписокВыбора и добавим значения XLS, PDF, DOCX, TXT.
Далее на вкладке "Основное" свойство Вид выберем "Вид переключателя". А свойство ВидПереключателя - Тумблер.
Создадим команду формы "Выгрузить". Разместим на форме и создадим обработчик &НаКлиенте
В процедуре размещаем следующий код:
&НаКлиенте
Процедура КнопкаВыгрузить(Команда)
Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытия.Каталог = "";
ДиалогОткрытия.МножественныйВыбор = Ложь;
ДиалогОткрытия.Заголовок = "Выберите файл с контрагентами";
Если ДиалогОткрытия.Выбрать() Тогда
ПутьККаталогу = ДиалогОткрытия.Каталог;
КонецЕсли;
Если Прав(ПутьККаталогу,1) <> "\" Тогда
Объект.КаталогСохранения = ПутьККаталогу+"\";
Иначе
Объект.КаталогСохранения = ПутьККаталогу;
КонецЕсли;
//Сформируем уникальное имя файла
ДатаИВремя = СтрЗаменить(ТекущаяДата(),":",".");
ИмяФайла = "Импорт_" + ДатаИВремя;
//Создадим табличный документ
ТабДок = Новый ТабличныйДокумент;
ФорматФайла = Объект.ТипФайла;
//Добавим выбранный каталог к именя файла
ПолноеИмяФайла = Объект.КаталогСохранения + ИмяФайла + "." + ФорматФайла;
// Определим в каком формате будет выгружен документ
Если ФорматФайла = "XLS" Тогда
ЗадатьТип = ТипФайлаТабличногоДокумента.xls;
ИначеЕсли ФорматФайла = "DOCX" Тогда
ЗадатьТип = ТипФайлаТабличногоДокумента.docx;
ИначеЕсли ФорматФайла = "PDF" Тогда
ЗадатьТип = ТипФайлаТабличногоДокумента.pdf;
ИначеЕсли ФорматФайла = "TXT" Тогда
ЗадатьТип = ТипФайлаТабличногоДокумента.txt;
Иначе
Сообщить("Необходимо выбрать формат файла");
Возврат;
КонецЕсли;
//Создадим файл и запишем в табличный документ
ТабДок.Записать(ПолноеИмяФайла, ЗадатьТип);
//Заполним ТабДок на сервере
ЗаполнитьТаблицуНаСервере(ТабДок);
//Запишем заполненную таблицу в тот же файл
ТабДок.Записать(ПолноеИмяФайла, ЗадатьТип);
Сообщить("Выгрузка данных успешно завершена!");
КонецПроцедуры
Создаем Макет у нашей обработки. У меня он максимально прост, всего два параметра: Наименование и Город; одна область - Строка.
Создаем в модуле формы следующую функцию.
Функция ЗаполнитьТаблицуНаСервере(ТабДок) Экспорт
Макет = Обработки.ВыгрузкаВФайл.ПолучитьМакет("Макет");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Наименование,
| Контрагенты.Город
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ЭтоГруппа = Ложь";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьСтрока.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
Возврат(ТабДок);
КонецФункции
Как видите, нажатие на кнопку "Выгрузить" сначала открывает окно выбора каталога для выгрузки. Затем формируется Табличный документ, ему присваивается уникальное имя.
В процедуре вызывается функция ЗаполнитьТаблицуНаСервере(ТабДок), в которую передается наш табличный документ.
В функции в запросе отбираются необходимые поля и заполняются строки таблицы. ТабДок возвращается в процедуру и записывается документ в выбранном формате.
Обработка готова. Пробуйте :)
Вы можете отредактировать запрос, доработать макет и заполнение табДока под Ваши нужды.
Успешной работы!
Готовое решение
Загрузка документов из Excel в 1С одним нажатием!
С помощью данной обработки вы сможете загружать любые товарные документы буквально в один клик! Для загрузки необходимо просто выбрать файлы Excel и нажать кнопку "Загрузить". Простейший интерфейс и мощный механизм поиска номенклатуры. Распознает документы любой формы (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.)