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

18.11.14

Разработка - Механизмы платформы 1С

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

Скачать исходный код

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

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

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

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

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

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

1с 7.7 картинки менеджер картинок прайс-лист с картинками

См. также

"Виртуальный" работник на платформе 1C v7.7

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

В статье расписаны примеры из жизни использования "Виртуального" работника. Разобраны вопросы, возникающие при работе с ним.

28.11.2021    1568    user707242_Gold_karas    18    

5

Асинхронное программирование в 1с77 без внешних компонент. Обратные вызовы.

Механизмы платформы 1С Платформа 1С v7.7 Абонемент ($m)

Пример построения программного кода для достижения функционала обратных вызовов (call back) во внешних обработках исключительно штатными средствами. Тестировалось на платформе 1с77 релиз 027. Конфигурация значения не имеет.

1 стартмани

06.10.2018    7478    Vortigaunt    5    

11

Особенности разделения объектной модели документа и базы данных в 1С 7.7. Забавный глюк

Механизмы платформы 1С Оперативный учет 7.7 Абонемент ($m)

Когда занимаешься разработкой в среде 1С, редко задумываешься о том, что программным кодом ты работаешь с объектной моделью базы данных, а не с самой базой данных. И что это вообще разные вещи. Ты создаешь объекты: документы и справочники, записываешь их - и в базе данных появляются соответствующие записи. Это настолько привычно, что когда сталкиваешься с нетипичным поведением платформы, первым делом думаешь: надо протестировать базу, она битая. В этой статье я хочу разобрать одну интересную ситуацию, которая как раз демонстрирует такое поведение. Описанная ниже ситуация воспроизводится как в файловом, так и в клиент-серверном (SQL) варианте. Тестировалось на версии платформы 1с77 релиз 027.

1 стартмани

16.05.2018    10152    Vortigaunt    26    

5

Использование классов .Net в 1С для новичков

Механизмы платформы 1С Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    94117    Serginio    116    

188

ЗаполнитьЗначенияСвойств - заставляем работать в 7.7

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Если вы используете в работе 1С:Предприятие 8.х, то наверняка знакомы и с замечательной системной процедурой, как ЗаполнитьЗначенияСвойств(). Ее использование помогает значительно упростить написание программного кода в ряде случае, делает его (код) более наглядным и простым. Но что же делать тем, кто до сих пор использует (постоянно или иногда) 1С:Предприятие 7.7?

24.07.2014    23775    tomvlad    5    

14

Динамическая фильтрация в справочнике при вводе наименования

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Позволяет в открытой форме списка, выбора или подбора справочника производить динамическую фильтрацию по набранному наименованию.

02.07.2012    18398    maxpiter    62    

15

Работа с бинарными файлами в 1С 7.7

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Описание принципов и набор инструментов для работы с двоичными данными в 1С 7.7. Примеры во вложениях.

1 стартмани

16.05.2012    31805    100    dusha0020    8    

22
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. zhenyat 6 18.11.14 18:28 Сейчас в теме
Хоть и давно сама для себя решила этот вопрос, ставлю звездочку за сбор в одном месте
+
2. Самоделкин 2 21.11.14 14:55 Сейчас в теме
Делал картинку в подборе номенклатуры, сильно тормозило из-за того, что объем исходного файла большой, а уменьшать смысла не видел поэтому, просто сделал кнопку, а вместо самого фото, только надпись ЕСТЬ Фото или НЕТ фото.
У Вас не тормозит в списке?
+
3. kitminsk 205 22.11.14 10:26 Сейчас в теме
На тех базах где ставил - нет
+
4. SerNikAnt 3 22.10.15 19:52 Сейчас в теме
5. user629924_info 19.03.17 13:08 Сейчас в теме
а вот про подводные камни не сказано ни чего)
что выползают ошибки типа такой:
Фото.Загрузить(КаталогФотографий+ФС.НайтиПервыйФайл(ФайлФото));
{Справочник.Номенклатура.Форма.Модуль(1150)}: Общая файловая ошибка при доступе . . .

когда хочешь создать новый элемент.
решение такое, меняем такую мелочь:
ФайлФото = КаталогФотографий + СокрЛП(Строка(ТекущийЭлемент().Код))+".*";
На:
ФайлФото = КаталогФотографий + СокрЛП(Строка(ТекущийЭлемент().Код))+".jpg";
+
6. CheBurator 3119 21.03.17 00:35 Сейчас в теме
а еще можно отдельную форму, которая открывается из формы списка справочника (по образу типового просмотра остатков) - идем по справочнику, видим картинки... https://www.screencast.com/t/9y8kmuEjNzaC
+
7. gosizo 38 11.06.19 09:44 Сейчас в теме
с https есть возможность загружать фото?
+
8. CheBurator 3119 11.06.19 11:06 Сейчас в теме
9. Videon 03.02.20 12:27 Сейчас в теме
Подскажите, пожалуйста, как найти картинку на печатной форме? (В таблице обработки, например).
Есть обработка, есть печатная форма, если закомментировать часть процедур, то программа ругается. А в каком месте ругается, найти не могу. Знаю, что из картинки, но так как её не видно на форме, то даже не знаю, где искать...
+
10. dim3740 6 05.12.20 15:19 Сейчас в теме
Здравствуйте. Как делать простое прикрепление рисунка к таблице посредством стандартных средств?

Т.е. мне не нужно рассматривать рисунок как объект, устанавливать связи. На скрине я сделал это без единой строчки кода, но... геморойно... подгонял разрешение и т.п.
Прикрепленные файлы:
+
11. dim3740 6 05.12.20 17:20 Сейчас в теме
Понял, что нужно только bmp, а не jpg
+
12. пользователь 12.03.21 14:11
Сообщение было скрыто модератором.
...
13. arsorf 20.08.21 08:24 Сейчас в теме
Очень все интересно и понятно только по п.5. ссылка не рабочая. Оно и понятно - столько времени прошло со дня публикации. Может подскажите, где можно про это почитать?
+
14. nysysimara 25 10.08.22 15:53 Сейчас в теме
Спасибо, помогли вспомнить как с этим работать )
+
15. Иваныч 23 30.09.22 11:52 Сейчас в теме
А как увязать несколько картинок к одному наименованию номенклатуры? Как пример - вид товара с разных сторон.
+
16. user1960118 16.06.23 23:27 Сейчас в теме
17. user1960118 17.06.23 09:35 Сейчас в теме
Попробуйте еще этим способом!
Прикрепленные файлы:
1Cv8.dt
+
18. user1960118 17.06.23 09:39 Сейчас в теме
Прикрепляю базу данных, очень много полезной информации
Прикрепленные файлы:
БД.docx
+
19. user1960118 17.06.23 09:40 Сейчас в теме
Посмотрите еще такой способ, недавно на него наткнулся
Прикрепленные файлы:
полная.dt
+
Оставьте свое сообщение