gifts2017

Все про картинки в 1С 7.7, ну или почти все...

Опубликовал Vlad (kitminsk) в раздел Программирование - Практика программирования

В 1С 8 наличие картинок товаров предусмотрено изначально, а в 7.7 такого нет. Проблема существует и ее исправляют,  но это, как правило, частные случаи, касающиеся, например, печати прайса  http://infostart.ru/public/289876/ , показу картинок в справочнике номенклатура http://infostart.ru/public/17125/, файловый менеджер картинок товара  http://infostart.ru/public/15239/  или просто конфигурации работы с картинками http://infostart.ru/public/21142/ (не стремился дать полный обзор, поэтому не попавшие не обижайтесь :). Что не устроило – информация разбросана по статьям, необходимость дополнительно напрягаться, чтобы это заработало. Здесь я попытался собрать все «до кучи», а так же дать необходимые ссылки для желающих «копнуть вглубь».

Итак, с чего начать. Естественно с 1С Предприятие|Документация|Описание встроенного языка 7.7. Глава 35 Работа с картинками. Те, кому разжёвывать не нужно, могут обратиться к встроенной справке  - Картинка. Но это теория. Как говорится, лучше раз увидеть, чем сто раз прочитать.

Начнем с постановки задач.

  1. Требуется прикрепить картинки к элементам справочника «Номенклатура», а так же видеть картинку текущего справочника при перемещении по списку номенклатуры.
  2. Для первоначального прикрепления картинок к элементам справочника номенклатура, а так же для редактирования  требуется менеджер картинок.
  3. Требуется показать картинки в отчете или печатной форме, например в прайсе.
  4. Требуется переименовывать картинки при изменении кодов и (или) атрибутов номенклатуры.
  5. Требуется выгружать картинки на сайт.

Прежде всего, требуется выбрать способ связи картинки с элементом справочника. Можно ввести дополнительный реквизит справочника типа строка, в котором задавать путь в картинке. Видимо такой подход, надежно связывает элемент с картинкой, но необходимо менять конфигурацию. Поэтому для связи можно использовать определенные договоренности. Например, считать, что файлы картинок находятся в подкаталоге ИБ, например, с именем «Фото», а имя файла картинки определять как код товара, полный код товара, штрих-код, штрих-код с кодом ну и так далее. Для простоты будем в дальнейшем использовать связь через код элемента.

Пункт 1. Здесь ничего сложного. Вот что должно находиться в процедуре ПриОткрытии() для элемента справочника.

Процедура ПриОткрытии()

    ПустаяКартинка=СоздатьОбъект("Картинка");

    КаталогФотографий = КаталогИБ() + "Фото\";

    ФайлФото = КаталогФотографий + СокрЛП(Строка(ТекущийЭлемент().Код))+".*";

    Если ФС.СуществуетФайл(ФайлФото) = 1 Тогда

        Фото.Загрузить(КаталогФотографий+ФС.НайтиПервыйФайл(ФайлФото));

        Фото.РежимРисования(3);

        Форма.Фото.Видимость(1);

    Иначе

        Фото.УстановитьКартинку(ПустаяКартинка);

    КонецЕсли;  

КонецПроцедуры

Аналогичный код д.б. и в форме списка. Конкретная реализация – в прилагаемой базе данных Демобаза.zip.

 

Пункт 2. Можно использовать приведенную выше обработку http://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/  . Ссылки на остальные две находятся внутри первой. Здесь подробно рассмотрены все этапы обмена с сайтом, начиная с планирования и заканчивая конкретной реализацией.

Скачать файлы

Наименование Файл Версия Размер
Демобаза 17
.zip 1,09Mb
17.11.14
17
.zip 1,09Mb Скачать
Менеджер картинок 1 8
.rar 7,43Kb
17.11.14
8
.rar 7,43Kb Скачать
Менеджер картинок 2 12
.ert 178,00Kb
17.11.14
12
.ert 178,00Kb Скачать
Прайс лист 10
.rar 2,84Kb
18.11.14
10
.rar 2,84Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Женя Ткаченко (zhenyat) 18.11.14 18:28
Хоть и давно сама для себя решила этот вопрос, ставлю звездочку за сбор в одном месте
2. Анатолий Ман (Самоделкин) 21.11.14 14:55
Делал картинку в подборе номенклатуры, сильно тормозило из-за того, что объем исходного файла большой, а уменьшать смысла не видел поэтому, просто сделал кнопку, а вместо самого фото, только надпись ЕСТЬ Фото или НЕТ фото.
У Вас не тормозит в списке?
3. Vlad (kitminsk) 22.11.14 10:26
На тех базах где ставил - нет
4. Сергей Сергей (SerNikAnt) 22.10.15 19:52