gifts2017

[ОБУЧАЛОВКА] Каким макаром к номенклатуре привязать картинку...?

Опубликовал Сергей (Che) Коцюра (CheBurator) в раздел Программирование - Практика программирования

Последнее время, буквально в течение недели, выплывает постоянно один и тот же вопрос: как показать картинку в справочнике (товаров, сотрудников и т.д.)..? Странный вопрос... На дисках ИТС описано это наверное с начала 2000-х годов, плюс в ЗиК карточка сотрудника показывается... или я отстал от жизни...? Как всегда - парить себе мозги не будем, надо картинку - сделаем!
Делаем - как всегда - без лишней головной боли (глубокое имхо)...
1. Подготовим в глобальном модуле несколько вспомогательных процедур и функций...

Глоб.переменные и вспомогательные процедуры/функции
Теперь самое главное: я - сторонник простых решений (в моем понимании, а оно (мое понимание) - не обязано совпадать с чьим-то другим... Там, где возможно обойтись без изменения схемы данных конфигурации - я стараюсь так и сделать... Поэтому принимаем ключевое решение: связь номенклатуры с картинкой будет осуществляться "административно", т.е. работаем так КАК НАДО, по кривым ручкам - бьём палкой или, как говорится, "штраф - лопатой по е...у". А "как надо" в нашем случае означает следующее: в качестве имени картинки используется код номенклатуры из справочника товаров. Все. Никаких дополнительных записей. Не устраивает код - используйте артикул, ШК базовой единиц и прочие уникальные идентификаторы товаров, например, как описано здесь: http://www.infostart.ru/profile/174/projects/1387/ - там же описаны и прочие соображения, относящиеся к излагаемому сейчас "решению", повторять здесь их не будем... отметим только следующее соображение: изображения товаров будем хранить в отдельной папочке типа КаталогИБ\IMAGES.DIR\
Дополнительно заметим, что картинка может быть задана в одном из нескольких поддерживаемых 1Ской форматов - зададим (на всякий случай - а они бывают разные... ;-) перечень таких форматов в порядке "удобства" форматов картинок...
Итак, некие начальные действия мы сделаем в самом конце процедуры ПриНачале работы системы:

При старте системы подготовим некоторые данные...
После того, как выполнили подготовительные "обслуживающие действия, приступим непосредственно к самому показу картинки. Пока делаем по-простому: картинку товара будем показывать в карточке товара (форма элемента справочника). Для этого откроем в конфигураторе форму элемента нужного справочника и сдизайнерим картинку в нужном месте: кладем на форму объект картинка, никакую реальную картинку на объект не назначаем, даем объекту "картинка" индентификатор (_имТовар) - по этому идентификатору будем далее "манипулировать" картинкой:

Карточка товара
Предусмотрим ситуацию необходимости смены картинки "на лету" при изменении кода товара:
(см.Потерявшуюся картинку в конце статьи)
Привязка картинки к товару идет по коду товара...
При открытии карточки товара (формы элемента справочника) дадим команду "привязать" картинку товара к текущей открытой карточке - вызовем процедуру чтения картинки из папки с картинками:

Привязываем картинку к товару при открытии карточки товара...
Непосредственно сами процедуры, показывающие картинку:

Процедуры показа картинки
Вот, собственно и все...
Напоследок обмолвимся: в дизайне карточки товара есть кнопарик "IMG" с пиктограмкой дискеты - эта кнопка предназначена для копирования текущей картинки товара в произвольную папку (за это отчечает процедура, повешенная на эту кнопку: _кнСохранитьКартинку()... ) Для чего? а для чего угодо: 1. чтоб было 2. чтоб в загашник отложить 3. чтоб потом прикрепить картинку ручками в аутлуке и отправить письмом назойливому клиенту... 4 и т.д.
Ниже приведен просто ряд картинок, на "живой базе" демонстрирующий описанные выше приемы...

Пример показа картинки
Незначительным усовершенствованием вносится функционал нескольких" альтернативных картинок для одной номенклатурной позиции... Кому будет интересно - заказывайте описание .. ;-)

На финише "урока" отмечу следующее: показ картинок - это один из "велосипедов", через которые проходит 1Сник на своем пути наряду с перенумерацями/сдвижками доков/поиском дубликатов и т.д.
Вышеприведенный материал никоим образом не претендует на универсальность/оригинальность/красоту... Просто маленький "урок-пример" - кому понравилось/пригодилось - хвалит и плюсует, кому не понравилось - тихо идет мимо... ;-)
мелкое развитие описанногй выше идеи - нескольо альтернативных картинок к одному товару...

без картинки

Основная картинка

выбор показываемой картинки

пример

пример

пример

пример

Потерявшаяся картинка

См. также

Подписаться Добавить вознаграждение

Комментарии

1. ineoosaki (ineoosaki) 10.02.08 02:41
Предлагаемое решение изменяет типовую конфу, хотя есть решения которые используют штатные функции современных типовых конфигураций 7.7.
Например здесь находиться одно из таких решений:
http://infostart.ru/forum/read.php?21,16144
2. ineoosaki (ineoosaki) 10.02.08 02:45
Кстати, одна из удачных реализаций привязки изображений к объектам в базе реализована в типовой конфе 1С:Деньги.
3. Сhe Burashka (CheBurator) 10.02.08 02:46
(1) Полностью согласен, в своей конфигурации у меня через внешние печатные формы почти все делается...
А данная статья - в первую очередь как пример, "разжевывание" как это сделать...
4. Сhe Burashka (CheBurator) 10.02.08 02:54
(2) а в чем там "фишка" удачной реализации...?
5. ineoosaki (ineoosaki) 10.02.08 03:21
Насчет "удачной", то я конечно немного загнул. :)
Но, в приниципе, довольно удобно, ИМХО.
6. Аркадий Кучер (Abadonna) 10.02.08 05:25
Можно сделать всё изложенное, совсем не трогая стандартную конфу
7. Сhe Burashka (CheBurator) 10.02.08 12:20
8. Олег Пономаренко (O-Planet) 11.02.08 19:57
9. Олег Пономаренко (O-Planet) 11.02.08 19:59
Я балдею!!! А почему по табуляции срабатывает "Добавить комментарий!? 0_о
10. Олег Пономаренко (O-Planet) 11.02.08 20:02
Хотел сказать, что совсем не удивлюсь, если рейтинг этой статьи будет 500 и выше :) А что? Суть и "урок" предельно ясны, так что каждый может почувствовать себя гением:

Имя файла = код товара . bmp

11. Олег Пономаренко (O-Planet) 11.02.08 20:06
Короче, оскудение нравов - налицо! Зря не назвал "Финт ушами с кодом товаров" ;)
12. Sasha_H (logarifm) 13.02.08 23:16
Я вообще не понял прикола...
13. Sasha_H (logarifm) 13.02.08 23:16
а... эта наверна автар от скуки пожестил ...
14. Сhe Burashka (CheBurator) 13.02.08 23:27
15. Аркадий Кучер (Abadonna) 14.02.08 04:41
>// ДОБАВЛЕНО НЕТИПОВОЕ
>_сруЗагрузитьКартинку()
_ссуЗагрузитьКартинку() - может по приличнее бы было ;)))))
wellsy; mazahaka-7; JohnyDeath; +3 Ответить
16. Евгений Мартыненков (JohnyDeath) 14.02.08 09:31
17. miraj_mv (miraj_mv) 14.02.08 12:09
а у меня чето не выходит. я не волшебник и только учусь, и не выходит
18. Venger (venger) 24.02.08 21:09
19. Сhe Burashka (CheBurator) 24.02.08 22:45
2Venger: да, схожие задачи порождают схожие решения, как правило... Целью данной статьи были пошаговые инструкции одного из методов привязки номенклатуры...
20. Maljaev (maljaev) 06.03.08 17:31
Сhe Burashka, если ты к своему просмотру изображений прикрутишь еще эту вещь http://infostart.ru/projects/1747/ то круче решения для 1С 7.7 не найдешь наверное. :) А вот вопрос о том, как хранить картинки - спорный, т.к. в некоторых случаях (УРБД) картинки лучше хранить в базе, а не в файлах.
21. Сhe Burashka (CheBurator) 07.03.08 00:43
2Maljaev: cgc, за ценныую ссылку.. прошла мимо меня
22. DMV78 (dmv78) 05.04.08 17:11
Обмен при УРБД, обработка FTP - обмена, когда надо обновит каталог картинок! А хранить картинки на форме при наличии 22 000 наименований позиций, база может стать неподъемной!
23. Сhe Burashka (CheBurator) 05.04.08 17:48
невтыкнул... это про что? тут как раз картинки нигде в базе не храняться...
24. Alexin (Alexin) 05.01.09 13:42
Все хорошо, _no.bmp отображается, но вот только не понятно как загружать картинку для товара?
25. Сhe Burashka (CheBurator) 05.01.09 20:07
(24) "...в качестве имени картинки используется код номенклатуры из справочника товаров."
"...изображения товаров будем хранить в отдельной папочке типа КаталогИБ\IMAGES.DIR\"
26. Евгения (Enya) Воробьёва (Enya_06) 26.02.09 12:02
...все сделала как написано..но что то не получаеся????? папка IMAGE.DIR должна содержать файл no.bmp?????
Вылазиет ошибка
_имТовар.Загрузить(_глПутьКартинок+"_no.bmp");
{Справочник.Номенклатура.Форма.Модуль(14)}: Общая файловая ошибка при доступе к C:\Программы\1С\Базы\Основная\IMAGE.DIR\_no.bmp
27. Епрст (Ёпрст) 26.02.09 12:14
(26) Вам же полный путь до файла картинки написан
"C:\Программы\1С\Базы\Основная\IMAGE.DIR\_no.bmp"

соответственно файло "_no.bmp "
28. sergin 12.11.09 13:13
А что надо сделать, чтобы картинки выводились не по Коду, а по Артикулу?

Простите, может это глупый вопрос, но у меня не выходит. С кодом все работает отлично, а с Артикулом нет :cry:
29. Иван Новожилов (novinnik) 14.01.10 16:40
Сделал все как написано, скинул пару файлов *.png (00000047.png) в папку IMAGE.DIR но при открытии данных кодов в справочнике номенклатуры вывод картинку _no.bmp
30. Сергей (Che) Коцюра (CheBurator) 15.01.10 01:27
(29) Формат PNG штатно 7.7 не поддерживается, в примере вставлен, так сказать, на будущее. Так что картинки в формате jpg размещать придется... Если очень критично и до зарезу надо в png - то придется допрограммить немного...
novinnik; +1 Ответить
31. Иван Новожилов (novinnik) 15.01.10 09:44
разместил в jpg, все равно отображается только пустая картинка (_no.bmp)
32. Дима Вест (westDimon) 20.01.10 16:11
не могу понять :oops: , виставь плиз весь прогр. модуль.
33. Сергей (Che) Коцюра (CheBurator) 20.01.10 16:57
34. Дима Вест (westDimon) 20.01.10 17:07
(33) при исп. примера появляются ошибки, виставь плиз весь код
35. Сергей (Che) Коцюра (CheBurator) 20.01.10 17:52
код ошибки? - скорее всего недословно скопипастили...
36. Евгений Глинов (kitaecina) 22.02.10 20:41
Не могли бы ответить копипастеру о том, как можно вывести в печати прайс-листа эти картинки?
37. Сергей (Che) Коцюра (CheBurator) 22.02.10 20:44
(36) как обычно.. вставляешь объект "картинка" и при выводе назначаешь на объект текущую картинку.. что не получается?
38. Евгений Глинов (kitaecina) 22.02.10 20:55
Я слабый специалист, как вставить картинку в печатную форму, чтобы её вывело на печать? нельзя ли поподробнее ...
P.S. Ваш метод понравился и желание большое настроить для использования у себя, хотелось бы самому...
39. Сергей (Che) Коцюра (CheBurator) 22.02.10 21:06
создаешь печатную форму типа
	Таб = СоздатьОбъект("Таблица");
	Таб.ИсходнаяТаблица("Спецификация");

кладешь в печатную форму в ячейку объект "картинка", растягиваешь под нужный "типовой" размер, на обьекте правой кнопкой мыши, свойства, пишешь в закладке "Текст" так:
ИзображениеЗагрузить(Таб.ТекущийОбъект)
.
в коде пишешь функцию:
Функция ИзображениеЗагрузить(Куда)
	Куда.Загрузить(ТекущийФайлС);
    Куда.РежимРисования(3);
КонецФункции //ИзображениеЗагрузить()

.
перед выводом секции печатной формы определяешь содержание глобальной переменной ТекущийФайлС - должна содержать полный путь к файлу изображения.
40. Евгений Глинов (kitaecina) 22.02.10 21:28
Забыл уточнить, применяю для ТиС 960
Так вот вопрос и возникает как определить перед печатью путь к файлу картинки,

ТекущийФайлС= _глПутьКартинок+ТекЭлем.Код+_глИерархияТиповКартинок.Получить(""+_ТипКартинки<<?>>);
{}: Переменная не определена (_ТипКартинки)
При проверке модуля обнаружены синтаксические ошибки!

Понимаю что неправильно делаю что-то, а не могу понять что...
41. Сергей (Che) Коцюра (CheBurator) 22.02.10 21:39
(40) тебе система написала: переменная не определена. ищи
42. Евгений Глинов (kitaecina) 23.02.10 08:55
Спасибо, все получилось...
43. Виталий Шабан (Yuvilon) 06.06.10 12:16
Спасибо, тема супер, оч помогла!!!
44. Виталий Шабан (Yuvilon) 06.06.10 13:10
Что-то не соображаю, я новечек сдесь, и не представляю как описть эту функцию для отображения в подборе!! Оч буду рад в Помощи!!
45. Александр Малимон (sanich67) 17.12.10 01:50
Всё сделал, получилось очень красиво
вот только сохраненный прайс с картинками при открытии картинку искажает
46. Александр Малимон (sanich67) 17.12.10 01:51
Yuvilon,
ты сделал то что хотел?
47. max loginov (pinachet) 19.07.11 09:15
ребят, сделал все как на картинках но почему то ничегоне получилось( пишет одни ошибки.
48. Vasiliy Nic (asverus) 21.11.11 01:13
Инструкция работает реально, провозился весь день... были непонятные моменты, т.к. я чайник в 1с'е (а хочется, что бы удобно было работать и мозги на всякую ерунду не парить, ни себе - ни другим).

Прошу продолжения банкета на предмет прикрепления нескольких изображений.

P.S. - это вообще вторая инструкция, которая запустилась и заработала; и нормально заработала только эта... возможно, платные модули, но честно говоря - уже натыкался на то, что и за деньги получаешь дохлого кота в мешке и ничего не вернешь. вставил в ТиС 7.7
Для программера и знатоков - проблем конечно нет, но для средних пользователей с "интуицией" вполне; для новичков - конечно непонятно будет что куда вставлять.
Спасибо.
49. Максим Лакетченко (ideapromotion) 10.01.13 16:05
Как скачать можно это решение?
50. adm1n b3k (adm1nb3k) 10.03.13 20:19
Вопрос. Тут описано как сохранить фото. А есть ли обратный способ, то есть загрузить в каталог IMAGE.DIR? Спасибо.
51. Максим Кречетов (piloturs) 10.03.13 21:20
(49) меню файл броузера, сохранить как: "[ОБУЧАЛОВКА] Каким макаром к номенклатуре привязать картинку.htm"
52. Сергей (Che) Коцюра (CheBurator) 10.03.13 21:35
(50) есть. Смотри мою обраьотку распихивания картинок по номенклатуре.
http://infostart.ru/public/15239/
53. adm1n b3k (adm1nb3k) 10.03.13 22:35
А описать всего одну процедуру в публику, религия не позволяет?!..
54. Сергей (Che) Коцюра (CheBurator) 11.03.13 03:22
55. dimi3o (etmarket) 14.11.14 00:30
Нравится самобытность автора. Я не намекаю на неграммотность. Сам люблю оригинальные решения. Данный топик и приведенный код обилует подобными решениями. Подчеркнул для себя много полезного. Спасибо!
56. Сергей (Che) Коцюра (CheBurator) 14.11.14 02:02
(55) ну хоть кому-то еще 7.7 пригодилась...
у меня этих всяких форм/обработок по манипуляции с картинками - вагон и тележка.
есть даже подбор в документ поступления не по списку товаров, а по картинкам...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа