Имя: Пароль:
1C
1С v8
АгентПлюс на 8.2 УПП
0 Crimscon
 
06.09.18
13:05
Всем привет. Пытаюсь адаптировать АгентПлюс из 8.3 УТ 11.3 под 8.2 УПП 1.3 и уперся в функцию "начать помещение файла".
При открытии считывается данные по иконке и формируется навигационная ссылка. Ну и соответственно в форме можно выбрать новую иконку.
Вопрос стоит в создании навигационной ссылки, потому что в 8.3 эта ссылка формируется автоматически, а мне приходится ее создавать вручную и с той, что я создаю оно не работает.

Приведу код АгентПлюса и моей адаптации его под УПП.

АгентПлюс:
Процедура ПриОткрытии(Отказ)
    
    #Если ВебКлиент Тогда
        //Если Не ОбщегоНазначенияКлиент.РасширениеРаботыСФайламиПодключено() Тогда
        //    Отказ=Истина;
        //    Возврат;
        //КонецЕсли;
        Элементы.ГруппаИконка.Видимость = Ложь;
    #Иначе
        КаталогВременныхФайлов = апКлиент.ВернутьКаталогВременныхФайловНаКлиентеВебКлиенте();
                     
        Путь = КаталогВременныхФайлов + "IconAP.png";
        Картинка.Записать(Путь);
        АдресВХранилище = "";
        НачатьПомещениеФайла(Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект, Новый Структура("КаталогВременныхФайлов", КаталогВременныхФайлов)), АдресВХранилище, Путь, Ложь);
        Возврат;
    #КонецЕсли

    ПриОткрытииФрагмент();
КонецПроцедуры
Процедура ПриОткрытииЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
    
    КаталогВременныхФайлов = ДополнительныеПараметры.КаталогВременныхФайлов;
    ПолеИконка = Адрес;
    ПутьКИконке = КаталогВременныхФайлов;
    
    ПриОткрытииФрагмент();

КонецПроцедуры
Процедура ПриОткрытииФрагмент()
    
    Если Не Запись.Широта = 0 И Не Запись.Долгота = 0 Тогда
        ЭтаФорма.Элементы.КнопкаУказатьНаКарте.Заголовок = "Показать местоположение на карте";
    КонецЕсли;
    
    Попытка
        Если ЭтаФорма.ВладелецФормы.ИмяФормы = "Справочник.Партнеры.Форма.ФормаЭлемента" Тогда
            ЭтаФорма.Элементы.ФормаЗаписатьИЗакрыть.Заголовок = "Записать";
            ЭтаФорма.Элементы.ФормаЗаписать.Видимость = Ложь;
            ЭтаФорма.Элементы.ФормаСкопировать.Видимость = Ложь;
        КонецЕсли;
    Исключение
    КонецПопытки;
    
    //СформироватьУсловноеОформление();

КонецПроцедуры

И еще немного для выбора иконки:
Процедура ПолеИконкаНажатие(Элемент, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогОткрытияФайла.Заголовок = "Выберите файл с иконкой";
    ДиалогОткрытияФайла.ПредварительныйПросмотр = Истина;
    ДиалогОткрытияФайла.Фильтр = "Файлы иконок(*.png)|*.png";
    ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
    
    Если ДиалогОткрытияФайла.Выбрать() Тогда
        Модифицированность = Истина;
        ВыбраннаяИконка = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла, Ложь);
        Картинка = ВыбраннаяИконка;
        АдресВХранилище = "";
        НачатьПомещениеФайла(Новый ОписаниеОповещения("ПолеИконкаНажатиеЗавершение", ЭтотОбъект, Новый Структура("АдресВХранилище", АдресВХранилище)), АдресВХранилище, ДиалогОткрытияФайла.ПолноеИмяФайла, Ложь);
    КонецЕсли;
    
КонецПроцедуры
Процедура ПолеИконкаНажатиеЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
    
    //АдресВХранилище = ДополнительныеПараметры.АдресВХранилище;
    ПолеИконка = Адрес;

КонецПроцедуры


А теперь то, как я пытался это адаптировать в УПП
Процедура ПриОткрытии(Отказ)
    
    #Если ВебКлиент Тогда
        //Если Не ОбщегоНазначенияКлиент.РасширениеРаботыСФайламиПодключено() Тогда
        //    Отказ=Истина;
        //    Возврат;
        //КонецЕсли;
        Элементы.ГруппаИконка.Видимость = Ложь;
    #Иначе
        КаталогВременныхФайлов = апКлиент.ВернутьКаталогВременныхФайловНаКлиентеВебКлиенте();
                     
        Путь = КаталогВременныхФайлов + "IconAP.png";
        Картинка.Записать(Путь);
        Адрес = ПолучитьНавигационнуюСсылку(ЭтаФорма.Запись.Объект.Ссылка, "ПолеИконка");
        ПолеИконка = Адрес;
        ПутьКИконке = КаталогВременныхФайлов;
        ПриОткрытииФрагмент();
        Возврат;
    #КонецЕсли

    ПриОткрытииФрагмент();
КонецПроцедуры
Процедура ПриОткрытииФрагмент()
    
    Если Не Запись.Широта = 0 И Не Запись.Долгота = 0 Тогда
        ЭтаФорма.Элементы.КнопкаУказатьНаКарте.Заголовок = "Показать местоположение на карте";
    КонецЕсли;
    
    Попытка
        Если ЭтаФорма.ВладелецФормы.ИмяФормы = "Справочник.ТочкиДоставки.Форма.ФормаЭлемента" Тогда
            ЭтаФорма.Элементы.ФормаЗаписатьИЗакрыть.Заголовок = "Записать";
            ЭтаФорма.Элементы.ФормаЗаписать.Видимость = Ложь;
            ЭтаФорма.Элементы.ФормаСкопировать.Видимость = Ложь;
        КонецЕсли;
    Исключение
    КонецПопытки;
    
    //СформироватьУсловноеОформление();

КонецПроцедуры
Процедура ПолеИконкаНажатие(Элемент, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогОткрытияФайла.Заголовок = "Выберите файл с иконкой";
    ДиалогОткрытияФайла.ПредварительныйПросмотр = Истина;
    ДиалогОткрытияФайла.Фильтр = "Файлы иконок(*.png)|*.png";
    ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
    
    Если ДиалогОткрытияФайла.Выбрать() Тогда
        Модифицированность = Истина;
        ВыбраннаяИконка = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла, Ложь);
        Картинка = ВыбраннаяИконка;
        Адрес = ПолучитьНавигационнуюСсылку(ЭтаФорма.Запись.Объект.Ссылка, "ПолеИконка");
        ПолеИконка = Адрес;
    КонецЕсли;
    
КонецПроцедуры

Все выполняется на клиенте.