Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Вывод изображения в поле картинки , Конфигурация УТ 11          
Fabri Подменю пользователя
сообщение 21.11.13, 22:01
Сообщение #1

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 55 раз
Рейтинг: 0

Хорошего времени суток всем. Столкнулся с такой проблемой (может где-то было на форуме, но не нашел ответ именно на такой вопрос).
Имеется обработка, в ней табличная часть с реквизитом - Номенклатура - тип Номенклатура.Ссылка.И
Есть реквизит (Строка) на форме - Поле картинки.
Необходимо при активизации строки выводить в поле картинки основное изображение номенклатуры.

Вот код:
&НаКлиенте
Процедура СписокИзмененийПриАктивизацииСтроки(Элемент)
Если Объект.СписокИзменений.Количество()>0 Тогда //СписокИзменений - табличная часть
ТекущиеДанныеСписка = Элементы.СписокИзменений.ТекущиеДанные;
Объект.Картинка = ПолучитьНавигационнуюСсылку(ТекущиеДанныеСписка.Номенклатура.ФайлКартинки); //Где файл картинки - элемент справочника НоменклатураПрисоединенныеФайлы    
КонецЕсли;
КонецПроцедуры


При этом ругается мол не обнаружен объект - ТекущиеДанныеСписка.Номенклатура.ФайлКартинки
Ладно, пойдем другим путем:
&НаКлиенте
Процедура СписокИзмененийПриАктивизацииСтроки(Элемент)
    Если Объект.СписокИзменений.Количество()>0 Тогда
        ТекущиеДанныеСписка = Элементы.СписокИзменений.ТекущиеДанные;
        Объект.Картинка = ПолучитьНавигационнуюСсылку(ПолучитьКартинку(ТекущиеДанныеСписка.Номенклатура));
    КонецЕсли;         
КонецПроцедуры

&НаСервере
Функция ПолучитьКартинку(Номенклатура)

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.ФайлКартинки КАК Картинка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.Ссылка = &Ссылка";

    Запрос.УстановитьПараметр("Ссылка", Номенклатура);

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Возврат ВыборкаДетальныеЗаписи.Картинка;    
    КонецЦикла;
    
    Возврат Неопределено;
    
КонецФункции


Аналогично результат 0. В отладчике смотрю - ссылка вроде возвращается - но все не то.
В чем может быть проблема? Спасибо.

Vofka Подменю пользователя
сообщение 21.11.13, 22:19
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

http://pro1c.org.ua/index.php?showtopic=15489 смотрели?

Fabri Подменю пользователя
сообщение 21.11.13, 23:09
Сообщение #3

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 55 раз
Рейтинг: 0

Да, смотрел. Там есть интересный код:
&НаСервере
Процедура ОбновитьКартинкуСервер()
    Если ЗначениеЗаполнено(Объект.ФайлКартинкиБлюда) Тогда
        КартинкаБлюда = ПолучитьНавигационнуюСсылку(Объект.ФайлКартинкиБлюда.Ссылка, "ФайлКартинки");
    КонецЕсли;
КонецПроцедуры


Сделал аналогично у себя, т.е. просто вывел в процедуру &НаСервере
&НаКлиенте
Процедура СписокИзмененийПриАктивизацииСтроки(Элемент)
    Если Объект.СписокИзменений.Количество()>0 Тогда
        //ТекущиеДанныеСписка = Элементы.СписокИзменений.ТекущиеДанные;
        //Объект.Картинка = ПолучитьНавигационнуюСсылку(ПолучитьКартинку(ТекущиеДанныеСписка.Номенклатура));
        ПолучитьКартинкуСервер();
    КонецЕсли;         
КонецПроцедуры

&НаСервере
Процедура ПолучитьКартинкуСервер()
    
    ТекущиеДанныеСписка = Элементы.СписокИзменений.ТекущиеДанные;
    Объект.Картинка = ПолучитьНавигационнуюСсылку(ТекущиеДанныеСписка.Номенклатура.Ссылка,"ФайлКартинки");
    
КонецПроцедуры


При этом у меня 1С Предприятие вообще зависает и вылетает. 09000000.gif

logist Подменю пользователя
сообщение 22.11.13, 8:50
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Fabri @ 22.11.13, 0:09) *
Объект.Картинка

Картинка должна отображаться в реквизите ФОРМЫ с типом строка. Не пытайтесь запихнуть ее в объект.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Fabri Подменю пользователя
сообщение 22.11.13, 20:11
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 55 раз
Рейтинг: 0

Поставили параметр формы (Строка) и на форме поле капртинки, все равно результата - 0. Странно почему при получении ТекущиеДанные табличной части (в управляемом приложении) возвращаются просто ссылка Номенклатуры, без её реквизитов, т.е. если указать Номенклатура.Родитель или Номенклатура.ФайлКартинки - сразу ошибка.
Что интересно, обработку всю написал без проблем, это аналог моей обработки УстановкаИзображенийНоменклатуры (которая выставленна на данном форуме) только для УТ 11.1 (т.е. для управляемого приложения), все работает без проблем, втягиваются изображения, удаляются предыдущие по необходимости и т.д., а вот ерунда вывести картинку номенклатуры в поле картинки - нивкакую. sad.gif

logist Подменю пользователя
сообщение 22.11.13, 20:22
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Fabri @ 22.11.13, 21:11) *
Поставили параметр формы

Не параметр а Реквизит(!)

Цитата(Fabri @ 22.11.13, 21:11) *
Странно почему при получении ТекущиеДанные табличной части

Потому, что это управляемое приложение. Учите матчасть - НаКлиенте недоступны реквизиты ссылок.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Fabri,

Fabri Подменю пользователя
сообщение 22.11.13, 20:28
Сообщение #7

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 55 раз
Рейтинг: 0

Да, сорри, реквизит формы.
Потому, что это управляемое приложение. Учите матчасть - НаКлиенте недоступны реквизиты ссылок.

Выше писал,
Цитата
Сделал аналогично у себя, т.е. просто вывел в процедуру &НаСервере
При этом у меня 1С Предприятие вообще зависает и вылетает.


Fabri Подменю пользователя
сообщение 23.11.13, 11:07
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 55 раз
Рейтинг: 0

Нет никаких идей по поводу решения вопроса?

Fabri Подменю пользователя
сообщение 24.11.13, 9:49
Сообщение #9

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 55 раз
Рейтинг: 0

Решил вопрос таким спобосом:
&НаКлиенте
Процедура СписокИзмененийПриАктивизацииСтроки(Элемент)
    Если Объект.СписокИзменений.Количество()>0 Тогда
        ТекДанные=Элементы.СписокИзменений.ТекущиеДанные;
        ЭтаФорма.Изображение = ПолучитьКартинку(ТекДанные.Номенклатура);
    КонецЕсли;         
КонецПроцедуры

&НаСервере
Функция ПолучитьКартинку(Номенклатура)

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.ФайлКартинки КАК Картинка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.Ссылка = &Ссылка";

    Запрос.УстановитьПараметр("Ссылка", Номенклатура);

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Возврат ПрисоединенныеФайлы.ПолучитьДанныеФайла(ВыборкаДетальныеЗаписи.Картинка,ЭтаФорма).СсылкаНаДвоичныеДанныеФайла;    
    КонецЦикла;
    
    Возврат Неопределено;
    
КонецФункции


Т.е. Использовал стандартную функцию общего модуля ПрисоединенныеФайлы.ПолучитьДанныеФайла которая используется при выводе изображения в форме элемента справочника Номенклатура
P.S. Существует данная функция и модуль только в кофигурации УТ 11.1, в УТ11.0 - её нет.

Спасибо сказали: Vofka,

logist Подменю пользователя
сообщение 25.11.13, 8:59
Сообщение #10

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

У вас в таблице номенклатура уже ссылка, зачем вы получаете ее еще раз...

&НаСервере
Функция ПолучитьКартинку(Номенклатура)
    Возврат ПрисоединенныеФайлы.ПолучитьДанныеФайла(Номенклатура.ФайлКартинки,ЭтаФорма).СсылкаНаДвоичныеДанныеФайла;    
КонецФункции


Сообщение отредактировал logist - 25.11.13, 8:59


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Fabri,

Sharki Подменю пользователя
сообщение 24.12.13, 14:33
Сообщение #11

Общительный
**
Группа: Пользователи
Сообщений: 47
Спасибо сказали: 12 раз
Рейтинг: 0

храните картинку в хранилище значений, получите картинку выборкой и получайте от хранилища значений. Поместите во временное хранилище и строку выводите как картинку
Например
&НаСервере
Процедура ВывестиКартинкуПечати()

    лОбъект = ДанныеФормыВЗначение(Объект, Тип("СправочникОбъект.Производители"));
    КартинкаПечати = лОбъект.Печать.Получить();
    Если ТипЗнч(КартинкаПечати) = Тип("Картинка") Тогда
        КартинкаАдрес = ПоместитьВоВременноеХранилище(КартинкаПечати, Новый УникальныйИдентификатор)
    КонецЕсли;

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

где КартинкаАдрес реквизит формы тип строка, Картинка печати - реквизит справочника с типом хранилище значений

Спасибо сказали: Vofka,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.04.24, 22:50
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!