Имя: Пароль:
1C
 
Как добавить фото в справочник "Товары"
0 rulikch
 
05.12.09
22:20
Как добавить фото в справочник "Товары" ? Не сохраняется фото у элемента справочника, при его последующем открытии. Почему?
1 VitGun
 
05.12.09
22:24
сохраняй в реквизите справочника ссылку на файл с фото
2 Ваше благородие
 
05.12.09
22:31
В базе - текстовое поле "ПутьКФайлу". Сами файлы в отдельном каталоге.
3 aka AMIGO
 
05.12.09
22:46
(1) - правильно.. правда, если только фото хранить..
(2) почти так сделано у меня. Только путь к файлу у меня равен конкатенации постоянной части пути в Константе, а добавка - папка с именем = Коду Товара.

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

менеджеры уже оценили удобство такой штуки.
открывать папку для просмотра можно и из карточки, и из списка справочника.. и из документа.. да ото всюду.
4 rulikch
 
05.12.09
22:53
Ребята, я честно очень сегодня устал. Башка уже нефига не варит! Я вот такой код написал, подскажите, пожалуйста, еще раз что не так.

Кнопка "Добавить Фото"

Функция НайтиФото()  
   Файл=Создатьобъект("ФС");
   ФотоZ=Создатьобъект("Картинка");
   ФотоC=Создатьобъект("Картинка");
   Если Файл.ВыбратьФайлКартинки(0,ИмяФайла,ИмяКаталога,"Выберите файл","*.jpg",)<>1 Тогда
       Возврат 0;
   КонецЕсли;  
   исходный = ИмяФайла;
   ИмяФайла=ИмяКаталога+ИмяФайла;
   ФотоZ.Загрузить(ИмяФайла);
   ФотоС.РежимРисования(2);
   ФотоС.УстановитьКартинку(ФотоZ);
 

   Возврат 1;    
КонецФункции  

Кнопка "Сохранить Фото"
// ===============================
Процедура СохранитьФото()  
   Попытка            
        НовИмяФаила = (КаталогИБ() + "ExtForms\Foto"+"\"+код+".jpg");
       фс.ПереименоватьФайл(ИмяФайла,новимяфаила,1);
       Форма.Загрузка.Видимость(1);
       Форма.Сохранение.Видимость(1);
       Форма.Загрузка.Доступность(1);
       Форма.Сохранение.Доступность(1);
   Исключение
   КонецПопытки;
КонецПроцедуры
5 syktyk
 
05.12.09
22:56
У меня тоже башка не варит, ноя добавил кнопу "Утащить", откуда забирается фотка, и складается в определенную папку. Если нет возможности подключить сканер.
6 aka AMIGO
 
05.12.09
22:59
Н форме карточки товара есть кнопка "ВывестиПроводник.
В модуле процедура:

Процедура ВывестиПроводник()
   
   Если ТекущийЭлемент().ЭтоГруппа()=1 Тогда
       Возврат;
   КонецЕсли;
   //составляем адрес: константа + ПапкаДляВывода
   ПапкаДляВывода = СокрЛП(Константа.ПутьКИнформации)+"\"+Код;
   ПапкаДляВывода = СтрЗаменить(ПапкаДляВывода,"\\","\");
   Если ФС.СуществуетФайл(ПапкаДляВывода+"\NUL")=1 Тогда
       //правильная конкатенация
       ЗапуститьПриложение("explorer.exe "+СокрЛП(ПапкаДляВывода));
       Возврат;
   Иначе
       //ошибка неисправима
       Сообщить("Адрес техинформации ошибочен, проверьте путь:");
       Сообщить(""+ПапкаДляВывода);
       Предупреждение("Ошибка в создании Адреса техинформации!
       |Для исправления - Прочтите Описание!");
       Возврат;
   КонецЕсли;
   
КонецПроцедуры


посмотри, может устроит тебя?
7 rulikch
 
05.12.09
23:17
Нет фотки при сохранении элемента. Ведь работает сохранение в папке. А почему при открытии элемента фото не сохранилось
8 aka AMIGO
 
05.12.09
23:21
9 rulikch
 
05.12.09
23:24
(8) Большое СПАСИБО! ДРУГ!
10 Композитор
 
05.12.09
23:24
(0) На форму (например, форма списка), повесь объект Картинка и текстовый объект с функцией "СформироватьИнформационнуюСтроку".

Функция СформироватьИнформационнуюСтроку()
   Перем ИнфСтрока;
   
   Если ПустоеЗначение(ТекущийЭлемент()) = 1 Тогда
       // не выбран элемент
       ИнфСтрока = "";
   Иначе
       
       Если ТекущийЭлемент().ЭтоГруппа() = 1 Тогда
           // текущий элемент - группа
           ИнфСтрока =  ТекущийЭлемент().ПолноеНаименование();
       Иначе
           
           ТекЭлем = ТекущийЭлемент();
           
           ИнфСтрока = СокрЛП(ТекЭлем.ПолнНаименование) +
                       ?(ПустоеЗначение(ТекЭлем.Артикул) = 0, "  Артикул: " + СокрЛП(ТекЭлем.Артикул), "") +
                       ?(ПустоеЗначение(ТекЭлем.Комментарий) = 0, "  Комментарий: " + СокрЛП(ТекЭлем.Комментарий),    "");
       
           
           Файл = КаталогИБ()+СокрЛП(ТекЭлем.КаталогКартинки)+СокрЛП(ТекЭлем.ИмяФайлаКартинки);
           Если (ПустоеЗначение(ТекЭлем.ИмяФайлаКартинки) = 0)И
               (ФС.СуществуетФайл(Файл) = 1) Тогда
               Попытка    
                   Картинка.Загрузить(Файл);    
                   Картинка.РежимРисования(3);
               Исключение
                   Картинка1 = СоздатьОбъект("Картинка");
                   Картинка.УстановитьКартинку(Картинка1);    
               КонецПопытки;
           Иначе
               Картинка1 = СоздатьОбъект("Картинка");
               Картинка.УстановитьКартинку(Картинка1);    
           //КонецАвторскойВставки
           КонецЕсли;
       КонецЕсли;

   КонецЕсли;
   
   Возврат ИнфСтрока;
   
КонецФункции // СформироватьИнформационнуюСтроку()

"КаталогКартинки" и "ИмяФайлаКартинки" - это строковые поля в справочнике "Номенклатура". Они должны быть заполнены.

Можно сделать круче, выводя картинку в плавающее окно. Смотри здесь: Плавающее окно с фоткой
11 Композитор
 
05.12.09
23:33
на форме элемента объект Картинка (у меня две картинки - фото и чертеж) и кнопка с процедурой ПриИзмененииИмениФайла(). В качестве параметра у меня или "Картинка" или "Чертеж"

Процедура ПриИзмененииИмениФайла(Параметр)
   Если Параметр = "Картинка" Тогда
       ИмяФайла = ИмяФайлаКартинки;
       Если ПустоеЗначение(КаталогКартинки)  =1 Тогда
            ИмяНачКаталога = КаталогИБ()+НачКаталогКартинки;
       Иначе
            ИмяНачКаталога = КаталогКартинки;
       КонецЕсли;
       
       Если ФС.ВыбратьФайлКартинки(0,ИмяФайла,ИмяНачКаталога,"Выбрать картинку","*") = 1 Тогда
           Если Найти(ИмяНачКаталога,КаталогИБ()) = 0 Тогда
               Предупреждение("Неверный каталог!");
               Возврат;
           КонецЕсли;    
           ИмяФайлаКартинки = СокрЛП(ИмяФайла);
           КаталогКартинки = СокрЛП(Прав(ИмяНачКаталога,СтрДлина(СокрЛП(ИмяНачКаталога))-СтрДлина(КаталогИБ())));
           
           Файл = КаталогИБ()+СокрЛП(КаталогКартинки)+СокрЛП(ИмяФайлаКартинки);
           Если ФС.СуществуетФайл(Файл)=1 Тогда
               Картинка.Загрузить(Файл);
               Картинка.РежимРисования(3);
           КонецЕсли;
       КонецЕсли;
   ИначеЕсли Параметр = "Чертеж" Тогда
       ИмяФайла = М_ИмяФайлаЧертежа;
       Если ПустоеЗначение(М_КаталогЧертежа)  =1 Тогда
            ИмяНачКаталога = КаталогИБ()+НачКаталогЧертежа;
       Иначе
            ИмяНачКаталога = М_КаталогЧертежа;
       КонецЕсли;
       
       Если ФС.ВыбратьФайлКартинки(0,ИмяФайла,ИмяНачКаталога,"Выбрать картинку","*") = 1 Тогда
           Если Найти(ИмяНачКаталога,КаталогИБ()) = 0 Тогда
               Предупреждение("Неверный каталог!");
               Возврат;
           КонецЕсли;    
           М_ИмяФайлаЧертежа = СокрЛП(ИмяФайла);
           М_КаталогЧертежа = СокрЛП(Прав(ИмяНачКаталога,СтрДлина(СокрЛП(ИмяНачКаталога))-СтрДлина(КаталогИБ())));
           
           Файл = КаталогИБ()+СокрЛП(М_КаталогЧертежа)+СокрЛП(М_ИмяФайлаЧертежа);
           Если ФС.СуществуетФайл(Файл)=1 Тогда
               Чертеж.Загрузить(Файл);
               Чертеж.РежимРисования(3);
           КонецЕсли;
       КонецЕсли;    
   КонецЕсли;    
КонецПроцедуры    

ну и доп фнкции на допконпках:

Процедура ПоКнопкеУдалитьИзображение(Параметр)
   Если Вопрос("Вы действительно хотите удалить изображнеие?",4) = 7 Тогда
       Возврат;
   КонецЕсли;
   Если Параметр = "Картинка"  Тогда
       ИмяФайлаКартинки = "";
   ИначеЕсли Параметр = "Чертеж" Тогда
       М_ИмяФайлаЧертежа = "";
   КонецЕсли;
КонецПроцедуры                                                                    

//******************************************************************************
Процедура ПоКнопкеУвеличитьИзображение(Параметр)
   Если Параметр = "Картинка"  Тогда
       ИмяФайла = СокрЛП(ИмяФайлаКартинки);
       Каталог = КаталогИБ()+СокрЛП(КаталогКартинки);
   ИначеЕсли Параметр = "Чертеж" Тогда
       ИмяФайла = СокрЛП(М_ИмяФайлаЧертежа);
       Каталог = КаталогИБ()+СокрЛП(М_КаталогЧертежа);
   КонецЕсли;
   Параметры = СоздатьОбъект("СписокЗначений");
   Параметры.ДобавитьЗначение(ИмяФайла, "ИмяФайла");
   Параметры.ДобавитьЗначение(Каталог, "Каталог");
   ОткрытьФорму("Отчет",Параметры,КаталогИБ()+"ExtForms/"+"М_Изображение.ert");
КонецПроцедуры
12 aka AMIGO
 
05.12.09
23:48
красиво :)
13 Злопчинский
 
06.12.09
00:39
у мну по Ф4 просмотр картинки из многих мест. + отправка картинок по почте из справочников, документов, произвольных наборов и т.д и т.п.
.
автору поможет моя маленькая учебка:
http://www.infostart.ru/public/17125/
http://www.infostart.ru/public/15239/
14 VicAlex
 
06.12.09
13:43
Amigo, "а добавка - папка с именем = Коду Товара". Юзеру в голову ударит сменить код товара, что будет?
15 ДенисЧ
 
06.12.09
13:47
(14) Ударь юзверю в голову запретом менять код товара...
16 VicAlex
 
06.12.09
13:50
(15)Можно конечно и так,но нежелательно.