Намедни делал я внешний отчет с использованием универсального отчета (Комплексная автоматизация 1.1 под 8.2), и задумался: а как бы передать сохраненную настройку в моей базе пользователю вместе с отчетом. Для этого надо как-то выгрузить ее в файл из регистра сведений СохраненныеНастройки, и затем поместить в макет как двоичные данные. Для сохранения в файл потребовалось написать небольшую процедуру:
Процедура КоманднаяПанельФормыДействие1(Кнопка) запрос = новый запрос("ВЫБРАТЬ | СохраненныеНастройки.СохраненнаяНастройка |ИЗ | РегистрСведений.СохраненныеНастройки КАК СохраненныеНастройки |ГДЕ | СохраненныеНастройки.ИмяОбъекта = ""ВнешнийОтчетОбъект.Продажи"" | И СохраненныеНастройки.НаименованиеНастройки = ""Основная"" "); выб = запрос.Выполнить().Выбрать(); выб.Следующий(); настройка =ЭлементыФормы.ТабличноеПолеСписокНастроек.ТекущиеДанные.СохраненнаяНастройка.Получить(); ЗначениеВФайл(КаталогВременныхФайлов()+"set.txt",настройка); КонецПроцедуры
В своем внешнем отчете я добавил новый макет с типом «Двоичные данные» и загрузил в него сохраненную настройку из файла. А на форме отчета добавил текст в процедуру ПриОткрытии():
запрос = новый запрос("ВЫБРАТЬ | СохраненныеНастройки.СохраненнаяНастройка |ИЗ | РегистрСведений.СохраненныеНастройки КАК СохраненныеНастройки |ГДЕ | СохраненныеНастройки.ИмяОбъекта = ""ВнешнийОтчетОбъект.ФактПродажи"" | И СохраненныеНастройки.НаименованиеНастройки = ""Основная"" | и Пользователь = &Пользователь"); запрос.УстановитьПараметр( "Пользователь",ПараметрыСеанса.ТекущийПользователь ); если запрос.Выполнить().Пустой() тогда наст = РегистрыСведений.СохраненныеНастройки.СоздатьМенеджерЗаписи(); макет = ПолучитьМакет("Макет"); макет.Записать(КаталогВременныхФайлов()+"set.txt"); наст.ИспользоватьПриОткрытии = истина; наст.СохранятьАвтоматически = истина; наст.Пользователь = ПараметрыСеанса.ТекущийПользователь; наст.СохраненнаяНастройка = Новый ХранилищеЗначения( ЗначениеИзФайла(КаталогВременныхФайлов()+"set.txt")); наст.ИмяОбъекта = "ВнешнийОтчетОбъект.ФактПродажи"; наст.НаименованиеНастройки = "Основная"; наст.Записать(истина); КонецЕсли;
Теперь при первом открытии внешнего отчета в другой базе для него создается настройка "основная" для текущего пользователя.