Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
04 июл 2026, 22:49

картинка номенклатуры в декорацию

Автор sali, 16 июн 2026, 08:19

0 Пользователей и 1 гость просматривают эту тему.

antoneus

Цитата: sali от 19 июн 2026, 12:23как этого избежать?

Не изменять по нажатию значение того реквизита, в котором адрес в хранилище записан?

sali

antoneus, нууу да
чтобы картинка не исчезала

antoneus

Разобрались, следующий вопрос.

sali

antoneus, так стоп :D  :ooifh:
нет. я просто на нее нажимаю , а действия вообще не связанные с ней происходят, добавляются новые элементы формы

antoneus

Ну чего напрограммировал - то и происходит. Просто так, от сырости, новые элементы формы не заводятся.

sali

ок, разберусь на досуге. тогда следующий вопрос , как и просили. почему я теперь не вижу картинки из библиотеки?
я делаю условие , что если картинка у номенклатуры есть, то подставляем ее, если нет то берем из библиотеки

antoneus


sali

что же?
ИмяДекорацииТовара = "КартинкаТовара__" + Строка(СчетДекорации);
ДобавляемыеРеквизиты = Новый Массив;
Реквизит = Новый РеквизитФормы(ИмяДекорацииТовара, Новый ОписаниеТипов("Строка"));
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);

ЭлементФормы = Элементы.Добавить(ИмяДекорацииТовара, Тип("ПолеФормы"), Элементы.Найти(ИмяГруппыПозиции));
            ЭлементФормы.ПутьКДанным = ИмяДекорацииТовара;
            ЭлементФормы.Вид = ВидПоляФормы.ПолеКартинки;
ЭлементФормы.Гиперссылка = Истина; 
ЭлементФормы.УстановитьДействие("Нажатие", "ДекорацияТовараНажатие");
            ЭлементФормы.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;   
            ЭлементФормы.Ширина = 20;
ЭлементФормы.Высота = 8; 
ЭлементФормы.РастягиватьПоГоризонтали = Ложь;
ЭлементФормы.РастягиватьПоВертикали = Ложь;
            ЭлементФормы.РазмерКартинки = РазмерКартинки.Пропорционально;
ЭлементФормы.Рамка = Новый Рамка(ТипРамкиЭлементаУправления.Выпуклая, 2);
СтрокаПередДвоичнымиДанными = СтруктураИзображений.Получить(СтрокаМассива.Значение).Получить();
Если СтрокаПередДвоичнымиДанными = "" Или СтрокаПередДвоичнымиДанными = Неопределено Тогда
ЭтаФорма[ИмяДекорацииТовара] = БиблиотекаКартинок.НетИзображения;
Иначе                   
ДвоичныеДанные = Base64Значение(СтруктураИзображений.Получить(СтрокаМассива.Значение).Получить());
            ЭтаФорма[ИмяДекорацииТовара] = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
        КонецЕсли;


&НаКлиенте
Процедура ДекорацияТовараНажатие(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;
Если Элементы.Найти("ГруппаПодДекорацией_" + прав(Элемент.Имя, 1)) = Неопределено Тогда
ДекорацияТоваровНажатиеНаСервере();

Иначе
    ОтобразитьВидимость = Элементы.Найти("ГруппаПодДекорацией_" + Прав(Элемент.Имя, 1));   
ОтобразитьВидимость.Видимость = Истина;
ЭмтЗаголовок = Элементы.Найти("ДекорацияКоличество_" + Прав(Элемент.Имя, 1)); 
ЗначениеЗаголовка = ЭмтЗаголовок.Заголовок;
ПрибавленоеЧисло = Число(ЗначениеЗаголовка) + 1; 
ЭмтЗаголовок.Заголовок = Строка(ПрибавленоеЧисло);
КонецЕсли;
КонецПроцедуры   

&НаСервере
Процедура ДекорацияТоваровНажатиеНаСервере()

Элемент = этаформа.ТекущийЭлемент;
СчетГруппаПодДекорацией = Число(прав(Элемент.Имя, 1));
// добавляем группу
ИмяГруппыПодПозицией = "ГруппаПодДекорацией_" + Строка(СчетГруппаПодДекорацией);
ГруппаПозиции = ЭтаФорма.Элементы.Добавить(ИмяГруппыПодПозицией, Тип("ГруппаФормы"), элементы.найти(Элемент.Родитель.Имя));
ГруппаПозиции.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ГруппаПозиции.Отображение = ОтображениеОбычнойГруппы.Нет; 
ГруппаПозиции.ОтображатьЗаголовок = Ложь;
ГруппаПозиции.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда;
ГруппаПозиции.Поведение = ПоведениеОбычнойГруппы.Обычное; 
ГруппаПозиции.ГоризонтальноеПоложениеВГруппе = ГоризонтальноеПоложениеЭлемента.Право;
ГруппаПозиции.ГоризонтальноеПоложениеПодчиненных = ГоризонтальноеПоложениеЭлемента.Право;
ГруппаПозиции.РастягиватьПоГоризонтали = Ложь;

// добавляем атрибуты. Кнопка минус
ИмяКнопкиПодДекорацией = "ДекорацияМинус_" +  Строка(СчетГруппаПодДекорацией);
КнопкаДляДекорации = Элементы.Добавить(ИмяКнопкиПодДекорацией, Тип("КнопкаФормы"), Элементы.Найти(ИмяГруппыПодПозицией));
КнопкаДляДекорации.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
КнопкаДляДекорации.Отображение = ОтображениеКнопки.Картинка;
КнопкаДляДекорации.Картинка = БиблиотекаКартинок.Minus;
КнопкаДляДекорации.ИмяКоманды = "МинусДекорации";
КнопкаДляДекорации.Ширина = 6;
КнопкаДляДекорации.Высота = 2; 
КнопкаДляДекорации.ГоризонтальноеПоложениеВГруппе = ГоризонтальноеПоложениеЭлемента.Право;

// Поле отображение количества     
ИмяПоляКоличества = "ДекорацияКоличество_" +  Строка(СчетГруппаПодДекорацией);
ПолеКоличество = Элементы.Добавить(ИмяПоляКоличества, Тип("ДекорацияФормы"), Элементы.Найти(ИмяГруппыПодПозицией));
ПолеКоличество.Вид = ВидДекорацииФормы.Надпись;
ЗначениеЗаголовка = ПолеКоличество.Заголовок;   
Если ЗначениеЗаполнено(ЗначениеЗаголовка) Тогда
ПолеКоличество.Заголовок = Строка(Число(ЗначениеЗаголовка) + 1);     
Иначе
ЗначениеЗаголовка = "0";
ПолеКоличество.Заголовок = Строка(Число(ЗначениеЗаголовка) + 1); 
КонецЕсли;   
ПолеКоличество.Шрифт = Новый Шрифт( "Arial", 18, Истина);
ПолеКоличество.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право;

СчетГруппаПодДекорацией = СчетГруппаПодДекорацией + 1;
//СчетКнопкиПодДекорацией = СчетКнопкиПодДекорацией + 1;
КонецПроцедуры


antoneus

ЭтаФорма[ИмяДекорацииТовара] = ПоместитьВоВременноеХранилище(БиблиотекаКартинок.НетИзображения.ПолучитьДвоичныеДанные(), УникальныйИдентификатор);

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск