1.
G_105448614315553005603
16.10.25 18:42
Сейчас в теме
&НаКлиенте
Процедура Импорт(Команда)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.ПолноеИмяФайла = "";
Диалог.Фильтр = "Файлы Excel (*.xlsx)|*.xlsx";
Диалог.МножественныйВыбор = Ложь;
Диалог.Показать(Новый ОписаниеОповещения("ЗавершениеВыбораФайла", ЭтаФорма));
КонецПроцедуры
&НаКлиенте
Процедура ЗавершениеВыбораФайла(ВыбранныеФайлы, ДопПараметры) Экспорт
Если ВыбранныеФайлы <> Неопределено И ВыбранныеФайлы.Количество() > 0 Тогда
ИмяФайла = ВыбранныеФайлы[0];
ОпОповЗавершенияЗагрузки = Новый ОписаниеОповещения("ЗавершениеЗагрузкаФайлаНаСервере", ЭтаФорма);
НачатьПомещениеФайлаНаСервер(ОпОповЗавершенияЗагрузки,,, , ИмяФайла, ЭтаФорма.УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗавершениеЗагрузкаФайлаНаСервере(ОписаниеФайла, ДопПараметры) Экспорт
Если ОписаниеФайла <> Неопределено Тогда
ОбработкаФайлаНаСервере(ОписаниеФайла.Адрес);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаФайлаНаСервере(АдресФайла) Экспорт
Если НЕ ЭтоАдресВременногоХранилища(АдресФайла) Тогда Возврат; КонецЕсли;
Двоичные = ПолучитьИзВременногоХранилища(АдресФайла);
ИмяВремФайла = ПолучитьИмяВременногоФайла("xlsx");
Двоичные.Записать(ИмяВремФайла);
ТабДок = Новый ТабличныйДокумент;
Попытка
ТабДок.Прочитать(ИмяВремФайла);
Исключение
Сообщить("Ошибка чтения Excel: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
нСтроки = 2;
Пока Истина Цикл
Фамилия = ТабДок.ПолучитьОбласть("R" + нСтроки + "C1:R" + нСтроки + "C1").ТекущаяОбласть.Текст;
Имя = ТабДок.ПолучитьОбласть("R" + нСтроки + "C2:R" + нСтроки + "C2").ТекущаяОбласть.Текст;
Отчество = ТабДок.ПолучитьОбласть("R" + нСтроки + "C3:R" + нСтроки + "C3").ТекущаяОбласть.Текст;
Логин = ТабДок.ПолучитьОбласть("R" + нСтроки + "C4:R" + нСтроки + "C4").ТекущаяОбласть.Текст;
Пароль = ТабДок.ПолучитьОбласть("R" + нСтроки + "C5:R" + нСтроки + "C5").ТекущаяОбласть.Текст;
Роль = ТабДок.ПолучитьОбласть("R" + нСтроки + "C6:R" + нСтроки + "C6").ТекущаяОбласть.Текст;
Код = ТабДок.ПолучитьОбласть("R" + нСтроки + "C7:R" + нСтроки + "C7").ТекущаяОбласть.Текст;
Если ПустаяСтрока(Фамилия) И ПустаяСтрока(Имя) И ПустаяСтрока(Отчество) Тогда
Прервать;
КонецЕсли;
Кн =Справочники.Контрагенты.СоздатьЭлемент();
Кн.Наименование = Фамилия;
Кн.Имя = Имя;
Кн.Отчество = Отчество;
Кн.Логин = Логин;
Кн. Пароль = Пароль;
кн.Роль = Роль;
Кн.Код = Код;
Кн.Записать();
нСтроки = нСтроки + 1;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ЭкспортВExcel(Команда)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = "Файлы Excel (*.xlsx)|*.xlsx";
Диалог.Заголовок = "Сохранить список клиентов";
Диалог.Показать(Новый ОписаниеОповещения("ПослеВыбораФайлаЭкспорт", ЭтаФорма));
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораФайлаЭкспорт(ВыбранныеФайлы, ДопПараметры) Экспорт
Если ВыбранныеФайлы <> Неопределено И ВыбранныеФайлы.Количество() > 0 Тогда
ИмяФайла = ВыбранныеФайлы[0];
ЭкспортКлиентовВExcel(ИмяФайла);
Сообщить("Экспорт завершён: " + ИмяФайла);
Иначе
Сообщить("Выбор файла отменён");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЭкспортКлиентовВExcel(ИмяФайла) Экспорт
Excel = Новый COMОбъект("Excel.Application");
Excel.Visible = Ложь;
Книга = Excel.Workbooks.Add();
Лист = Книга.Worksheets(1);
// Заголовки
Лист.Cells(1,1).Value = "Фамилия";
Лист.Cells(1,2).Value = "Возраст";
Лист.Cells(1,3).Value = "Телефон";
// Данные из справочника
Запрос = Новый Запрос("ВЫБРАТЬ Наименование, Возраст, Телефон ИЗ Справочник.Клиенты");
Результат = Запрос.Выполнить().Выгрузить();
нСтроки = 2;
Для Каждого Стр Из Результат Цикл
Лист.Cells(нСтроки,1).Value = Стр.Наименование;
Лист.Cells(нСтроки,2).Value = Стр.Возраст;
Лист.Cells(нСтроки,3).Value = Стр.Телефон;
нСтроки = нСтроки + 1;
КонецЦикла;
// Сохраняем и закрываем
Книга.SaveAs(ИмяФайла);
Книга.Close();
Excel.Quit();
// "Освобождаем" объекты, присваивая им Неопределено
Лист = Неопределено;
Книга = Неопределено;
Excel = Неопределено;
КонецПроцедуры