&НаКлиенте
Процедура СоздатьПочтовыйРеестр(Команда)
ДополнительныеПараметры = Новый Структура("ИспользованиеВключено", Истина);
ОповещениеПродолжения = Новый ОписаниеОповещения("СоздатьПочтовыйРеестрПродолжить", ЭтотОбъект, ДополнительныеПараметры);
ТекстВопроса = НСтр("ru = 'Внимание! Вы действительно хотите выгрузить
почтовый реестр по установленным отборам'");
ВариантыОтвета = РежимДиалогаВопрос.ДаНет;
ПараметрыВопроса = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
ПараметрыВопроса.КнопкаПоУмолчанию = КодВозвратаДиалога.Да;
ПараметрыВопроса.Заголовок = НСтр("ru = 'создание почтового реестра'");
ПараметрыВопроса.ПредлагатьБольшеНеЗадаватьЭтотВопрос =
Ложь;
ПараметрыВопроса.Картинка = БиблиотекаКартинок.ДиалогВопрос;
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(ОповещениеПродолжения,
ТекстВопроса, ВариантыОтвета,
ПараметрыВопроса);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьПочтовыйРеестрПродолжить
(Результат, ДополнительныеПараметры) Экспорт
Если
Результат = Неопределено Или Результат.Значение
= КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
АдресФайлаДляСкачивания = АдресФайла;
Если
Не ЭтоАдресВременногоХранилища(АдресФайлаДляСкачивания)
Тогда
АдресФайлаДляСкачивания = ЗапуститьСозданиеПочтовогоРеестра();
КонецЕсли;
Если
ЭтоАдресВременногоХранилища(АдресФайлаДляСкачивания)
Тогда
ПараметрыДиалога = Новый ПараметрыДиалогаПолученияФайлов;
ПараметрыДиалога.Заголовок = НСтр("ru = 'Выберите путь для сохранения файла'; en = 'Select the path to
save the file'");
НачатьПолучениеФайлаССервера(АдресФайлаДляСкачивания,
"Почтовый реестр.csv", ПараметрыДиалога);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗапуститьСозданиеПочтовогоРеестра()
ТЗ
= ИнициализироватьПроцессорВывода(Истина);
СсылкиНаФайлы = Новый Массив;
Если
Не ТЗ.Колонки.Найти("Ссылка") = Неопределено Тогда
МассивПартнеров = ТЗ.ВыгрузитьКолонку("Ссылка");
Запрос
= Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Партнеры.F1_ФИО КАК ФИО,
| Партнеры.УК_Помещение
КАК Адрес
|ИЗ
| Справочник.Партнеры
КАК Партнеры
|ГДЕ
| Партнеры.Ссылка
В(&МассивПартнеров)
|
|СГРУППИРОВАТЬ
ПО
| Партнеры.F1_ФИО,
| Партнеры.УК_Помещение";
Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);
Запрос.УстановитьПараметр("МассивПартнеров",
МассивПартнеров);
РезультатЗапроса = Запрос.Выполнить();
Если
Не РезультатЗапроса.Пустой() Тогда
ИмяФайлаРеестра = ПолучитьИмяВременногоФайла("csv");
ФайлРеестра = Новый ЗаписьТекста(ИмяФайлаРеестра, КодировкаТекста.UTF8);
// Заголовок
СтрокаФайла = "ФИО;Адрес";
ФайлРеестра.ЗаписатьСтроку(СтрокаФайла);
Выборка
= РезультатЗапроса.Выбрать();
Пока
Выборка.Следующий() Цикл
СтрокаФайла = СтрЗаменить( Выборка.ФИО, ";", ",") +
";" + Выборка.Адрес;
ФайлРеестра.ЗаписатьСтроку(СтрокаФайла);
КонецЦикла;
ФайлРеестра.Закрыть();
ДанныеФайла = Новый ДвоичныеДанные(ИмяФайлаРеестра);
АдресДляСкачивания = ПоместитьВоВременноеХранилище(ДанныеФайла, ЭтаФорма.УникальныйИдентификатор);
Возврат АдресДляСкачивания;
Иначе
Возврат "";
КонецЕсли;
КонецЕсли;
КонецФункции
|