Итак, с чего начать. Естественно с 1С Предприятие|Документация|Описание встроенного языка 7.7. Глава 35 Работа с картинками. Те, кому разжёвывать не нужно, могут обратиться к встроенной справке - Картинка. Но это теория. Как говорится, лучше раз увидеть, чем сто раз прочитать.
Начнем с постановки задач.
- Требуется прикрепить картинки к элементам справочника «Номенклатура», а так же видеть картинку текущего справочника при перемещении по списку номенклатуры.
- Для первоначального прикрепления картинок к элементам справочника номенклатура, а так же для редактирования требуется менеджер картинок.
- Требуется показать картинки в отчете или печатной форме, например в прайсе.
- Требуется переименовывать картинки при изменении кодов и (или) атрибутов номенклатуры.
- Требуется выгружать картинки на сайт.
Прежде всего, требуется выбрать способ связи картинки с элементом справочника. Можно ввести дополнительный реквизит справочника типа строка, в котором задавать путь в картинке. Видимо такой подход, надежно связывает элемент с картинкой, но необходимо менять конфигурацию. Поэтому для связи можно использовать определенные договоренности. Например, считать, что файлы картинок находятся в подкаталоге ИБ, например, с именем «Фото», а имя файла картинки определять как код товара, полный код товара, штрих-код, штрих-код с кодом ну и так далее. Для простоты будем в дальнейшем использовать связь через код элемента.
Пункт 1. Здесь ничего сложного. Вот что должно находиться в процедуре ПриОткрытии() для элемента справочника.
Процедура ПриОткрытии()
ПустаяКартинка=СоздатьОбъект("Картинка");
КаталогФотографий = КаталогИБ() + "Фото\";
ФайлФото = КаталогФотографий + СокрЛП(Строка(ТекущийЭлемент().Код))+".*";
Если ФС.СуществуетФайл(ФайлФото) = 1 Тогда
Фото.Загрузить(КаталогФотографий+ФС.НайтиПервыйФайл(ФайлФото));
Фото.РежимРисования(3);
Форма.Фото.Видимость(1);
Иначе
Фото.УстановитьКартинку(ПустаяКартинка);
КонецЕсли;
КонецПроцедуры
Аналогичный код д.б. и в форме списка. Конкретная реализация – в прилагаемой базе данных Демобаза.zip.
Пункт 2. Можно использовать приведенную выше обработку //infostart.ru/public/15239/. Кроме того, к статье прикреплены два файла МенеджерКартинок1, представляющий собой переработанную под прикрепленную базу данных приведенную выше обработку, и МенеджерКартинок2 – другая обработка, служащая тем же целям.
Пункт 3. Тоже ничего сложного. Достаточно создать в таблице колонку, в которой разместить рисунок и в свойствах которого будет указано ВывестиРисунок(Таб.ТекущийОбъект, Путь).
Код процедуры:
Процедура ВывестиРисунок(ОбъектКартинка, Путь)
Картинка = СоздатьОбъект("Картинка");
Картинка.Загрузить(Путь);
ОбъектКартинка.РежимРисования(3);
ОбъектКартинка.УстановитьКартинку(Картинка);
КонецПроцедуры
Пример прайса приведен в файле ПрайсЛист.
Пункт 4. Готовой разработки не привожу, т.к. причины и алгоритмы перенумерации разные. Но ничего сложного здесь нет. Нужно лишь в том месте программы, где вы изменяете код элемента номенклатуры, добавить и переименование принадлежащей этому элементу картинки(не забудьте, что в таких программах код меняется три раза). К примеру, код перенумерации имеет вид
Если ПолучитьИД(сн.ТекущийЭлемент())<>ПолучитьИД(сп.ТекущийЭлемент()) Тогда
кс = сн.Код;
сп.Код = МаксКод;
Попытка
сп.Записать();
Исключение
Сообщить("Элемент с максимально допустимым кодом существует");Возврат;
КонецПопытки;
сн.Код = нк;
Попытка
сн.Записать();
Исключение
Сообщить("Неудачная попытка записи элемента с кодом "+нк+" "+ОписаниеОшибки());Возврат;
КонецПопытки;
сп.Код = кс;
Попытка
сп.Записать();
Исключение
Сообщить("Неудачная попытка записи элемента с кодом "+кс+" "+ОписаниеОшибки());Возврат;
КонецПопытки;
КонецЕсли;
Достаточно вставить следующий код:
СтарыйКод = сн.код;
сн.Код = НовыйКод;
Попытка
сн.Записать();
КаталогФотографий = КаталогИБ() + "Фото\";
ФайлСтарогоФото = КаталогФотографий + СокрЛП(Строка(СтарыйКод))+".jpg";
ФайлНовогоФото = КаталогФотографий + СокрЛП(сн.код))+".jpg";
Если ФС.СуществуетФайл(ФайлСтарогоФото) = 1 Тогда
ФС.ПереименоватьФайл(ФайлСтарогоФото, ФайлНовогоФото,1);
КонецЕсли;
Исключение
Сообщить("Неудачная попытка записи элемента с кодом "+кс+" "+ОписаниеОшибки());Возврат;
КонецПопытки;
Пункт 5. Работа с интернет магазином. Это конечно тема для отдельной статьи, поэтому дам только ссылку на первую из трех статей http://www.ibm.com/developerworks/ru/library/os-1C_OpenCart_01/ . Ссылки на остальные две находятся внутри первой. Здесь подробно рассмотрены все этапы обмена с сайтом, начиная с планирования и заканчивая конкретной реализацией.