В начало

Почтовый реестр в виде файла

 

            Нужно создать почтовый реестр в виде файла формата CSV с адресами для последующей обработки и отправки писем. Почтовый реестр будет представлять из себя таблицу с двумя колонками: «ФИО» и «Адрес».

Рис. Форма списка справочника в конфигураторе

 

            Далее показаны необходимые процедуры.

 

Листинг. Модуль формы списка справочника

&НаКлиенте

Процедура СоздатьПочтовыйРеестр(Команда)

            ДополнительныеПараметры = Новый Структура("ИспользованиеВключено", Истина);      

            ОповещениеПродолжения = Новый ОписаниеОповещения("СоздатьПочтовыйРеестрПродолжить", ЭтотОбъект, ДополнительныеПараметры);

            ТекстВопроса = НСтр("ru = 'Внимание! Вы действительно хотите выгрузить почтовый реестр по установленным отборам'");

            ВариантыОтвета = РежимДиалогаВопрос.ДаНет;

            ПараметрыВопроса = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();

            ПараметрыВопроса.КнопкаПоУмолчанию = КодВозвратаДиалога.Да;

            ПараметрыВопроса.Заголовок = НСтр("ru = 'создание почтового реестра'");

            ПараметрыВопроса.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;

            ПараметрыВопроса.Картинка = БиблиотекаКартинок.ДиалогВопрос;

            СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(ОповещениеПродолжения, ТекстВопроса, ВариантыОтвета, ПараметрыВопроса);       

КонецПроцедуры

 

&НаКлиенте

Процедура СоздатьПочтовыйРеестрПродолжить (Результат, ДополнительныеПараметры) Экспорт

           

            Если Результат = Неопределено Или Результат.Значение = КодВозвратаДиалога.Нет Тогда

                        Возврат;

            КонецЕсли;

 

            АдресФайлаДляСкачивания = АдресФайла;

           

            Если Не ЭтоАдресВременногоХранилища(АдресФайлаДляСкачивания) Тогда

                        АдресФайлаДляСкачивания = ЗапуститьСозданиеПочтовогоРеестра();

            КонецЕсли;

           

            Если ЭтоАдресВременногоХранилища(АдресФайлаДляСкачивания) Тогда

                        ПараметрыДиалога = Новый ПараметрыДиалогаПолученияФайлов;

                        ПараметрыДиалога.Заголовок = НСтр("ru = 'Выберите путь для сохранения файла'; en = 'Select the path to save the file'");

                       

                        НачатьПолучениеФайлаССервера(АдресФайлаДляСкачивания, "Почтовый реестр.csv", ПараметрыДиалога);

            КонецЕсли;

           

КонецПроцедуры

 

&НаСервере

Функция ЗапуститьСозданиеПочтовогоРеестра()

            ТЗ = ИнициализироватьПроцессорВывода(Истина);   

            СсылкиНаФайлы = Новый Массив;

           

            Если Не ТЗ.Колонки.Найти("Ссылка") = Неопределено Тогда

                       

                        МассивПартнеров = ТЗ.ВыгрузитьКолонку("Ссылка");

                       

                        Запрос = Новый Запрос;

                        Запрос.Текст =

                        "ВЫБРАТЬ

                        |         Партнеры.F1_ФИО КАК ФИО,

                        |         Партнеры.УК_Помещение КАК Адрес

                        |ИЗ

                        |         Справочник.Партнеры КАК Партнеры

                        |ГДЕ

                        |         Партнеры.Ссылка В(&МассивПартнеров)

                        |

                        |СГРУППИРОВАТЬ ПО

                        |         Партнеры.F1_ФИО,

                        |         Партнеры.УК_Помещение";

                       

                        Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);

                        Запрос.УстановитьПараметр("МассивПартнеров", МассивПартнеров);

                       

                        РезультатЗапроса = Запрос.Выполнить();

                       

                        Если Не РезультатЗапроса.Пустой() Тогда 

                                   ИмяФайлаРеестра = ПолучитьИмяВременногоФайла("csv");

                                   ФайлРеестра = Новый ЗаписьТекста(ИмяФайлаРеестра, КодировкаТекста.UTF8); 

                                  

                                   //  Заголовок

                                   СтрокаФайла = "ФИО;Адрес";

                                   ФайлРеестра.ЗаписатьСтроку(СтрокаФайла);

                                  

                                   Выборка = РезультатЗапроса.Выбрать();

                                  

                                   Пока Выборка.Следующий() Цикл                                                                                    

                                               СтрокаФайла = СтрЗаменить( Выборка.ФИО, ";", ",") + ";" + Выборка.Адрес;

                                               ФайлРеестра.ЗаписатьСтроку(СтрокаФайла);                                              

                                   КонецЦикла; 

                                  

                                   ФайлРеестра.Закрыть();

                                   ДанныеФайла = Новый ДвоичныеДанные(ИмяФайлаРеестра);  

                                   АдресДляСкачивания = ПоместитьВоВременноеХранилище(ДанныеФайла, ЭтаФорма.УникальныйИдентификатор);           

                                  

                                   Возврат  АдресДляСкачивания;

                        Иначе

                                   Возврат  "";

                        КонецЕсли;

            КонецЕсли;

КонецФункции

 

            Запускаем пользовательский режим, переходим в справочник и жмем на кнопку «Создать почтовый реестр».

Рис. Форма списка справочника в пользовательском режиме

 

            При нажатии на кнопку будет создан файл «Почтовый реестр.csv» в указанном месте.

 

Рис. Фрагмент файла «Почтовый реестр»