Есть стандартная обработка "УниверсальныйОбменДаннымиXML" для выгрузки проводок в БГУ. Чтобы не хранить файл правил для выгрузки проводок на сервере, предлагаю загрузить его в обработку. Для реализации потребуется открыть прилагаемую обработку в конфигураторе и загрузить правила в макет "БИТ_ВыгрузкаПроводокВБГУ" и внести небольшие изменения в саму обработку в конфигурации или использовать как внешнюю. При открытии обработки, правила сохраняются во временную папку и подгружаются в обработку. После закрытия обработки, временная папка удаляется.
Добавлены процедура и функция:
//1БИТ+
&НаКлиенте
Процедура БИТ_ЗагрузитьПравилаОбмена(Команда)
АдресФайлаПравилВХранилище = ПолучитьМакетСКлиента();
ДвоичныеДанныеМакета = ПолучитьИзВременногоХранилища(АдресФайлаПравилВХранилище);
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("XML");
ДвоичныеДанныеМакета.Записать(ИмяВременногоФайла);
ПрочитатьПравилаОбменаЗавершение(Истина, АдресФайлаПравилВХранилище, ИмяВременногоФайла, Неопределено);
КонецПроцедуры
&НаСервере
Функция ПолучитьМакетСКлиента()
лМакетОболочка = ПолучитьОбщийМакет("БИТ_ПравилаОбменаСБГУ");
ИмяВрем = ПолучитьИмяВременногоФайла(".xml");
лМакетОболочка.Записать(ИмяВрем);
лМакет = Новый ДвоичныеДанные(ИмяВрем);
Возврат ПоместитьВоВременноеХранилище(лМакет);
КонецФункции
//1БИТ-
Добавленный код в модуль формы:
1. Процедура ПриСозданииНаСервере:
//1БИТ+
БИТ_НовЭл1 = Команды.Добавить("БИТ_ЗагрузитьПравилаОбмена");
БИТ_НовЭл1.Действие = "БИТ_ЗагрузитьПравилаОбмена";
БИТ_НовЭл1.Заголовок = "Загрузить правила обмена";
БИТ_НовЭл2 = Элементы.Добавить("БИТ_ЗагрузитьПравилаОбмена", Тип("КнопкаФормы"),Элементы.ГруппаФайлаПравил);
БИТ_НовЭл2.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
БИТ_НовЭл2.Шрифт = Новый Шрифт("Arial",12,Истина);
БИТ_НовЭл2.ИмяКоманды = "БИТ_ЗагрузитьПравилаОбмена";
//1БИТ+
2. Функция ИмяФайлаНаСервереИлиКлиенте:
Если ЭтоКлиент Тогда
Если СоздатьНовый Тогда
Расширение = ? (Объект.АрхивироватьФайл, ".zip", ".xml");
ИмяФайла = ПолучитьИмяВременногоФайла(Расширение);
Иначе
Расширение = РасширениеФайла(ИмяФайлаДляРасширения);
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайла); // ДвоичныеДанные
//1БИТ+
Если ДвоичныеДанные = неопределено Тогда
ДвоичныеДанные = ПолучитьОбщийМакет("БИТ_ПравилаОбменаСБГУ");
Конецесли;
//1БИТ-
АдресНаСервере = ПолучитьИмяВременногоФайла(Расширение);
// Удаление временного файла происходит не через УдалитьФайлы(АдресНаСервере),
// а через УдалитьФайлы(Объект.ИмяФайлаПравилОбмена) и УдалитьФайлы(Объект.ИмяФайлаОбмена) далее.
ДвоичныеДанные.Записать(АдресНаСервере);
ИмяФайла = АдресНаСервере;
КонецЕсли;
Иначе