Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Пучить полный адрес файла внешней обработки при ее открытии
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Gigi
Всем привет!
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПолныйАдресФайла="???????";
Сообщить(ПолныйАдресФайла);
КонецПроцедуры

Шарил в поисковике ... потом надоело... и кроме того времени нет на это...
И если пойск занимает более 5-ти минут то лучше уже здесь... по способу решение задачи в фоновом режиме.... Не отвлекаясь от работы.
Так что, кто нибудь поможет сэкнмить время..
И скинуть готовый код....Вернее вписать строки в эту процедуру как это сделать.
Так что нужен только код по быстрому и безо всяких комментариев.
Буду признателен!
Bernet
Gigi @ Сегодня, 12:03 необходимо зарегистрироваться для просмотра ссылки ,
У внешних обработок есть свойство "ИспользуемоеИмяФайла"
     Сообщить(ЭтотОбъект.ИспользуемоеИмяФайла);
Gigi
Bernet @ Сегодня, 12:51 необходимо зарегистрироваться для просмотра ссылки ,
Большое спасибо ...
Только чуть не понятно...
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОбработкаАдрес();
КонецПроцедуры
&НаСервере
Процедура ОбработкаАдрес()
Сообщить(Объект.ИспользуемоеИмяФайла);    
КонецПроцедуры

Так не работает!
А мне нужно перехватить адрес файла обработки при открытии формы или объекта.
А если это свойство применимо только в модуле объекта то там у В.О. только одно событие.. "ОбработкаПроверкиЗаполнения"
необходимо зарегистрироваться для просмотра ссылки
Цитата
Далее рассмотрим, когда вызывается данный обработчик. Это зависит от типа объекта и его свойств. Так для, например, для справочника обработчик вызывается перед записью объекта; для документа: если разрешено проведение - при проведении, иначе при записи; для обработки : при вызове стандартных команд "OK", Да". Подробно это описано во встроенной справке. Но также есть возможность вызвать данный обработчик в произвольный момент, используя метод объекта ПроверитьЗаполнение(). Например, определить команду Проверить в форме документа:

Т.е. протестить свойство смог только так ...
Вписал строку в модуль объекта:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Сообщить(ЭтотОбъект.ИспользуемоеИмяФайла);    
КонецПроцедуры

Вывел кнопку "Ок" из стандартных команд ... и при открытии нажал.
Даже не успел посомтреть какой сообщение появилось )) форма тут же исчезла.
А мне нужно просто при открытии объекта перехватить адрес файла обработки ... что бы просто записать его в какое то поле.
В принципе вот все что надо.
Короче .. Буду опять признателен если по быстрому покажете как... самому не охота с этим париться и даже думать.
Просто опять код... учитывая цель проблематики.
andr_andrey
Цитата(Gigi @ 17.04.19, 13:38) необходимо зарегистрироваться для просмотра ссылки
самому не охота с этим париться и даже думать.

faceoff.gif
Bernet
andr_andrey @ Сегодня, 14:10 необходимо зарегистрироваться для просмотра ссылки ,
В обычных формах:
Сообщить(ЭтотОбъект.ИспользуемоеИмяФайла);

В управляемых:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    ПутьКОбработке = ПолучитьИспользуемоеИмяФайла();
    Сообщить(ПутьКОбработке);
    
КонецПроцедуры

&НаСервере
Функция ПолучитьИспользуемоеИмяФайла()
    
    ТекущийОбъект = РеквизитФормыВЗначение("Объект");
    
    Возврат ТекущийОбъект.ИспользуемоеИмяФайла;
    
КонецФункции
Gigi
andr_andrey @ Сегодня, 14:10 необходимо зарегистрироваться для просмотра ссылки ,
help.gif
Не понятно что ли?
Я же говорю вам уважаемые ... есть дела поважнее чем эта ерунда..
Так что свою иронию оставьте при себе уважаемые )) ... тем более что мне она ... ну сами понимаете ))
А вместо этого пожалуйста скиньте код решения и все..
Еще раз повторяю ... ПЕРЕХВАТИТЬ АДРЕС ФАЙЛА ПРИ ОТКРЫТИИ...
ВОТ ВСЕ ЧТО НАДО
Буду признателен!


Bernet @ Сегодня, 14:23 необходимо зарегистрироваться для просмотра ссылки ,
Гууу ... наконец то...
Спасибо ... ша проверю ... протестю по быстрому...

Gigi @ Сегодня, 14:24 необходимо зарегистрироваться для просмотра ссылки ,
Теперь нормально!
С этой командой: "РеквизитФормыВЗначение" был не знаком.
Ну и ладно ... ничего страшного ...
Спасибо...
Пока!



Gigi @ Сегодня, 14:40 необходимо зарегистрироваться для просмотра ссылки ,
faceoff.gif
Это мне нужно так ... от этого бесконечного гема системы..
Гууу ... как устал уже от всего этого...
Вроде бы от одной малой пакости избавились теперь возникла другая ..
Вот функция..
Функция Получить(ИмяФайла)  Экспорт
ДвДан = Новый ДвоичныеДанные(ИмяФайла);
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвДан);
ИмяОбр = ВнешниеОбработки.Подключить(АдресВоВременномХранилище,,);    
Возврат ИмяОбр;
КонецФункции

Она вписана в общий модуль конфы... и в файловой и той которая на сервере.
Но дело в том, что данная функция вызванная при открытии обработкой в файловом варианте находит указанный путь а в серверном нет..
faceoff.gif
Я не понял внешние обработки обязательно нужно размешать на сервере что ли? Что бы команды функции ее нашли наконец...
Достало уже ... времени нет на эту ерунду ..
Короче ... скиньте код что бы функция находила адрес на ПК ... И что бы машина понимала что не на сервере надо искать, а на ПК.
Но ведь для этого команды функции работают ведь на сервере ... ваш клиент-серверный язык ....
Ладно извините
Короче подскажите!
Буду признателен!

Gigi @ Сегодня, 15:19 необходимо зарегистрироваться для просмотра ссылки ,
необходимо зарегистрироваться для просмотра ссылки

//=== общий модуль с именем: "SubFx_ВнешняяОбработка"

//SubFx_ВнешняяОбработка.Получить(ИмяФайла);
Функция Получить(ИмяФайла)  Экспорт
ДвДан = Новый ДвоичныеДанные(ИмяФайла);
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвДан);
ИмяОбр = ВнешниеОбработки.Подключить(АдресВоВременномХранилище,,);    
Возврат ИмяОбр;
КонецФункции


//=== Форма обработки с разными дин. списками в ней  на пример с именем: "ЭнСист_РабочийСтол" .... и событие выбора объекта одного из дин. списка на пример с именем: "ПоезныйОтпуск_Акты"

&НаКлиенте
Процедура АктыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
//===================================
ТекОбрАдрес=ПолучитьИспользуемоеИмяФайла();
АдресОбработки=СтрЗаменить(ТекОбрАдрес,"ЭнСист_РабочийСтол","ПОЛЕЗНЫЙ_ОТПУСК_Акт"); //Это при условии что все обрабтки в одной папке. Что обычн так и делаю
ПолноеИмяФайла=АдресОбработки;
//===================================
Обработка=SubFx_ВнешняяОбработка.Получить(ПолноеИмяФайла);
ПараметрыОткрытия = Новый Структура("КлючВарианта", "");
Уникальность = "ВнешняяОбработка." + Обработка + "/КлючВарианта.";
Форма = ПолучитьФорму("ВнешняяОбработка." + Обработка + ".Форма",,Неопределено,Уникальность);
//===================================
СсылкаНаДокумент=Элементы["ПоезныйОтпуск_Акты"].ТекущаяСтрока;
Форма.Объект.ДокСсылка=СсылкаНаДокумент;
//===================================
Форма.ОткрытьМодально();
КонецПроцедуры


&НаСервере
Функция ПолучитьИспользуемоеИмяФайла()
ТекущийОбъект = РеквизитФормыВЗначение("Объект");
Возврат ТекущийОбъект.ИспользуемоеИмяФайла;
КонецФункции


Что бы было ясно что нужно и по быстрому..
Но работает если с файловой которая на ПК, а с сервера не находит путь.
Просто нужно по быстрому докорректирвать
Ладно... извините за эмоции
Буду признатен!
Vofka
andr_andrey, вы будто автора впервые читаете crazy.gif
Gigi
Vofka @ Сегодня, 17:19 необходимо зарегистрироваться для просмотра ссылки ,
Ладно ... всем еще раз большие извинения за такое агрессивное негодование ... на которое были объективные причины.
но вопрос открыт....
Поэтому все таки как получить адрес файла обработки с клиента ... которая на персональном ... не на сервере..
Вы конечно как угодно, но вопрос открыт...
Prospero
Цитата(Gigi @ 17.04.19, 12:38) необходимо зарегистрироваться для просмотра ссылки
А мне нужно просто при открытии объекта перехватить адрес файла обработки... Вывел кнопку "Ок" из стандартных команд ... и при открытии нажал.

Может я чего-то не понимаю ... upset.gif
Простите, а что мешает использовать событие в модуле формы "ПриОткрытии" Вашей обработки ?
Вам же привели пример выше (Bernet)

Цитата(Gigi @ 17.04.19, 12:38) необходимо зарегистрироваться для просмотра ссылки
А если это свойство применимо только в модуле объекта то там у В.О. только одно событие.. "ОбработкаПроверкиЗаполнения"

Так добавьте свою функцию туда...
Модуль объекта Вашей внешней обработки:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда

Функция ПолучитьИмяФайлаВнешнейОбработки() Экспорт
    Попытка
        Возврат ЭтотОбъект.ИспользуемоеИмяФайла;
    Исключение
        Возврат "";
    КонецПопытки;
КонецФункции
#КонецЕсли


Модуль формы Вашей внешней обработки:
&НаСервере 
Функция (ПолучитьНаСервере()
    Возврат РеквизитФормыВЗначение("Объект").ПолучитьИмяФайлаВнешнейОбработки();
КонецФункции


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Сообщить(ПолучитьНаСервере());
КонецПроцедуры

Gigi
Prospero @ Сегодня, 22:07 необходимо зарегистрироваться для просмотра ссылки ,
Хоть кто то автора правильно понимает ..
Попробую завтра протестить ..сильно устал.
Весь день сегодня навалило столько вопросов ...
Попробую как сказали ... если что или напишу тут или в личку...
А пока .. гууу... час уже ... нужно круглятся ... голова уже не варит.
Но спасибо..




Да еще ... )))) По поводу ...
Цитата(Vofka @ 17.04.19, 17:19) необходимо зарегистрироваться для просмотра ссылки
andr_andrey, вы будто автора впервые читаете crazy.gif

Вообще хоть иногда негодую но я тут лично никого вроде бы не оскорблял ))))
Только систему 1С которая местами действительно crazy.gif
И которая достала уже своими ограничениями ...
Ладно пока!



Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.