Хранение изображений в сетевом каталоге
Разработка - Универсальные функции
Опишу вкратце действия шаг за шагом но если что-то сложно написал, заранее прошу прощения.
1. Создаю константу ПутьККартинкамНаСервере. В нее пишу полный путь к сетевому каталогу. Выполняем код: Константы.ПутьККартинкамНаСервере.Установить("\\ВашПуть\");
2. Создаю регистр сведений ИзображенияНоменклатуры с двумя измерениями Объект (Справочник.Номенклатура), Путь (Строка, 255) и реквизитом Основное (Булево).
3. В регистр сведений ИзображенияНоменклатуры добавляю основную форму записи. После на форму кнопку ИзменитьКартинку. В модуль формы пишу код листинга 1.0 и привяжем событие Нажатие на кнопку.
//листинг 1.0
Функция КоличествоКартинок(Объект)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИзображенияНоменклатуры.Объект КАК Объект
|ИЗ
| РегистрСведений.ИзображенияНоменклатуры КАК ИзображенияНоменклатуры
|ГДЕ
| ИзображенияНоменклатуры.Объект = &Объект";
Запрос.УстановитьПараметр("Объект",Объект);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат.Количество();
КонецФункции
Функция ПолучитьЧастьСтрокиОтделеннойСимволом(Знач ИсходнаяСтрока, Знач СимволПоиска)
ПозицияСимвола = СтрДлина(ИсходнаяСтрока);
Пока ПозицияСимвола >= 1 Цикл
Если Сред(ИсходнаяСтрока, ПозицияСимвола, 1) = СимволПоиска Тогда
Возврат Сред(ИсходнаяСтрока, ПозицияСимвола + 1);
КонецЕсли;
ПозицияСимвола = ПозицияСимвола - 1;
КонецЦикла;
Возврат "";
КонецФункции
Процедура ИзменитьКартинкуНажатие(Элемент)
СтандартнаяОбработка = ложь;
ПутьКСерверу = Константы.ПутьККартинкамНаСервере.Получить();
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытияФайла.Заголовок = "Выберите файл с изображением";
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
ДиалогОткрытияФайла.ПредварительныйПросмотр = Истина;
Фильтр = "(*.jpg)|*.jpg,(*.png)|*.png";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ВыбранноеИзображение = ДиалогОткрытияФайла.ПолноеИмяФайла;
Иначе
Возврат;
КонецЕсли;
Артикул = Объект.Артикул;
КолКарт = КоличествоКартинок(Объект);
Расширение = ПолучитьЧастьСтрокиОтделеннойСимволом(ДиалогОткрытияФайла.ПолноеИмяФайла,".");
Имякартинки = "NPhoto_";
Если КолКарт = 0 тогда
ИмяНаСервере = Строка(Имякартинки)+СокрЛП(Артикул)+"."+Расширение;
Иначе
ИмяНаСервере = Строка(Имякартинки)+СокрЛП(Артикул)+"_"+Строка(КолКарт)+"."+Расширение;
КонецЕсли;
КопироватьФайл(ДиалогОткрытияФайла.ПолноеИмяФайла, ПутьКСерверу+ИмяНаСервере);
ПутьККартинке = ИмяНаСервере;
Путь = ПутьККартинке;
КонецПроцедуры
4. Добавляю общую форму ФормаИзображения с полем картинки ОсновноеИзображение и табличное поле Изображения которое будет содержать список для редактирования изображения. В модуле пишу листинг 2.0. Далее в свойстве табличного поля указываю ТипЗначения: РегистрСведенийСписок.ИзображенияНоменклатуры и событие ИзображенияОбработкаЗаписиНовогоОбъекта. И обязательно привязать одноименное событие формы ПриОткрытии. //листинг 2.0
Перем мКартинки;
Перем ПутьКСерверу;
Процедура ПриОткрытии()
УстОтбор(Изображения.Отбор,,"Объект", ВладелецФормы.Ссылка, Истина);
мКартинки = Добавленные.ПолучитьКартинкиИзРегистра(ВладелецФормы.Ссылка);
Если мКартинки.количество() > 0 тогда
ФайлКартинки = новый Файл(ПутьКСерверу+мКартинки[0].Путь);
Если ФайлКартинки.Существует() и СтрДлина(мКартинки[0].Путь) > 0 тогда
ЭлементыФормы.ОсновноеИзображение.картинка = новый Картинка(ПутьКСерверу+мКартинки[0].Путь);
КонецЕсли;
Иначе
ЭлементыФормы.ОсновноеИзображение.картинка = новый Картинка();
КонецЕсли;
ТекущиеИзображение = 0;
КонецПроцедуры
Процедура УстОтбор(Отбор,НастройкаОтбора=0,Поле="Объект",Значение,ОтключатьПустое=Ложь) Экспорт
Если Отбор.Найти(Поле) = Неопределено Тогда
Отбор.Добавить(Поле);
КонецЕсли;
Попытка
Отбор[Поле].ВидСравнения=ВидСравнения.Равно;
Исключение
Отбор[Поле].ВидСравнения=ВидСравнения.Содержит;
КонецПопытки;
Отбор[Поле].Значение=Значение;
Отбор[Поле].Использование=?(ОтключатьПустое,ЗначениеЗаполнено(Значение),Истина);
Если ЗначениеЗаполнено(НастройкаОтбора) Тогда
НастройкаОтбора[Поле].Доступность=Ложь;
КонецЕсли;
КонецПроцедуры
Процедура ИзображенияОбработкаЗаписиНовогоОбъекта(Элемент, Объект, СтандартнаяОбработка)
СтандартнаяОбработка = ложь;
КонецПроцедуры
функция ПолучитьКартинкиИзРегистра(объект)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИзображенияНоменклатуры.Путь
|ИЗ
| РегистрСведений.ИзображенияНоменклатуры КАК ИзображенияНоменклатуры
|ГДЕ
| ИзображенияНоменклатуры.Объект = &Объект
|
|УПОРЯДОЧИТЬ ПО
| ИзображенияНоменклатуры.Основное";
Запрос.УстановитьПараметр("Объект", Объект);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат;
КонецФункции
ПутьКСерверу = Константы.ПутьККартинкамНаСервере.Получить();
мКартинки = новый ТаблицаЗначений;
5. Идем в ФормуЭлемента номенклатуры и заменяем код в процедуре ОсновноеИзображениеНажатие(). Код в листинге 3.0//листинг 3.0
Процедура ОсновноеИзображениеНажатие(Элемент)
//Если Не РаботаСДиалогами.ЗаписатьНовыйОбъектВФорме(ЭтаФорма) Тогда
// Возврат;
//КонецЕсли;
//РаботаСФайлами.ОткрытьФормуИзображения(ЭтаФорма, ОсновноеИзображение, Ссылка);
Форма = ОткрытьФорму("ОбщаяФорма.ФормаИзображения", , ЭтаФорма);
КонецПроцедуры
Осталось только написать запрос получения изображения из регистра для показа в формах.
6. Так как форм где необходимо отобразить изображение может быть много, функции из листинга 4.0 поместим в общий модуль. У меня общий модуль называется "Добавленные".
// листинг 4.0
#Если Клиент Тогда
функция ПолучитьКартинкиИзРегистра(объект) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИзображенияНоменклатуры.Путь
|ИЗ
| РегистрСведений.ИзображенияНоменклатуры КАК ИзображенияНоменклатуры
|ГДЕ
| ИзображенияНоменклатуры.Объект = &Объект
|
|УПОРЯДОЧИТЬ ПО
| ИзображенияНоменклатуры.Основное УБЫВ";
Запрос.УстановитьПараметр("Объект", Объект);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат;
КонецФункции
Функция ПоказатьКартинкуИзРегистра(объект) Экспорт
ПутьКСерверу = Константы.ПутьККартинкамНаСервере.Получить();
мКартинки = ПолучитьКартинкиИзРегистра(объект);
Если мКартинки.количество() > 0 тогда
ФайлКартинки = новый Файл(ПутьКСерверу+мКартинки[0].Путь);
Если ФайлКартинки.Существует() и СтрДлина(мКартинки[0].Путь) > 0 тогда
Картинка = новый Картинка(ПутьКСерверу+мКартинки[0].Путь);
КонецЕсли;
Иначе
Картинка = новый Картинка();
КонецЕсли;
Возврат картинка;
КонецФункции
#КонецЕсли
7. Пример из модуля формы элемента Номенклатуры в листинге 5.0
// листинг 5.0 Процедура ПоказатьОсновноеИзображение() Экспорт Если ЭлементыФормы.ДействияФормы.Кнопки.Изображение.Пометка = Истина Тогда //Если мТекущееОсновноеИзображение = Неопределено Тогда // ЭлементыФормы.ОсновноеИзображение.Картинка = мПустаяКартинка; //Иначе // ЭлементыФормы.ОсновноеИзображение.Картинка = мТекущееОсновноеИзображение; //КонецЕсли; ЭлементыФормы.ОсновноеИзображение.Картинка = Добавленные.ПоказатьКартинкуИзРегистра(ЭтотОбъект.Ссылка); КонецЕсли; КонецПроцедуры // ПоказатьОсновноеИзображение()
П.С. не забываем дать разрешение на чтение и запись в сетевой каталог для изображений.
Вступайте в нашу телеграмм-группу Инфостарт
Изображения Номенклатура сетевой каталог
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Внешние источники данных Разработчик Аналитик Пользователь 1С:Предприятие 8 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)
Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.
35000 руб.
15.11.2022 33896 53 49
Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Разработчик 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)
Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.
85400 руб.
05.10.2022 14627 17 8
Розничная торговля Внешние источники данных Разработчик Бухгалтер 1С:Предприятие 8 1С:Розница 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Бухгалтерский учет Управленческий учет Платные (руб)
Загрузка данных продаж и инкассаций из сервисов Kit Vending/Kit Shop в 1С. Реализовано в виде Расширения. Мониторинг состояний торговых автоматов.
12200 руб.
10.06.2019 34709 49 25
Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Разработчик 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)
Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.
122000 руб.
19.08.2020 30686 28 3
Внешние источники данных Зарплата Бюджетный учет Разработчик Бухгалтер 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)
Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 7.хх учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.
85400 руб.
24.04.2017 57699 99 165
Производство готовой продукции (работ, услуг) Внешние источники данных 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)
Обработка предназначена для загрузки файлов, выгруженных из системы Базис-мебельщик, в справочник 1С "Спецификации" для последующих процессов учета и диспетчирования полуфабрикатов и изделий.
10370 руб.
24.06.2021 26879 66 55
Внешние источники данных Розничная торговля Разработчик Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 2.0 1С:Бухгалтерия 3.0 Здравоохранение, медицина, стоматология Розничная и сетевая торговля (FMCG) Россия Бухгалтерский учет Налоговый учет Платные (руб)
Внешняя обработка обмена данными между системами ЮНИКО и 1С:Бухгалтерия 3.0.
6100 руб.
01.11.2011 55520 129 81
Файловый обмен (TXT, XML, DBF), FTP Внешние источники данных Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Здравоохранение, медицина, стоматология Фармацевтика, аптеки Россия Платные (руб)
Внешняя обработка «Загрузка документов из eФарма» создана для программы 1С:Бухгалтерия предприятия, редакция 3.0 (версии Базовая, Проф и Корп). Обработка позволяет загружать документы в базу 1С из файлов выгрузки, имеющих формат .DBF, которые создаются в программе eФарма или eФарма2, а также из любых других программ, формирующих файлы-выгрузки с таким же расширением.
9760 руб.
15.03.2024 2897 5 0
В примере присутствует много листинга, но возможно чего-то не хватает; для этого случая хорошо было бы выложить cf.
Мне очень не понравилась практика названия реквизитов как "объект".
в общем, велосипед на любителя...
(10) Farzar, никакой экономии времени на резервное копирование нет, это миф. да и + к тому это не безопасно. вот нападет какой-нибудь вирь и пожрет ваши картинки и документы
Когда данные лежат в едином месте, как единое целое, вот тут вы экономите время на резервное копирование и перенос "в случае чего"...
У нас была похожая практика использования файлов на сетевом ресурсе, но это бред и мы от этого ушли, когда объём файлов стал > 350ГБ и число этих файлов перевалило за 2 000 000
Если сильно захотеть, можно использовать скульный FileStream, тогда и файлы получатся как файлы и вроде как бы в скуле.
Какой-нить пользователь удалит картинки с общего ресурса или переместит их в другое место и всё?
Или Вы не разрешаете пользователям добавлять номенклатуру и редактировать изображения?
Как это всё разворачивать быстро на другом сервере?
Если экономите место в базе, почему не вынести картинку в другую sql базу?
Если скорость то лучше переместить таблицу с файлами на другой раздел/сервер итд?
Мое личное мнение не претендующее на единственное верное.
Отвечу по пунктам:
Или Вы не разрешаете пользователям добавлять номенклатуру и редактировать изображения?
Если экономите место в базе, почему не вынести картинку в другую sql базу? - не вижу смысла хранить бинарные неструктурированные данные в скл.
Если скорость то лучше переместить таблицу с файлами на другой раздел/сервер итд? - более сложный вариант.
Реализовал аналогично в относительно небольшой организации (число номенклатурных позиций не больше 100 000), путь к сетевому каталогу храним в константе, картинка при выборе ее пользователем автоматом копируется на сетевой ресурс с именем, равным коду номенклатуры. Много лет - полет нормальный.
Для того, чтобы пользователи на сетевом ресурсе не грохнули картинки, защита от дурака - сетевой ресурс скрываем символом $ в имени ресурса.
1. хочется выкинуть лишнее и получить быстрое, в этом варианте БСП подходит только для самого минимума функций, по тому что БСП это более менее универсальный монстр с кучей "лишнего"
2. есть принципиальные расхождения требуемых алгоритмов от того что есть в типовых, в данном случае то же БСП не сильно подходит.
Первое что приходит на ум включить в план обмена регистр Изображения далее в константе ПутьККартинкамНаСервере указать новый путь.
Возможно несколько вариантов пути:
1. Дописать к плану обмена копирование файлов при отправке и при получении данных.
2. Простой если скорость интернета позволяет можно расшарить ресурс, не забывая о безопастности, поставить запрет на редактирования из подчиненной базы.
3. и тд.
БСП бывает разных версий. В УТ 10.3, УПП 1.3, Бух 2.0 она тоже есть, в них есть куча общих одинаковых для всех конфигураций модулей с полезными функциями.
Для управляемых форм в БСП есть механизмы по хранению файлами, но Вы пробовали посмотреть код, которым это реализовано? Там черт ногу сломает. А что если завтра БСП обновят? Все переписывать?
Для таких задач - только самописки потому, что:
1. Дешевле в разработке
2. Читабельный код, который через 2 года другой специалист поймет (если кодер не ушлепок:) )
3. Быстрее работает (100%)
4. Решает конкретную задачу, и делается под хотелки заказчика, а не универсально для всех на свете ООО. Самописка - всегда удобнее (если кодер не ушлепок:) )
5. Меньшая зависимость от смены релизов
Дешевле чем то что уже разработано? У вас разработка что бесплатная?
Ахаха написать что то свое всегда проще чем разобраться в чем то. Вы то точно умнее чем те кто написали эту недалекую конфигурацию.
Выше записать двоичные данные работает быстрей чем 1с 100% никто и не сомневался.
Знаете что я хочу сказать использование стандартных механизмов. Является правильным и хорошим тоном то что у разработчика нет желания разбираться со стандартным функционалом конфигурации это только его минус нежели плюс. Я вас умоляю написать свой велосипед с деревянными квадратными колесами вместо того чтобы ездить с остальными в метро еще тот обман жизни.
Работа с файлами в любом языке программирования очень сложная тем что при работе с файлами может возникнуть большое количество исключений которые надо обрабатывать а не бросать в надежде что ваши файлы не пропадут не попадут на бед окажутся теми что вы оставили все это остается на авось. Писать на 1с не зная БСП это как на С++ без STL.
Сравнение 1С(с ее БСП) и "С++ без STL", вообще, поражает дикостью.
В (21) верно подмечено. Сам не раз в этом убеждался. А работа "из коробки" у фирмы 1С имеет только смысл, что "вроде как работает и ладно".
По претензиям ко мне:
1. дешевле = потратить меньше времени на разработку. Такие мелкие задачи обычно оплачиваются по факту отработанного времени
2. я не ругал БСП, я просто довожу до сведенья незнающих, он сложна. Хотя, ДА - Я хорошего мнения о своих способностях, как разработчика. Да и опыт у меня богатый. Но авторов БСП не ставлю ниже себя:)
допустим ситуация:
прихожу к клиенту с почасовой оплатой, работа на месте, сколько отработал, столько получил, задачи заранее не известны, их много и они небольшие, меня просят к документу реализации чтоб можно было скан цеплять
что я должен делать? Пару часов смотреть в модули БСП, потом час вкрячивать туда своё и выдать потом решение не очень удобное в плане интерфеса? И объяснять менеджерам, что это не удобно, зато универсально. Да им пое**ть, что это решение универсально и будет рабоать на соседнем заводе так же хорошо, как в их фирме. им нужно хорошо у них, а директору надо быстро, потому что время - деньги.
нет я за 15 минут набрасываю регистр сведений и рисую в документе пару кнопок (добавить, просмотреть файл), выгоняю на 5 минут всех из базы, сохраняюсь проверяю и все! и перехожу к следующе задаче
в БСП учитывается много фишек, оно работает в web клиенте, в серверной базе, в файловой... все это круто, но надо решать конкретные задачи. Самые живучие решения - простые, их потом легко трансформировать под новые обстоятельства.
Ага. Был у меня случай с "чудо программистом". Писал все влет... регистры, документы, справочники. Просто скорость поражала и такое знание языка.
Хорошо, что нашел время потестить это чудо мысли. Я ужаснулся реализации. Там, при изменении конфы, пришлось бы каждый раз его вызывать.
Снес его поделку и решил, по максимуму, штатными средствами. Не так быстро, довольно прилично призадумываясь, что можно использовать из того, что уже есть.
Работает несколько лет и не просит кушать.
Так что использование штатных возможностей, на мой взгляд, должно быть не на последнем месте.
Есть справочник файлов. Есть доп.сведенья, в которых можно указывать тип значения - "файл". Это стандартные подсистемы.
Но, чтобы прикрепить файл к документы, надо:
1. Записать документ
2. Нажать кнопку доп сведенья
3. Начать редактировать сведенье, в котором лежит файл
4. Из списка всех файлов в справочнике выбрать нужный, а там его, т.е. нажать кнопку создать
5. Сохранить файл в справочнике.
6. Выбрать в доп сведенье элемент справочника.
Это не удобно. Каждый руководитель сам принимает решение "ломать" "не ломать". Если ломать, то он думает "А по чем?".
Ломание механизмов БСП - дорого, аукнется при обновлении еще дороже.
Не поверите да и всем доволен.
(30) insurgut, Вот с вами я полностью согласен. Ну чтобы не попасть в просак каркас следует знать типовой функционал. Причем я именно говорю о том какие функции торчат из БСП наружу. Что бы не написать свой деревянный велосипед.
В конечном итоге костыли всегда оставаться костылями. И потом при переходе при смене редакции тот кто будет это делать заставят вас икать за ваш костыль.
Одно дело, когда есть исходный функционал в конфигурации, тут да, моветон. Но когда конфигурацию необходимо этим функционалом дорабатывать, что бы потом его использовать - тут уже можно и поспорить :)
Именно, примерами, а не законченными решениями.
Поэтому "Все прекрасно работает", если предприятие подгонять под этот пример.
Так что все, кто хочет реально работать, берут напильник и пилят этот самый пример для себя.
Делается просто:
1. Добавляется доп.свойство справочника, хранящее строковый адрес картинки;
2. Добавляется внешняя печатная форма, привязанная к карточке номенклатуры, суть которой в работе с картинкой (выбор, показ, файловые операции);
3. Добавляется внешняя обработка, групповой менеджер картинок, настроек работы с ними (кои хранятся в общем хранилище настроек) и прочая.
Всё.
Но в примере минимум изменений кода в форме номенклатуры:
1. ПоказатьИзображение -
Форма = ОткрытьФорму("ОбщаяФорма.ФормаИзображения", , ЭтаФорма);2. ОткрытьИзображение -
ЭлементыФормы.ОсновноеИзображение.Картинка = Добавленные.ПоказатьКартинкуИзРегистра(ЭтотОбъект.Ссылка);Основной код в отдельном общем модуле и общей форме которые не будут обновляться.
Разница только в том где хранить код в отдельном общем модуле или во внешней обработке.
Попытка
//назад +1
Номер = ТекущиеИзображение -1;
ОснованаяКартинка = новый Картинка(ПутьКСерверу+мКартинки[Номер].Путь);
ЭлементыФормы.ОсновноеИзображение.картинка = ОснованаяКартинка;
ТекущиеИзображение = Номер;
Исключение
КонецПопытки;Просто стандартные методы забиваю оперативную память в хлам. Работать просто не возможно.
{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(56)}: Ошибка при установке значения атрибута контекста (Картинка)
ЭлементыФормы.ОсновноеИзображение.Картинка = Добавленные.ПоказатьКартинкуИзРегистра(ЭтотОбъект.Ссылка);
по причине:
Несоответствие типовСтранно правда.
ОсновноеИзображение имеет тип поле картинки.
Вот это все так же сделано.
Может кто подскажет кудой копать?
У Вас в коде нужно поправить в двух местах:
Если ФайлКартинки.Существует() и СтрДлина(мКартинки[0].Путь) > 0 тогдаЯ сначала поставил = , а как оказалось нужно было поставить <>.
Ну это не суть важно.
Мне интересно как открыть форму изображения например при клике на миниатюру в подборе или в справочнике.
П = Новый Структура("Ключ", ТекущиеДанныеСписка.Ссылка);
ФормаНоменклатуры = ПолучитьФорму("Справочник.Номенклатура.Форма.ФормаЭлемента", П);
Форма = ОткрытьФорму("ОбщаяФорма.ФормаИзображения", , ФормаНоменклатуры);То есть передаю владельца формы в третьем параметре, но ничего не открывается, а если перед выводом формы Открыть форму Номенклатуры:
ФормаНоменклатуры.Открыть();
Тогда открывается и форма элемента и форма Изображения
Можно ли как-то сделать чтобы просто открывалась форма изображения?
Теперь оперативная память не забивается.
Поле HTML рулит.
Если что обращайтесь. Подскажу.
1. все картинки хранятся на диске/фтп/облаке
2. в БД есть регистр/справочник, в котором хранится путь к картинке и на который ссылаются нужные справочники (товары, сертификаты, клиенты и прочее)
этот регистр/справочник общий для всех баз в распределенке
3. в БД есть "локальный кеш" справочник/регистр, в котором хранятся сами картинки, к которым было обращение за последний месяц.
Этот справочник исключительно локальный и в обменах не участвует. Его без проблем можно чистить каждый месяц или вообще не чистить.
Можно картинки в нем хранить не по дате обращения, а по количеству обращений.
Таки образом получаем и возможность хранения огромного количества картинок (любых файлов) без раздувания БД
И за счет локального "кэша" картинок в самой базе получаем быстрый доступ к часто используемым картинкам, что уменьшает количество тормозов при хранении в сети/облаке/фтп
Причем размером локального кеша (размером БД) можно управлять без потери данных.
Вариант с часто используемыми нормальный, НО в подборе используется отображение картинки и получается, что все картинки будут тащиться в кеш.
А позиций более 8000.
Рейтинг: 61
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 296744
Создание 15.08.14 17:17
Обновление 16.09.14 09:57
Просмотры 24766
Загрузки 0
Рейтинг
38
Комментарии 54
Код открыт Не указано
Рубрики Универсальные функции Внешние источники данных
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация
1С:Комплексная автоматизация 1.х
,
1С:Управление торговлей 10
,
1С:Управление производственным предприятием
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)