Основное изображение в ФормеДокумента ЧекККМ
Здравствуйте. Пытаюсь добавить в ФормуДокумента чека изображение номенклатуры. Т.е. чтобы когда кассир отпикал товар по штрих-коду, он мог увидеть изображение этого товара в каком-то окне. Чтобы сверять товар не по артикулу, а по картинке. Вроде того, что есть в справочнике номенклатуры.
Пытался сделать по аналогии со справочником номенклатуры
и
Вылазит ошибка:
Может кто-то подскажет как связать изображение с Табличным полем с Данными Товары?
"Управление торговлей", редакция 10.3 (10.3.29.1)
Пытался сделать по аналогии со справочником номенклатуры
// Обновляет содержимое картинки
//
Процедура ПоказатьОсновноеИзображение()
Если ЭлементыФормы.ДействияФормы.Кнопки[0].Кнопки.Изображение.Пометка = Истина Тогда
ТекущиеДанныеСписка = ЭлементыФормы.Товары.ТекущиеДанные;
Если НЕ ТекущиеДанныеСписка = Неопределено
//И НЕ ТекущиеДанныеСписка.ЭтоГруппа
И НЕ ТекущиеДанныеСписка.ОсновноеИзображение.Пустая() Тогда
ЭлементыФормы.ОсновноеИзображение.Картинка = ТекущиеДанныеСписка.ОсновноеИзображение.Хранилище.Получить();
Иначе
ЭлементыФормы.ОсновноеИзображение.Картинка = мПустаяКартинка;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показатьи
Процедура ОсновноеИзображениеНажатие(Элемент)
ТекущиеДанныеСписка = ЭлементыФормы.Товары.ТекущиеДанные;
Если ТекущиеДанныеСписка = Неопределено Тогда
Предупреждение("Укажите в списке элемент номенклатуры!");
Возврат;
КонецЕсли;
Если ТекущиеДанныеСписка.ОсновноеИзображение.Пустая() Тогда
Предупреждение("Основное изображение номенклатуры не задано!");
Возврат;
КонецЕсли;
РаботаСФайлами.ОткрытьФормуИзображения(ЭтаФорма, ТекущиеДанныеСписка.ОсновноеИзображение, ТекущиеДанныеСписка.Ссылка);
КонецПроцедуры
ПоказатьВылазит ошибка:
{Документ.ЧекККМ.Форма.ФормаДокумента.Форма(1971)}: Поле объекта не обнаружено (ОсновноеИзображение)
РаботаСФайлами.ОткрытьФормуИзображения(ЭтаФорма, ТекущиеДанныеСписка.ОсновноеИзображение, ТекущиеДанныеСписка.Ссылка);
РаботаСФайлами.ОткрытьФормуИзображения(ЭтаФорма, ТекущиеДанныеСписка.ОсновноеИзображение, ТекущиеДанныеСписка.Ссылка);
Может кто-то подскажет как связать изображение с Табличным полем с Данными Товары?
"Управление торговлей", редакция 10.3 (10.3.29.1)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Сообщение:
В отладчике поставь точку останова в строке 1971
И проанализируй ТекущиеДанныеСписка
Написано же нет поля ОсновноеИзображение
{Документ.ЧекККМ.Форма.ФормаДокумента.Форма(1971)}: Поле объекта не обнаружено (ОсновноеИзображение)
РаботаСФайлами.ОткрытьФормуИзображения(ЭтаФорма, ТекущиеДанныеСписка.ОсновноеИзображение, ТекущиеДанныеСписка.Ссылка);
РаботаСФайлами.ОткрытьФормуИзображения(ЭтаФорма, ТекущиеДанныеСписка.ОсновноеИзображение, ТекущиеДанныеСписка.Ссылка);
В отладчике поставь точку останова в строке 1971
И проанализируй ТекущиеДанныеСписка
Написано же нет поля ОсновноеИзображение
(4) x_under, Большое спасибо!
Теперь получилась такая ситуация: окно с картинкой пустое, пока на него мышкой не нажмешь. После этого в новом окне открывается "форма данных об изображении" уже с нужной картинкой. Не подскажете, что нужно подправить, чтобы картинка сразу отображалась?
Т.е. в справочнике номенклатуры точно также, при нажатии на картинку появляется "форма данных об изображении", но там изображение выводится сразу (выделил номенклатуру и изображение показывается), а у меня это поле пустое
Теперь получилась такая ситуация: окно с картинкой пустое, пока на него мышкой не нажмешь. После этого в новом окне открывается "форма данных об изображении" уже с нужной картинкой. Не подскажете, что нужно подправить, чтобы картинка сразу отображалась?
Т.е. в справочнике номенклатуры точно также, при нажатии на картинку появляется "форма данных об изображении", но там изображение выводится сразу (выделил номенклатуру и изображение показывается), а у меня это поле пустое
Видимо что-то в этой части не правильно:
// Обновляет содержимое картинки
//
Процедура ПоказатьОсновноеИзображение()
Если ЭлементыФормы.ДействияФормы.Кнопки[0].Кнопки.Изображение.Пометка = Истина Тогда
ТекущиеДанныеСписка = ЭлементыФормы.Товары.ТекущиеДанные;
Если НЕ ТекущиеДанныеСписка = Неопределено
//И НЕ ТекущиеДанныеСписка.ЭтоГруппа
И НЕ ТекущиеДанныеСписка.Номенклатура.ОсновноеИзображение.Пустая() Тогда
ЭлементыФормы.ОсновноеИзображение.Картинка = ТекущиеДанныеСписка.Номенклатура.ОсновноеИзображение.Хранилище.Получить();
Иначе
ЭлементыФормы.ОсновноеИзображение.Картинка = мПустаяКартинка;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать
(7) AlexeyMalko, При открытии, по идее, ничего. При выделении номенклатуры - показать картинку.
Видимо, не срабатывает эта строчка, но не пойму почему:
Видимо, не срабатывает эта строчка, но не пойму почему:
Тогда
ЭлементыФормы.ОсновноеИзображение.Картинка = ТекущиеДанныеСписка.Номенклатура.ОсновноеИзображение.Хранилище.Получить();
Пробовал через отладчик, в процедуру ПоказатьОсновноеИзображение() вообще не заходит. Попробовал добавить при открытии по аналогии со справочником номенклатуры, вылазит ошибка
{Документ.ЧекККМ.Форма.ФормаДокумента.Форма(652)}: Поле объекта не обнаружено (Изображение)
Если ЭлементыФормы.ДействияФормы.Кнопки[0].Кнопки.Изображение.Пометка Тогда
Если ЭлементыФормы.ДействияФормы.Кнопки[0].Кнопки.Изображение.Пометка Тогда
В общем, вроде бы работает. Делал первый раз, 1С не знаю. Времени потратил кучу, оказалось на 5 мин делов. Поправки и замечания приветствуются)
Оставлю тут, может таким, как я, пригодится.
1. В конфигураторе Документы - ЧекККМ - Формы - ФормаДокумента вставить поле Картинка (я скопировал данное поле, чтобы ничего не настраивать с Справочники - Номенклатура - Формы - Форма списка)
2. Документы - ЧекККМ - Формы - ФормаДокумента - перейти на вкладку Модуль.
Объявить переменную
3. Вставить процедуру
4. В конец процедуры ОбработкаПодбора(ТабличнаяЧасть, ЗначениеВыбора) добавить строку
5. В процедуру ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти) добавить в конец
Оставлю тут, может таким, как я, пригодится.
1. В конфигураторе Документы - ЧекККМ - Формы - ФормаДокумента вставить поле Картинка (я скопировал данное поле, чтобы ничего не настраивать с Справочники - Номенклатура - Формы - Форма списка)
2. Документы - ЧекККМ - Формы - ФормаДокумента - перейти на вкладку Модуль.
Объявить переменную
Перем мПустаяКартинка;
3. Вставить процедуру
// Обновляет содержимое картинки
Процедура ПоказатьОсновноеИзображение()
ТекущиеДанныеСписка = ЭлементыФормы.Товары.ТекущиеДанные;
Если НЕ ТекущиеДанныеСписка = Неопределено
И НЕ ТекущиеДанныеСписка.Номенклатура.ОсновноеИзображение.Пустая() Тогда
ЭлементыФормы.ОсновноеИзображение.Картинка = ТекущиеДанныеСписка.Номенклатура.ОсновноеИзображение.Хранилище.Получить();
Иначе
ЭлементыФормы.ОсновноеИзображение.Картинка = мПустаяКартинка;
КонецЕсли;
КонецПроцедуры
Показать4. В конец процедуры ОбработкаПодбора(ТабличнаяЧасть, ЗначениеВыбора) добавить строку
ПоказатьОсновноеИзображение();
. У меня получилось так:
// Производит заполнение документа переданными из формы подбора данными.
//
// Параметры:
// ТабличнаяЧасть - табличная часть, в которую надо добавлять подобранную позицию номенклатуры;
// ЗначениеВыбора - структура, содержащая параметры подбора.
//
Процедура ОбработкаПодбора(ТабличнаяЧасть, ЗначениеВыбора) Экспорт
Перем СпособЗаполненияЦен, ВалютаЦены;
Перем Номенклатура, ЕдиницаИзмерения, Количество, Цена, Характеристика, Серия;
Если РаботаСДиалогами.ПроверитьЧтоКачествоВСтруктуреПодбораНеУдовлетворяетУсловиямПодбора(ЗначениеВыбора,
Истина) Тогда
Возврат;
КонецЕсли;
// Получим параметры подбора из структуры подбора.
ЗначениеВыбора.Свойство("СпособЗаполненияЦен", СпособЗаполненияЦен);
ЗначениеВыбора.Свойство("ВалютаЦены", ВалютаЦены);
ЗначениеВыбора.Свойство("Номенклатура", Номенклатура);
ЗначениеВыбора.Свойство("ЕдиницаИзмерения", ЕдиницаИзмерения);
ЗначениеВыбора.Свойство("Количество", Количество);
ЗначениеВыбора.Свойство("Цена", Цена);
ЗначениеВыбора.Свойство("Характеристика", Характеристика);
ЗначениеВыбора.Свойство("Серия", Серия);
// Пересчитаем цену в валюту регламентированного учета
СтруктураКурса = МодульВалютногоУчета.ПолучитьКурсВалюты(мВалютаРегламентированногоУчета, Дата);
Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаЦены, мВалютаРегламентированногоУчета, СтруктураКурса.Курс, СтруктураКурса.Кратность, Дата);
// Ищем выбранную позицию в таблице подобранной номенклатуры.
// Если найдем - увеличим количество; не найдем - добавим новую строку.
СтруктураОтбора = Новый Структура();
СтруктураОтбора.Вставить("Номенклатура", Номенклатура);
СтруктураОтбора.Вставить("ЕдиницаИзмерения", ЕдиницаИзмерения);
СтруктураОтбора.Вставить("ХарактеристикаНоменклатуры", Характеристика);
СтруктураОтбора.Вставить("СерияНоменклатуры" , Серия);
Если СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоРозничнымЦенам Тогда
СтруктураОтбора.Вставить("Цена", Цена);
КонецЕсли;
СтрокаТабличнойЧасти = ОбработкаТабличныхЧастей.НайтиСтрокуТабЧасти(ТабличнаяЧасть, СтруктураОтбора);
СуммаСтроки = 0;
Если СтрокаТабличнойЧасти <> Неопределено Тогда
// Нашли, увеличиваем количество в первой найденной строке.
СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество + Количество;
Если Не ПересчитатьАвтоматическиеСкидки() Тогда
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецЕсли;
Иначе
// Не нашли - добавляем новую строку.
СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить();
СтрокаТабличнойЧасти.Номенклатура = Номенклатура;
СтрокаТабличнойЧасти.Количество = Количество;
СтрокаТабличнойЧасти.ЕдиницаИзмерения = ЕдиницаИзмерения;
СтрокаТабличнойЧасти.Коэффициент = ЕдиницаИзмерения.Коэффициент;
СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Характеристика;
СтрокаТабличнойЧасти.СерияНоменклатуры = Серия;
СтрокаТабличнойЧасти.Цена = Цена;
Если Не ПересчитатьАвтоматическиеСкидки() Тогда
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецЕсли;
// Ввод состава набора
СтрокаТабличнойЧасти.КлючСтроки = УправлениеЗапасами.ПолучитьНовыйКлючСтроки(ЭтотОбъект);
УправлениеЗапасами.ДобавитьСоставНабора(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецЕсли;
ТабличнаяЧастьИмя = "Товары";
ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяСтрока = СтрокаТабличнойЧасти;
ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяКолонка = ЭлементыФормы[ТабличнаяЧастьИмя].Колонки["Количество"];
ПоказатьОсновноеИзображение();
КонецПроцедуры // ОбработкаПодбора()
Показать5. В процедуру ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти) добавить в конец
ПоказатьОсновноеИзображение();
// Производит заполнение и установку необходимых полей при изменении товара в табличной части.
// Вызывается из:
// ТоварыНоменклатураПриИзменении()
// ВнешнееСобытие()
//
Процедура ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти)
// Заполнение цены зависит от розничности операции.
ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект,
мВалютаРегламентированногоУчета, мВалютаРегламентированногоУчета, , Истина);
// Установим способ редактирования цены.
УстановитьСвойстваПоляВводаЦены(СтрокаТабличнойЧасти.Номенклатура);
ПоказатьОсновноеИзображение();
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот