Имя: Пароль:
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. Если это важно для сути вопроса. Но версию платформы все равно менять нельзя.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn