|
Сохранить список фотографий для элемента справочника | ☑ | ||
|---|---|---|---|---|
|
0
dimm7310
26.03.08
✎
12:26
|
Необходимо в справочнике для каждого элемента добавить возможность созранения нескольких фото.
Вроде нашел рекомендации по этому вопросу , но что-то вываливается ошибка. Рекомендовано: "Создадим в справочнике "Какой-то" табличную часть "Файлы" с реквизитами "ИмяФайла" (Строка, 256) и "Файл" (ХранилищеЗначения). На форме элемента справочника "Какой-то" разместим табличное поле, ссылающееся на табличную часть "Файлы". Колонку "Файл" (реквизит табличной части) визуально выводить не надо Загрузка и сохранение файла в базе (по какой-нибудь кнопке) может выглядеть примерно так: Код: Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл для записи в базу данных"; Диалог.Фильтр = "Все файлы (*.*)"; Диалог.ПроверятьСуществованиеФайла = Истина; Диалог.ПредварительныйПросмотр = Истина; Если Диалог.Выбрать() = Ложь Тогда Возврат; КонецЕсли; ДвоичныеДанные = Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла); ЭлементыФормы.<ИмяТабличногоПоля>.ТекущиеДанные.Файл = Новый ХранилищеЗначения(ДвоичныеДанные); Файл = Новый Файл(Диалог.ПолноеИмяФайла); ЭлементыФормы.<ИмяТабличногоПоля>.ТекущиеДанные.ИмяФайла = Файл.Имя; " Вроде все так и сделал, добавит табличную часть, на форму вытащил табличное поле для которого в поле "Данные" указал -СправочникОбъект - Файлы. Добавил кнопку с вызовом процедуры. При попытке добавить выбранный файл вываливается ощибка "Справочник.Справочник2.Форма.ФормаЭлемента(12)}: Значение не является значением объектного типа (Файл) ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные.Файл = Новый ХранилищеЗначения(ДвоичныеДанные); " Что делаю не так? |
|||
|
1
ТелепатБот
гуру
26.03.08
✎
12:26
|
||||
|
2
dimm7310
26.03.08
✎
14:19
|
К сожалению подсказка тепепатбота не помогла.
Кто нибудь подскажет? В отладчике конструкция ЭлементыФормы.<ИмяТабличногоПоля>.ТекущиеДанные.Файл ругается таким же описанием "Значение не является значением объектного типа (Файл)" -что прописано не так? или может табличное поле связано с таблицей справочника неправильно (как я делал я описал выше) Пробовал на 8.0.18 и 8.1.6 - релизах ошибка одинаковая. Прошу сильно не пинать, только начинаю изучать 8-ку, прошу высказываться объективно. |
|||
|
3
dimm7310
26.03.08
✎
14:21
|
в предыдущем посте
ЭлементыФормы.<ИмяТабличногоПоля>.ТекущиеДанные.Файл нужно читать как ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные.Файл (разумеется я записал реальное название табличного поля) |
|||
|
4
dimm7310
26.03.08
✎
16:05
|
up
|
|||
|
5
dimm7310
26.03.08
✎
16:54
|
Не ужели ни кто не делал?
|
|||
|
6
mega_zombie
26.03.08
✎
17:04
|
Открой типовую торговлю - справочник "Номенклатура", например, да и посмотри, как реализовано.
|
|||
|
7
dimm7310
27.03.08
✎
08:36
|
Смотрел, там сохраняется только одна картинка, а мне нужно несколько. И там хранилище не в самом справочнике а в планевидовхорактеристик, при том подвязана еще куча всего, короче черт ногу сломит. Сходу через отладчик я всю цепочку так и не понял, просто там по ходу делается при выборе и сохранении еще куча разных движений, которые даже не связаны с выбором картинки, просто в силу своей универсальности.
Не знаю, если никто по этой схеме не подскажет придется копаться снова, просто по этой рекомендации все кратко и ничего лишнего. - Еще бы заработало, ток вообще было бы прекрасно. Эй гуру восьмерки, отзовись |
|||
|
8
Hadgehogs
27.03.08
✎
09:02
|
Маленький пушистый зверек.
У вас строк в табличной части нет! Надо либо самому создавать., либо программно Вот так- это с проверкой Если ЭлементыФормы.<ИмяТабличногоПоля>.ТекущиеДанные=Неопределено Тогда Сообщить("Добавьте и выберите курсором строку ТЧ, в которую надо картинку сохранить!"); КонецЕсли; Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл для записи в базу данных"; Диалог.Фильтр = "Все файлы (*.*)"; Диалог.ПроверятьСуществованиеФайла = Истина; Диалог.ПредварительныйПросмотр = Истина; Если Диалог.Выбрать() = Ложь Тогда Возврат; КонецЕсли; ДвоичныеДанные = Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла); ЭлементыФормы.<ИмяТабличногоПоля>.ТекущиеДанные.Файл = Новый ХранилищеЗначения(ДвоичныеДанные); Файл = Новый Файл(Диалог.ПолноеИмяФайла); ЭлементыФормы.<ИмяТабличногоПоля>.ТекущиеДанные.ИмяФайла = Файл.Имя; |
|||
|
9
Hadgehogs
27.03.08
✎
09:03
|
Маленький пушистый зверек - это не про вас..
А вот это вообще красиво! Файл = Новый Файл(Диалог.ПолноеИмяФайла); ЭлементыФормы.<ИмяТабличногоПоля>.ТекущиеДанные.ИмяФайла = Файл.Имя; |
|||
|
10
dimm7310
27.03.08
✎
10:05
|
(8) Спасибо, вроде заработало
|
|||
|
11
Hadgehogs
27.03.08
✎
10:08
|
Ну дык..
|
|||
|
12
dimm7310
27.03.08
✎
15:11
|
Еще вопрос: Не удается удалить текущую строку табличтого поля.
Поиском нашел похожий вопрос, там было рекомендовано использовать конструкцию: ЭлементыФормы.ТабличноеПоле1.Удалить(ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока); Но не работает, пишет: {Справочник.Справочник2.Форма.ФормаЭлемента(31)}: Метод объекта не обнаружен (Удалить) ЭлементыФормы.ТабличноеПоле1.Удалить(ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока); |
|||
|
13
Hadgehogs
27.03.08
✎
19:03
|
Если ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока<>Неопределено Тогда
ТабличноеПоле1.Удалить(ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока); КонецЕсли; |
|||
|
14
dimm7310
28.03.08
✎
08:51
|
ошибка
{Справочник.Справочник2.Форма.ФормаЭлемента(44,3)}: Переменная не определена (ТабличноеПоле1) <<?>>ТабличноеПоле1.Удалить(ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока); Я проверял через отладчик значение ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока - определено и доступны все реквизиты |
|||
|
15
iSeRG
28.03.08
✎
09:12
|
(7) вообще то, для номенклатуры можно загрузить много картинок, одна может быть основной. Смотри в панели кнопку "Файлы"
|
|||
|
16
dimm7310
28.03.08
✎
09:18
|
Да я уже начал делать так и все устраивает, только с удаление строки разобраться
|
|||
|
17
iSeRG
28.03.08
✎
09:20
|
Программно удалять? Стандартной кнопки "Удалить" не достатовчно?
|
|||
|
18
dimm7310
28.03.08
✎
09:21
|
да програмно
|
|||
|
19
dimm7310
28.03.08
✎
09:26
|
Я пробовал добавлять на панель кнопку удалить, но в интерфейсе пользователя она почему то недоступна, поэтому делаю програмно. Да и на будущее хочется разобраться.
|
|||
|
20
dimm7310
28.03.08
✎
09:31
|
Так с доступностью стандартной кнопки разобрался.
Но все же интересно как провильно прописывать програмное удаление |
|||
|
21
iSeRG
28.03.08
✎
09:38
|
Чтобы это работало
ТабличноеПоле1.Удалить(ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока); Необходимо чтобы элемент формы "ТабличноеПоле1" имел данные "ТабличноеПоле1" Т.е. надо использовать метод удалить того объекта который прописан в данных. |
|||
|
22
dimm7310
28.03.08
✎
10:21
|
"Т.е. надо использовать метод удалить того объекта который прописан в данных"
вот теперь получилось Файлы.Удалить(ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока); |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |