Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Пучить полный адрес файла внешней обработки при ее открытии          
Gigi Подменю пользователя
сообщение 17.04.19, 11:03
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Всем привет!
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПолныйАдресФайла="???????";
Сообщить(ПолныйАдресФайла);
КонецПроцедуры

Шарил в поисковике ... потом надоело... и кроме того времени нет на это...
И если пойск занимает более 5-ти минут то лучше уже здесь... по способу решение задачи в фоновом режиме.... Не отвлекаясь от работы.
Так что, кто нибудь поможет сэкнмить время..
И скинуть готовый код....Вернее вписать строки в эту процедуру как это сделать.
Так что нужен только код по быстрому и безо всяких комментариев.
Буду признателен!

Bernet Подменю пользователя
сообщение 17.04.19, 11:51
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Gigi @ Сегодня, 12:03 * ,
У внешних обработок есть свойство "ИспользуемоеИмяФайла"
     Сообщить(ЭтотОбъект.ИспользуемоеИмяФайла);


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 17.04.19, 12:38
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Bernet @ Сегодня, 12:51 * ,
Большое спасибо ...
Только чуть не понятно...
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОбработкаАдрес();
КонецПроцедуры
&НаСервере
Процедура ОбработкаАдрес()
Сообщить(Объект.ИспользуемоеИмяФайла);    
КонецПроцедуры

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

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

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

andr_andrey Подменю пользователя
сообщение 17.04.19, 13:10
Сообщение #4

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Спасибо сказали: 166 раз
Рейтинг: 130.8

Цитата(Gigi @ 17.04.19, 13:38) *
самому не охота с этим париться и даже думать.

faceoff.gif


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Bernet Подменю пользователя
сообщение 17.04.19, 13:23
Сообщение #5

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

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

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

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


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 17.04.19, 14:47
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

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 Подменю пользователя
сообщение 17.04.19, 16:19
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

andr_andrey, вы будто автора впервые читаете crazy.gif

Gigi Подменю пользователя
сообщение 17.04.19, 17:01
Сообщение #8

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Vofka @ Сегодня, 17:19 * ,
Ладно ... всем еще раз большие извинения за такое агрессивное негодование ... на которое были объективные причины.
но вопрос открыт....
Поэтому все таки как получить адрес файла обработки с клиента ... которая на персональном ... не на сервере..
Вы конечно как угодно, но вопрос открыт...

Prospero Подменю пользователя
сообщение 17.04.19, 21:07
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 68
Из: Киев
Спасибо сказали: 15 раз
Рейтинг: 0

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

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

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

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

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


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


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


Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 17.04.19, 22:21
Сообщение #10

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

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




Да еще ... )))) По поводу ...
Цитата(Vofka @ 17.04.19, 17:19) *
andr_andrey, вы будто автора впервые читаете crazy.gif

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




Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 9:17
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!