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

Как добавить позицию характеристики номенклатуры в рмк

Автор sali, 25 ноя 2024, 10:51

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

sali


sali

Максим75, подскажите пожалуйста, как передать отсканированные марки маркированного товара
задача такая что, при маркированном товаре открывается окно для сканирования марки и после нужно записать эту марку в чеке. вот как передать это? Я с оповещением ранее не работал и окончательно сути работы не понял
предоставлю код начиная с подбора номенклатуры:
&НаКлиенте
Процедура Подбор(Команда)
//ПараметрыФормы = Новый Структура;
//ПараметрыФормы.Вставить("", );
Оповещение = Новый ОписаниеОповещения("ПодборЗаверщение", ЭтотОбъект);
ОткрытьФорму("Обработка.РабочееМестоКассира.Форма.ФормаПодбора",, ЭтотОбъект,,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

&НаКлиенте
Процедура ПодборЗаверщение(Результат, ДополнительныеПараметры) Экспорт

Если Результат = Неопределено Тогда
Возврат;
КонецЕсли; 

СтруктураПараметров = ЗаполнитьСвойстваНоменклатуры(Результат.Номенклатура, ВидЦен,);
СтруктураПараметров.Вставить("Количество", 1);     

Если СтруктураПараметров.ТипМаркировки = "Маркированный товар" Тогда   
ОповещениеМарка = Новый ОписаниеОповещения("СканМаркровки", ЭтотОбъект);
ОткрытьФорму("Обработка.РабочееМестоКассира.Форма.ФормаМарка",, ЭтотОбъект ,,,, ОповещениеМарка, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;

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

ДобавитьПозициюНоменклатуры(СтруктураПараметров);

ПересчитатьДокументНаКлиенте();

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


&НаКлиенте
Процедура СканМаркровки(Результат, ДополнительныеПараметры) Экспорт 
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;   


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

&НаКлиенте
Процедура ОбработатьВыборХарактеристики(РезультатЗакрытия,ДопПараметры) Экспорт

Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;

СтруктураПараметров = ЗаполнитьСвойстваНоменклатуры(, ВидЦен, РезультатЗакрытия.НаименованиеХарактеристики);
СтруктураПараметров.Вставить("Количество", 1);   
ПересчитатьДокументНаКлиенте();

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


sali


antoneus


antoneus

Цитата: sali от 28 ноя 2024, 14:35Я с оповещением ранее не работал и окончательно сути работы не понял

А справку, конечно, писали для слабаков.

sali

antoneus, записать в документе чекаСнимок экрана (50).png
в табличную часть "марка и серии номенклатуры"

sali

antoneus, читал. несколько раз и несколько примеров. вот сейчас получилось вывести сообщением Результат выбранной характеристики, но вот замена номенклатуры на выбранную характеристики не получается. пока такой результатСнимок экрана (51).png

sali

Максим75, antoneus, сам код который при выборе товара у которого используется характеристика - открывает список характеристик(по сути вся номенклатура, если выбираю форму с самой формой характеристики открывается ее редактирование - что за фигня?)
&НаКлиенте
Процедура Подбор(Команда)
//ПараметрыФормы = Новый Структура;
//ПараметрыФормы.Вставить("", );
Оповещение = Новый ОписаниеОповещения("ПодборЗаверщение", ЭтотОбъект);
ОткрытьФорму("Обработка.РабочееМестоКассира.Форма.ФормаПодбора",, ЭтотОбъект,,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

&НаКлиенте
Процедура ПодборЗаверщение(Результат, ДополнительныеПараметры) Экспорт

Если Результат = Неопределено Тогда
Возврат;
КонецЕсли; 

СтруктураПараметров = ЗаполнитьСвойстваНоменклатуры(Результат.Номенклатура, ВидЦен,); 
Если СтруктураПараметров.ИспользоватьХарактеристики = Истина Тогда     
ОписаниеВыбора  = Новый ОписаниеОповещения("ОбработатьВыборХарактеристики", ЭтотОбъект);
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",,ЭтотОбъект,,,, ОписаниеВыбора, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); //форма редактирования х-тик - Справочник.Номенклатура.Форма.РедактированиеХарактеристик
//ДобавитьПозициюНоменклатуры(СтруктураПараметров);
Иначе
СтруктураПараметров.Вставить("Количество", 1);
ДобавитьПозициюНоменклатуры(СтруктураПараметров);
КонецЕсли; 


Если СтруктураПараметров.ТипМаркировки = "Маркированный товар" Тогда   
ОповещениеМарка = Новый ОписаниеОповещения("СканМаркровки", ЭтотОбъект); //
ОткрытьФорму("Обработка.РабочееМестоКассира.Форма.ФормаМарка",, ЭтотОбъект ,,,, ОповещениеМарка, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;

//Если СтруктураПараметров.ИспользоватьХарактеристики = Истина Тогда     
// ОписаниеВыбора  = Новый ОписаниеОповещения("ОбработатьВыборХарактеристики", ЭтотОбъект);
// ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",,ЭтотОбъект,,,, ОписаниеВыбора, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
//КонецЕсли;           

//ДобавитьПозициюНоменклатуры(СтруктураПараметров);

ПересчитатьДокументНаКлиенте();

КонецПроцедуры 
&НаКлиенте
Процедура ОбработатьВыборХарактеристики(РезультатЗакрытия,ДопПараметры) Экспорт

Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;       

Сообщить(РезультатЗакрытия);
//ПредставлениеТовара = РезультатЗакрытия;

СтруктураПараметров = ЗаполнитьСвойстваНоменклатуры(, , РезультатЗакрытия);
СтруктураПараметров.Вставить("Количество", 1); 
ДобавитьПозициюНоменклатуры(СтруктураПараметров);

//ПересчитатьДокументНаКлиенте();

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


sali

sali, &НаСервере
Процедура ДобавитьПозициюНоменклатуры(СтруктураПараметров)

Если СтруктураПараметров.Цена = 0
И НЕ НастройкиККМ.НазначатьЦену Тогда
Возврат;
КонецЕсли;

СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("Номенклатура", СтруктураПараметров.Номенклатура);
СтруктураОтбора.Вставить("НаименованиеХарактеристики", СтруктураПараметров.НаименованиеХарактеристики);
НайденныеСтроки = Объект.Товары.НайтиСтроки(СтруктураОтбора);

Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТабличнойЧасти = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти, СтруктураПараметров);
Иначе
СтрокаТабличнойЧасти = НайденныеСтроки[0];
СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество + 1;
КонецЕсли;

Если СтруктураПараметров.ТипМаркировки = Перечисления.ТипыМаркировкиККТ.МаркированныйТовар Тогда
//вывести окно для сканера марки товара
СтрокаТабличнойЧасти.ИндексКартинки = 1;
Иначе
СтрокаТабличнойЧасти.ИндексКартинки = 0;   
КонецЕсли;

СтрокаТабличнойЧасти.ПредставлениеТовара = СтруктураПараметров.НоменклатураНаименование; 
СтрокаТабличнойЧасти.ЕдиницаИзмерения = СтруктураПараметров.ЕдиницаИзмерения;
СтрокаТабличнойЧасти.СтавкаНДС = СтруктураПараметров.СтавкаНДС;
СтрокаТабличнойЧасти.СтавкаНСП = СтруктураПараметров.СтавкаНСП;

//Если Не СтруктураПараметров.Весовой Тогда
// ТекущаяСтрока.Количество = СтруктураПараметров.Количество;
//КонецЕсли;

ПересчитатьСтроку(СтрокаТабличнойЧасти);

Элементы.Товары.ТекущаяСтрока = СтрокаТабличнойЧасти.ПолучитьИдентификатор();
КонецПроцедуры 

Максим75

sali, Характеристика где хранится?
обычно это отдельный справочник, подчиненный справочнику Номенклатура. т.е. вначале выбирается сама номенклатура, а потом уже с этой выбранной номенклатурой как владельцем открывается список выбора самих характеристик.
что у Вас? где Вы хотите хранить характеристики?

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

Теги:

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

Рейтинг@Mail.ru

Поиск