Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Выбрать файл картинки и установить реквизит в модуле команды

Выбрать файл картинки и установить реквизит в модуле команды
Я
   vdeemer
 
09.08.21 - 14:34
Добрый день!
Необходимо из формы объекта вызвать команду, которая выбирает файл логотипа и записывает его в реквизит.
Создаю команду, в ее модуле начинаю писать:

СтрокаФильтра = "Файлы картинок|*.BMP;*.DIB;*.RLE;*.JPG;*.JPEG;*.TIF;*.GIF;*.PNG;*.ICO;*.WMF;*.EMF";
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов("Выберите файлы логотипа компании для учетной карточки", Ложь, СтрокаФильтра);
НачатьПомещениеФайловНаСервер(Новый ОписаниеОповещения("ЗавершениеВыбораФайлов", ПараметрыВыполненияКоманды.Источник, Новый Структура("СсылкаОрганизации", ПараметрКоманды)),,,ПараметрыДиалога, ПараметрыВыполненияКоманды.Источник.УникальныйИдентификатор);


&НаКлиенте
Процедура ЗавершениеВыбораФайлов(ОписаниеФайла, ДополнительныеПараметры) Экспорт
...
КонецПроцедуры


Все хорошо, но при запуске выдается ошибка: Не найден экспортируемый метод: ЗавершениеВыбораФайлов.
Я так понимаю, этот метод нужен в модуле формы? Если да, то это не мой вариант( Как можно решить задачу по-другому?
   Мультук
 
1 - 09.08.21 - 14:41
(0) Кто такой "объект" ? Справочник Контрагенты? Возможно стоит положить этот файл в его "присоединенные файлы" ?
   vdeemer
 
2 - 09.08.21 - 14:45
(1) Нет, увы. И присоединенных файлов там нет, дважды увы((
   Kassern
 
3 - 09.08.21 - 14:50
(0) "и установить реквизит в модуле команды"...Я правильно понимаю, вам нужно картинку в базу записать привязав к какому нить объекту?
   vdeemer
 
4 - 09.08.21 - 14:51
(3) Да, в параметр команды передается ссылка элемента справочника
   Kassern
 
5 - 09.08.21 - 14:55
(4) конфигурация какая?
   vdeemer
 
6 - 09.08.21 - 14:56
(5) Управление учебным центром, но доработка в расширении
   Kassern
 
7 - 09.08.21 - 14:58
(6) такую конфу не знаю, но обычно все просто реализуется. Картинка либо хранится в базе 1с в двоичных данных (поле с типом хранилище значений) либо внешне на диске, а в 1с лишь путь до картинки.
   Kassern
 
8 - 09.08.21 - 14:59
(7) для разных объектов создают свой справочник для хранения картинок.
   acht
 
9 - 09.08.21 - 15:03
(0) > НачатьПомещениеФайловНаСервер(Новый ОписаниеОповещения("ЗавершениеВыбораФайлов", ПараметрыВыполненияКоманды.Источник, Новый Структура("СсылкаОрганизации", ПараметрКоманды)),,,ПараметрыДиалога, ПараметрыВыполненияКоманды.Источник.УникальныйИдентификатор);

Оно, конечно, если писать все в одну строчку, быстрее работает. Но такая херня получается.
Какие параметры должны быть у конструктора оповещения?
   vdeemer
 
10 - 09.08.21 - 15:13
(8) В расширении добавлен реквизит ХранилищеЗначения для логотипа
(9) Вызвавшая форма и доп.параметры, в них я передаю ссылку на элемент справочника
   Kassern
 
11 - 09.08.21 - 15:18
(10) ну и в чем проблема? Не можете туда файл записать? Файл надеюсь сервер видит, или хотя бы вы его Двоичные данные с клиента через временное хранилище на сервер передали?
   vdeemer
 
12 - 09.08.21 - 15:21
(11) Проблема в том, что при запуске команды не найден экспортируемый метод, указанный в оповещении "ЗавершениеВыбораФайлов". Это, собственно, (0).
   Kassern
 
13 - 09.08.21 - 15:22
(12) а без этой команды записать файл в хранилище никак?
   Kassern
 
14 - 09.08.21 - 15:23
(12) и неужели в конфе нет вообще никаких объектов типовых для хранения картинок? Если есть то посмотрите как там реализована запись картинки в базу и сделайте по аналогии.
   vdeemer
 
15 - 09.08.21 - 15:25
(13) Возможно, как. Только это был второй вопрос))
   vdeemer
 
16 - 09.08.21 - 15:27
(14) Если иметь форму, откуда вызывать команду (например, свою обработку), то без проблем. Хочется сделать кнопкой команды в форме объекта, чтобы не лепить отдельную обработку для этого.
   Kassern
 
17 - 09.08.21 - 15:35
(15) очень просто, создаем объект, куда хотим записать картинку, указываем ему имя, расширение, размер файла, владельца, помещаем наш файл в Двоичные данные, и эти данные запихиваем в хранилище значений реквизита объекта. Записываем полученный объект и вуаля, все готово. В дальнейшем, получаем по владельцу нужный объект с картинкой, из хранилища достаем ДД и выводим куда надо.
   vdeemer
 
18 - 09.08.21 - 15:39
(17) В ЗавершениеВыбораФайлов это все у меня есть. Этого метода не видно, из-за этого (0)
   runoff_runoff
 
19 - 09.08.21 - 15:42
Новый ОписаниеОповещения("ЗавершениеВыбораФайлов", ПараметрыВыполненияКоманды.Источник...
так вот за это "ПараметрыВыполненияКоманды.Источник" с учетом "Создаю команду, в ее модуле начинаю писать" УВОЛЕН сразу же..
   Kassern
 
20 - 09.08.21 - 15:49
(18) не можете одолеть "НачатьПомещениеФайловНаСервер", то попробуйте ДиалогВыбораФайла, если файл выбран, тогда получаем ДД из файла на клиенте и ПоместитьВоВременноеХранилище. Создаем серверную процедуру куда передаем адрес во временном хранилище. Далее по нему уже на сервере получаем ДД и записываем во временный файл.
   vdeemer
 
21 - 09.08.21 - 16:38
(19) я могу написать "за УВОЛЕН сразу же.." посылаю далеко и надолго, и? Если можете поделиться мудрым и вечным, с удовольствием буду внимать, а не можете - так и молодым у нас везде туда им и дорога.
(20) тонкости работы с временным хранилищем мне знакомы, спасибо, все дело в том, можно ли экспортируемый метод искать в модуле команды.
   vdeemer
 
22 - 09.08.21 - 16:47
(20) Это тоже не сработает, потому что для оповещения нужен экспортируемый метод, а он искаться будет там же (не в модуле команды).
   Kassern
 
23 - 09.08.21 - 16:51
(22) а где вы в моем примере видите оповещение?
Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыбранФайл=Диалог.Выбрать();
    Если ВыбранФайл Тогда 
        Файл=Новый Файл(Диалог.ПолноеИмяФайла);
        ДД=Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла);
        Адрес=ПоместитьВоВременноеХранилище(ДД,УникальныйИдентификатор);
        ЗагрузитьФайлНаСервере(Адрес,Файл.Расширение);
    КонецЕсли;
   Kassern
 
24 - 09.08.21 - 16:52
(23) а на сервере в процедуре ЗагрузитьФайлНаСервере получаем временный файл и в него записываем ДД из временного хранилища
   runoff_runoff
 
25 - 09.08.21 - 17:15
(21) ЭтотОбъект
   vdeemer
 
26 - 10.08.21 - 07:56
(23) Это синхронный вызов, низзя
(25) А чем плох ПараметрыВыполненияКоманды.Источник? На ИТС (https://its.1c.ru/db/metod8dev/content/3585/hdoc) обработчик команды этим пользуется
   ДенисЧ
 
27 - 10.08.21 - 08:00
(26) Замени в (23)
ВыбранФайл=Диалог.Выбрать();
на ВыбранФайл= ждать Диалог.ВыбратьАсинх();
   vdeemer
 
28 - 10.08.21 - 08:04
(27) дык платформа нужна свежая, кругом засада((


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.