Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 11:20

Двоичные данные обработки

Автор Oldman06, 14 июл 2017, 11:49

0 Пользователей и 1 гость просматривают эту тему.

Oldman06

Приветствую. Подскажите пожалуйста, как во внешней обработке получить двоичные данные этой самой обработки? Если она открыта из файла, то можно воспользоваться свойством "ИспользуемоеИмяФайла", а если она сама создана из двоичных данных?
Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанныеОбработки);
ОбъектОбработки = ВнешниеОбработки.Подключить(Адрес, , Ложь, ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений());

Oldman06

При создании обработки из двоичных данных в реквизите "ИспользуемоеИмяФайла" содержится значение типа "e1cib\tempstorage\....". Похоже на адрес во временном хранилище но из него не получается ничего получить.

wise

(0) Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанныеОбработки, UIN);

и получай до конца сеанса.
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Oldman06

Цитата: wise от 14 июл 2017, 13:43
(0) Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанныеОбработки, UIN);

и получай до конца сеанса.
Это замечательно. Но вопрос в том, как из САМОЙ обработки получить ее двоичные данные, когда она уже загружена, причем не важно, из файла на диске или из двоичных данных.

wise

(3) что значит "получить"..?
как их читать? или изменять..?
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Oldman06

Цитата: wise от 14 июл 2017, 14:40
(3) что значит "получить"..?
как их читать? или изменять..?
Например, грубо говоря, я открываю внешнюю обработку, открывается в ней форма с кнопкой "Установить", по которой эта обработка подключается к базе. Вот пример кода из обработки.
&НаКлиенте
Процедура УстановитьОбработкуЛабораторногоИсследования()
ИмяФайлаОбработчика = ПолучитьИмяФайлаОбработки();
Если ПодключитьРасширениеРаботыСФайлами() Тогда
ПомещенныеФайлы = Новый Массив;
Если ПоместитьФайлы(, ПомещенныеФайлы, ИмяФайлаОбработчика, Ложь, ЭтаФорма.УникальныйИдентификатор) Тогда
АдресВременногоХранилища = ПомещенныеФайлы[0].Хранение;
Если Не УстановитьОбработкуЛабораторногоИсследованияНаСервере(АдресВременногоХранилища) Тогда
Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияПредупрежденияОбОшибке", ЭтаФорма);

ПоказатьПредупреждение(Оповещение, "Ошибка при регистрации обработчика!", 0, "Ошибка");

КонецЕсли;

КонецЕсли;

КонецЕсли;

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

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

И это работает, если обработка открыта из файла на диске - в свойстве "ИспользуемоеИмяФайла" путь к файлу. А что делать если обработка создана из двоичных данных, не важно откуда полученных? Как в этом случае получить ее двоичные данные? В свойстве объекта обработки "ИспользуемоеИмяФайла" ссылка на что?

alex0402

Цитата: Oldman06 от 14 июл 2017, 15:05А что делать если обработка создана из двоичных данных, не важно откуда полученных?
сохранить на диск и потом подключать, создавать обработку.
Спасибо за Сказать спасибо

Oldman06

Цитата: alex0402 от 14 июл 2017, 16:29
Цитата: Oldman06 от 14 июл 2017, 15:05А что делать если обработка создана из двоичных данных, не важно откуда полученных?
сохранить на диск и потом подключать, создавать обработку.

Это не подходит. Я объясню что мне нужно. Я хочу использовать фоновые задания в этой обработке. Но процедура для фонового задания должна находиться в общем модуле. А мне нужно чтобы исполнялась процедура объекта этой обработки. Поэтому я хочу в общем модуле сделать процедуру фонового задания в которую через параметры "как-то" передам ссылку на нужную мне процедуру. Объект обработки я передать не могу - он не сериализуется, поэтому я думал передать ссылку на двоичные данные обработки и там уже создать объект обработки и вызвать выполнение экспортной процедуры его модуля объекта. Может есть другой способ это осуществить?

temrmal

Цитата: Oldman06 от 14 июл 2017, 16:59
Цитата: alex0402 от 14 июл 2017, 16:29
Цитата: Oldman06 от 14 июл 2017, 15:05А что делать если обработка создана из двоичных данных, не важно откуда полученных?
сохранить на диск и потом подключать, создавать обработку.

Это не подходит. Я объясню что мне нужно. Я хочу использовать фоновые задания в этой обработке. Но процедура для фонового задания должна находиться в общем модуле. А мне нужно чтобы исполнялась процедура объекта этой обработки. Поэтому я хочу в общем модуле сделать процедуру фонового задания в которую через параметры "как-то" передам ссылку на нужную мне процедуру. Объект обработки я передать не могу - он не сериализуется, поэтому я думал передать ссылку на двоичные данные обработки и там уже создать объект обработки и вызвать выполнение экспортной процедуры его модуля объекта. Может есть другой способ это осуществить?

Покопай стандартные конфигурации. Особенно ЗУП. Там есть модуль Длительные операции. Принцип такой же. Если отчет долгий, то он переключается на выполнение фоновым заданием. Передается как то форма и через нее вызывается процедура. Как то грубо и примерно. Но если взять внешнюю, то также происходит

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск