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