Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 00:46

Марка и серии номенклатуры

Автор sali, 04 дек 2024, 07:43

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

sali

здравствуйте. подскажите как лучше или правильно передать значения отсканированной марки в тч чека ккм?
то бишь когда выбираем товар он проходит дополнительно 2 условия если есть у него характеристики или является ли он маркированным. если 2 случай, то открывается окно для скана марки - сохраняется и после пробития чека эта отсканированная марка должна записаться в табличной части чека "марки и серии"

Максим75

sali, что такое "открывается окно для скана марки"?
видимо открывается некая форма? вот при открытии формы передавайте оповещение, и потом в этом оповещении обрабатывайте факт того, что что-то ввелось в виде марки, и вот это что-то в табличную часть и запишите.
я не знаю, что такое марка, ну это число, или это некий набор цифр и букв (который подпадает под некий стандарт штрихкода).
короче говоря в табличную часть чека надо реквизит добавить, где эту марку хранить и туда писать.

вот прям аж интересно, когда же Вы откроете типовую и посмотрите, как же там РМК реализовано. Там все есть, и как штрих-коды вводить, и как акцизные марки на алкоголь и т.д.
велосипед давно произведен.

sali

Цитата: Максим75 от 04 дек 2024, 09:53что такое "открывается окно для скана марки"?
вы правы это некая форма для сканирования марки на товаре. то есть есть штрихкод (полосатый прямоугольник), а есть марка (квадратный qr-код). она в виде цифр и их вроде как 13.
Цитата: Максим75 от 04 дек 2024, 09:53передавайте оповещение
вооот теперь по поводу этого. я делаю такое оповещение
Если СтруктураПараметров.ТипМаркировки = ПРЕДОПРЕДЕЛЕННОЕЗНАЧЕНИЕ("Перечисление.ТипыМаркировкиККТ.МаркированныйТовар") Тогда   
ОповещениеМарка = Новый ОписаниеОповещения("СканМаркровки", ЭтотОбъект);
ОткрытьФорму("Обработка.РабочееМестоКассира.Форма.ФормаМарка");
КонецЕсли;

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

//передать результат (код марки) в тч и с ней же номенклатуру , е.и, номенклатура гуид
КонецПроцедуры

это будет правильное оповещения?
Цитата: Максим75 от 04 дек 2024, 09:53когда же Вы откроете типовую и посмотрите,
открывал я ее, не было там таких действий :)  :)

sali

Максим75, и получается нужно и в процедуру "пробитие чека на сервере" нужно изменения вносить

Максим75

Цитата: sali от 04 дек 2024, 10:56Максим75, и получается нужно и в процедуру "пробитие чека на сервере" нужно изменения вносить
без малейшего понятия, что у Вас в данной процедуре делается.
Вроде марку вводите на клиенте, причем здесь пробитие чека да еще на сервере.

sali

Максим75, идет заполнение чека. запросом выгружаются реквизиты с тч и заполняются

Максим75

Цитата: sali от 04 дек 2024, 11:47Максим75, идет заполнение чека. запросом выгружаются реквизиты с тч и заполняются
понимаете - пробитие чека на сервере подразумевает непосредственное пробитие кассового чека на РРО.
если необходимо печатать qr-код марки, конечно надо переделывать.

в типовых реализован следующий алгоритм:
вначале с формы РМК ПЕРЕД непосредственной отправкой чека в РРО происходит создание в базе документа ЧекККМ, его заполнение и запись.
потом если чек на РРО пробился полностью (есть связь с РРО, не закончилась бумага и т.д.) - вот уже этот созданный в базе документ ЧекККМ проводится, получает статус ПРОБИТЫЙ и очищается форма РМК для ввода нового чека.

Как Вы организовали - знаете только Вы. соответственно, везде необходимо писать/выводить на печать и т.д. вот этот новый реквизит табличной части.

sali

Максим75, я вас понял. подскажите как правильно написать передачу марки в тч. написал открытие формы при маркированном товаре. на форме "скан марки" делаю обработчик.
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ScanData" Тогда   
//ЭтотОбъект.МаркаСерии = Параметр[0];   
Если ЗначениеЗаполнено(Элементы.МаркаСерииМарка) Тогда   

КонецЕсли;
КонецЕсли;
КонецПроцедуры

КАК МНЕ ДАЛЬШЕ ОБРАТИТЬСЯ К ТЧ документа чек ККМ и записать?

sali

sali, &НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = "ПодключаемоеОборудование" и ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" Тогда
Если Параметр[1] = Неопределено Тогда   
новаястрока = маркасерии.Добавить();
новаястрока.реквизит1 = Параметр[0];
Иначе 
новаястрока = маркасерии.Добавить();
новаястрока.реквизит1 = Параметр[1][1];
КонецЕсли; 
КонецЕсли;
КонецЕсли;
КонецПроцедуры 
как-то отсюда или куда-то сохранить и передать? Максим75,


Максим75

sali, ну, отсюда никак, от слова совсем.
ну посмотрите на просторах, как организовывают открытие формы и с последующей обработкой в оповещении, что эта форма возвращает.

вот пример из типовой, в РМК есть возможность продолжить отложенный чек

Процедура ОповещениеПродолжитьЧек(РезультатВыполнения = Неопределено, ПараметрДействия = Неопределено) Экспорт

Если Объект.Товары.Количество() = 0 Тогда
Объект.Дата = ТекущаяДата();
Иначе
Возврат;

КонецЕсли;

ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ПродолжениеОтложенныхЧеков");
ПараметрыФормы.Вставить("МассивКассККМ", МассивКассККМКлиент);
ПараметрыФормы.Вставить("СкрыватьКолонкуОрганизации", МассивКассККМКлиент.Количество() = 1);

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

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

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

Отказ = Ложь;

ПродолженииЧекаСервера(ЧекККМВОбработке, Отказ);

Если Отказ Тогда
Возврат;
КонецЕсли;

ОбработкаТабличнойЧастиТоварыКлиент.ОбновитьКэшированныеЗначенияДляУчетаСерий(Элементы.Товары, КэшированныеЗначения, ПараметрыУказанияСерий);
СкидкиНаценкиКлиент.СброситьФлагСкидкиРассчитаны(ЭтотОбъект);

ЛогированиеПоЧеку("ЧекПродолжен", РезультатОткрытияФормы.ЧекККМ);

ОбновитьФорму();
КонецЕсли;
КонецПроцедуры

посмотрите, как вызывается форма выбора чека. и уже после того, как на этой форме что-то выбрали, отрабатывает процедура, указанная в описании оповещения.

Теги:

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

Рейтинг@Mail.ru

Поиск