— Хранение изображений в структуре каталогов, сходной с иерархией элемента;
— Использование Active-x броузера для отображения связанного рисунка;
Используемые компоненты: 1SQLite, 1CPP, Formex.
Используемые классы: УправлениеФормой.Привязки (из набора классов http://www.1cpp.ru/forum/YaBB.pl?num=1273512024)
Как-то понадобилось сделать привязку нескольких изображений с элементом справочника. На всякий случай сделал универсальное решение, которое и публикую.
Пара замечаний:
— У справочника, как объекта конфигурации должны быть заданы наименование и код (для имени файла изображения). Можно и это обойти, но я уже не загонялся.
— Можно немножко допилить, и разделять в корне каталоги еще и по флагу «ЭтоГруппа», но я с группами ничего не делал и не экспериментировал, не было особой нужды…
Плюсы:
— Более гибкий функционал для просмотра изображения, по сравнению с штатным (благодаря броузеру Active-x)
— Формат загружаемых изображений не ограничен штатным.
— При внедренном решении очень просто реализовать функционал галереи для любого справочника. Достаточно в нужном месте вызвать одну процедуру глобального модуля (например из кнопки на форме, как это показано в конфигурации).
— Изображения хранятся в структуре каталогов, сходной с иерархией элемента справочника базы, т.е. легко найти нужный файл вручную.
Минусы:
— Если это для кого-то еще минус — используются ВК, используются классы.
Планируется: навряд-ли доберусь, но была идея вообще привязать какую-нибудь галерею на js или jquery.
В качестве бонуса?)) — обработка в конфигурации «_ГалереяИзображений» — пример табличного поля с использованием поставщика SQLiteDataProvider.
А так, очень просто внедряется, дорабатывается и используется.
УправлениеФормой = СоздатьОбъект («УправлениеФормой»);
{Обработка._ГалереяИзображений.Форма.Модуль(86)}: Неудачная попытка создания объекта (УправлениеФормой)
На всякий случай перекачал и проверил, с 1 запуска все работает.
1. Возможно используете устаревшую версию 1С++
2. В конфигурации есть обработка для регистрации классов — DefCls. Проблема могла возникнуть из-за ее изменения, либо если была попытка объявить классы в внешнем DefCls.prm.
Попробуйте распаковать архив в пустой каталог, и запустить оттуда конфу, ничего не изменяя (Все необходимые ВК там уже есть).
+ В функции «ЗагрузкаВнешнихКомпонент()» — сначала загружаются ВК из каталога с программой, и только в том случае, если их нет — из каталога с базой. Если используете старый 1С++, и ВК находится по адресу КаталогПрограммы() + «dll1СPP.dll», попробуйте и
Да, конфигурация скачанная работает. DLL заменил. Попробовал вставить в свою. Проблема в DefCls. Что с ней делать?
Если есть внешний DefCls.prm, то дописать в него обьявления необходимых классов, сами классы тоже вынести во внешний файл.
Но, имхо, так неудобно, всегда загонял классы в саму конфу (кстати, специально не экспериментировал но по-моему так они и работают быстрее).
Внешнего DefCls.prm нет, а как его сделать?
(6) Если хотите использовать готовое решение, возьмите обработки из конфигурации (Классы — обработки с префиксом «_я_Класс_», и обработку описания классов — DefCls).
http://www.1cpp.ru/forum .
Все ответы на вопросы работы с классами ищите на
Попробовал разобраться с 1С++. Сделал как вhttp://www.script-coding.com/1cpp.html , однако, аналогичная ошибка, как с Галлереей. Может 1CPP.DLL не грузится? В глобальном модуле все описано… Не понимаю….
Спасибо. Разобрался. Была проблема с файлом DefCls. Работает. А что делать с Form.htm?
(8) Эта ошибка связана с неверным описанием класса в DefCls. Я уже писал, что проще — возьмите из конфы обработки все, там уже все что надо есть.
Иначе в 1С, Помощь -> О программе -> Закладка 1С++ — посмотрите загруженные классы, посмотрите то-же самое в конфе галереи.
(9) Ничего не делать. Form.htm нужен для отображения картинки в актив-икс броузер.