|
Выбрать файл картинки и установить реквизит в модуле команды | ☑ | ||
---|---|---|---|---|
0
vdeemer
09.08.21
✎
14:34
|
Добрый день!
Необходимо из формы объекта вызвать команду, которая выбирает файл логотипа и записывает его в реквизит. Создаю команду, в ее модуле начинаю писать: СтрокаФильтра = "Файлы картинок|*.BMP;*.DIB;*.RLE;*.JPG;*.JPEG;*.TIF;*.GIF;*.PNG;*.ICO;*.WMF;*.EMF"; ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов("Выберите файлы логотипа компании для учетной карточки", Ложь, СтрокаФильтра); НачатьПомещениеФайловНаСервер(Новый ОписаниеОповещения("ЗавершениеВыбораФайлов", ПараметрыВыполненияКоманды.Источник, Новый Структура("СсылкаОрганизации", ПараметрКоманды)),,,ПараметрыДиалога, ПараметрыВыполненияКоманды.Источник.УникальныйИдентификатор); &НаКлиенте Процедура ЗавершениеВыбораФайлов(ОписаниеФайла, ДополнительныеПараметры) Экспорт ... КонецПроцедуры Все хорошо, но при запуске выдается ошибка: Не найден экспортируемый метод: ЗавершениеВыбораФайлов. Я так понимаю, этот метод нужен в модуле формы? Если да, то это не мой вариант( Как можно решить задачу по-другому? |
|||
1
Мультук
гуру
09.08.21
✎
14:41
|
(0) Кто такой "объект" ? Справочник Контрагенты? Возможно стоит положить этот файл в его "присоединенные файлы" ?
|
|||
2
vdeemer
09.08.21
✎
14:45
|
(1) Нет, увы. И присоединенных файлов там нет, дважды увы((
|
|||
3
Kassern
09.08.21
✎
14:50
|
(0) "и установить реквизит в модуле команды"...Я правильно понимаю, вам нужно картинку в базу записать привязав к какому нить объекту?
|
|||
4
vdeemer
09.08.21
✎
14:51
|
(3) Да, в параметр команды передается ссылка элемента справочника
|
|||
5
Kassern
09.08.21
✎
14:55
|
(4) конфигурация какая?
|
|||
6
vdeemer
09.08.21
✎
14:56
|
(5) Управление учебным центром, но доработка в расширении
|
|||
7
Kassern
09.08.21
✎
14:58
|
(6) такую конфу не знаю, но обычно все просто реализуется. Картинка либо хранится в базе 1с в двоичных данных (поле с типом хранилище значений) либо внешне на диске, а в 1с лишь путь до картинки.
|
|||
8
Kassern
09.08.21
✎
14:59
|
(7) для разных объектов создают свой справочник для хранения картинок.
|
|||
9
acht
09.08.21
✎
15:03
|
(0) > НачатьПомещениеФайловНаСервер(Новый ОписаниеОповещения("ЗавершениеВыбораФайлов", ПараметрыВыполненияКоманды.Источник, Новый Структура("СсылкаОрганизации", ПараметрКоманды)),,,ПараметрыДиалога, ПараметрыВыполненияКоманды.Источник.УникальныйИдентификатор);
Оно, конечно, если писать все в одну строчку, быстрее работает. Но такая херня получается. Какие параметры должны быть у конструктора оповещения? |
|||
10
vdeemer
09.08.21
✎
15:13
|
(8) В расширении добавлен реквизит ХранилищеЗначения для логотипа
(9) Вызвавшая форма и доп.параметры, в них я передаю ссылку на элемент справочника |
|||
11
Kassern
09.08.21
✎
15:18
|
(10) ну и в чем проблема? Не можете туда файл записать? Файл надеюсь сервер видит, или хотя бы вы его Двоичные данные с клиента через временное хранилище на сервер передали?
|
|||
12
vdeemer
09.08.21
✎
15:21
|
(11) Проблема в том, что при запуске команды не найден экспортируемый метод, указанный в оповещении "ЗавершениеВыбораФайлов". Это, собственно, (0).
|
|||
13
Kassern
09.08.21
✎
15:22
|
(12) а без этой команды записать файл в хранилище никак?
|
|||
14
Kassern
09.08.21
✎
15:23
|
(12) и неужели в конфе нет вообще никаких объектов типовых для хранения картинок? Если есть то посмотрите как там реализована запись картинки в базу и сделайте по аналогии.
|
|||
15
vdeemer
09.08.21
✎
15:25
|
(13) Возможно, как. Только это был второй вопрос))
|
|||
16
vdeemer
09.08.21
✎
15:27
|
(14) Если иметь форму, откуда вызывать команду (например, свою обработку), то без проблем. Хочется сделать кнопкой команды в форме объекта, чтобы не лепить отдельную обработку для этого.
|
|||
17
Kassern
09.08.21
✎
15:35
|
(15) очень просто, создаем объект, куда хотим записать картинку, указываем ему имя, расширение, размер файла, владельца, помещаем наш файл в Двоичные данные, и эти данные запихиваем в хранилище значений реквизита объекта. Записываем полученный объект и вуаля, все готово. В дальнейшем, получаем по владельцу нужный объект с картинкой, из хранилища достаем ДД и выводим куда надо.
|
|||
18
vdeemer
09.08.21
✎
15:39
|
(17) В ЗавершениеВыбораФайлов это все у меня есть. Этого метода не видно, из-за этого (0)
|
|||
19
runoff_runoff
09.08.21
✎
15:42
|
Новый ОписаниеОповещения("ЗавершениеВыбораФайлов", ПараметрыВыполненияКоманды.Источник...
так вот за это "ПараметрыВыполненияКоманды.Источник" с учетом "Создаю команду, в ее модуле начинаю писать" УВОЛЕН сразу же.. |
|||
20
Kassern
09.08.21
✎
15:49
|
(18) не можете одолеть "НачатьПомещениеФайловНаСервер", то попробуйте ДиалогВыбораФайла, если файл выбран, тогда получаем ДД из файла на клиенте и ПоместитьВоВременноеХранилище. Создаем серверную процедуру куда передаем адрес во временном хранилище. Далее по нему уже на сервере получаем ДД и записываем во временный файл.
|
|||
21
vdeemer
09.08.21
✎
16:38
|
(19) я могу написать "за УВОЛЕН сразу же.." посылаю далеко и надолго, и? Если можете поделиться мудрым и вечным, с удовольствием буду внимать, а не можете - так и молодым у нас везде туда им и дорога.
(20) тонкости работы с временным хранилищем мне знакомы, спасибо, все дело в том, можно ли экспортируемый метод искать в модуле команды. |
|||
22
vdeemer
09.08.21
✎
16:47
|
(20) Это тоже не сработает, потому что для оповещения нужен экспортируемый метод, а он искаться будет там же (не в модуле команды).
|
|||
23
Kassern
09.08.21
✎
16:51
|
(22) а где вы в моем примере видите оповещение?
Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ВыбранФайл=Диалог.Выбрать(); Если ВыбранФайл Тогда Файл=Новый Файл(Диалог.ПолноеИмяФайла); ДД=Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла); Адрес=ПоместитьВоВременноеХранилище(ДД,УникальныйИдентификатор); ЗагрузитьФайлНаСервере(Адрес,Файл.Расширение); КонецЕсли; |
|||
24
Kassern
09.08.21
✎
16:52
|
(23) а на сервере в процедуре ЗагрузитьФайлНаСервере получаем временный файл и в него записываем ДД из временного хранилища
|
|||
25
runoff_runoff
09.08.21
✎
17:15
|
(21) ЭтотОбъект
|
|||
26
vdeemer
10.08.21
✎
07:56
|
(23) Это синхронный вызов, низзя
(25) А чем плох ПараметрыВыполненияКоманды.Источник? На ИТС (https://its.1c.ru/db/metod8dev/content/3585/hdoc) обработчик команды этим пользуется |
|||
27
ДенисЧ
10.08.21
✎
08:00
|
(26) Замени в (23)
ВыбранФайл=Диалог.Выбрать(); на ВыбранФайл= ждать Диалог.ВыбратьАсинх(); |
|||
28
vdeemer
10.08.21
✎
08:04
|
(27) дык платформа нужна свежая, кругом засада((
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |