Имя: Пароль:
1C
1С v8
Программная выгрузка ВПФ и кэш
0 orcdunaev
 
22.12.15
11:12
Здравствуйте!

Столкнулся с такой проблемой. Программно формирую табличный документ внешней печатной формы. Выгружаю форму, создаю из файла внешнюю обработку.

Проблема в том, что во временный файл выгружается старая версия ВПФ. Т.е. я уже изменил ее код, загрузил заново в базу, а при выгрузке во временный файл выгружается не измененная версия, а старая (открыл временный файл, проверил).

Локальный кэш в AppData\Local и AppData\Roaming по этой базе обновил, не помогает.

Помогает, если завести ВПФ в справочнике как новую ВПФ с другим именем. Но это крайне неудобно для отладки. Мне ее менять много раз придется.

Вот тут описана похожая ситуация, но решения нет: v8: Своеобразность открытия внешних обработок 8.2 толстый клиент

Есть ли у кого мысли, как еще можно бороться с этой траблой без постоянного заведения новой ВПФ?
1 Godofsin
 
22.12.15
11:23
Выгружаешь форму? Это как?
2 orcdunaev
 
22.12.15
11:34
Примерно вот так:

ДеревоМакетовПечати = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(Док,Неопределено);
    СтрокаКнопки = ДеревоМакетовПечати.Строки.Найти("Печать торг12 возврат поставщику с пустыми подписями","Текст");
    Если СтрокаКнопки=Неопределено Тогда
        Сообщить("В меню печати не найдено: ""Печать торг12 возврат поставщику с пустыми подписями"".");
        Возврат Неопределено;
    Иначе
        Расшифровка = СтрокаКнопки.Расшифровка;
        Если ТипЗнч(Расшифровка) = Тип("Структура") Тогда
            ДвоичныеДанные = Расшифровка.СсылкаНаВнешнююОбработку.Принадлежность[Расшифровка.НомерСтроки - 1].ХранилищеВнешнейОбработки.Получить();
            Если ДвоичныеДанные = Неопределено Тогда
                ДвоичныеДанные = Расшифровка.СсылкаНаВнешнююОбработку.ХранилищеВнешнейОбработки.Получить();
            КонецЕсли;
            Если ДвоичныеДанные = Неопределено Тогда
                Сообщить("Не удалось напечатать ТОРГ-12.");
                Возврат Неопределено;
            КонецЕсли;
            
            ТабДокумент = Неопределено;
            
            ИмяФайла = ПолучитьИмяВременногоФайла("epf");
            //Попытка
                ДвоичныеДанные.Записать(ИмяФайла);
                Обработка = ВнешниеОбработки.Создать(ИмяФайла);
                Обработка.СсылкаНаОбъект = Док;
                ДопПараметры=новый Структура;
                ДопПараметры.Вставить("ВернутьТабличныйДокумент", Истина);
                
                // Если у внешней обработки есть реквизит для дополнительных параметров, присвоить ему значение
                Если НЕ Обработка.Метаданные().Реквизиты.Найти("ДополнительныеПараметры") = Неопределено Тогда
                    Обработка.ДополнительныеПараметры = ДопПараметры;
                КонецЕсли;

                
                Обработка.ДополнительныеПараметры=ДопПараметры;
                ТабДокумент=Обработка.Печать();
                УдалитьФайлы(ИмяФайла);
3 orcdunaev
 
22.12.15
11:38
А, ну да, забыл. Обычные формы, Комплексная автоматизация, платформа 8.3.5.1248. Если это важно для сути вопроса. Но версию платформы все равно менять нельзя.