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

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

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

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

sali

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

не могу в процедуре ПодборЗаверщение "захватить" нужную х-ку чтобы перенести ее в рмк. характеристики здесь идут не отдельным справочником, а как реквизит, два. ИспользоватьХарактеристики - булево, хАРАКТЕРИСТИКИ - реквизит, переход на форму х-тик
Снимок экрана (39).pngСнимок экрана (40).pngСнимок экрана (41).png   

sali


sali

и еще. как в форму рмк передать что товар маркированный?

Максим75

sali, при открытии формы выбора необходимо передать некое оповещение (один из параметров открытия формы) и после закрытия формы в этом оповещении и обработать, что вернет форма (возвращает в РезультатОткрытияФормы или Неопределено или что-то что выбрали)

вот в типовой в РМК что пишут в событии начала выбора номенклатуры

ОбработчикОповещения = Новый ОписаниеОповещения("ОповещениеОткрытьФормуВыбораНоменклатурыТоварыНоменклатураНачалоВыбора", ЭтотОбъект);
ОткрытьФормуВыбораСправочника("Номенклатура",,ОбработчикОповещения);

ну вот просто возьмите и посмотрите, как реализовано РМК в типовой, там же все есть.

sali

Максим75, да я не знаю уже где и смотреть, искать информацию по рмк. где-то недоступно, где-то платить надо, где-то мало

sali

Максим75, скажите, а можно ли перебирать чеки в цикле по значению? к примеру
пока выборка.следующий() цикл
    для каждого типзнч(выборка.типденежныхсредств) = тип(перечисление.типыоплатыккт.наличные)/ или = "наличная оплата"/ тогда
        вкассе = выборка.суммаостаток;
    конеццикла;
конеццикла;

Максим75

sali, можно, но не в том виде, что у Вас.
посмотрите, что Вы написали во втором цикле и трезво содрогнитесь.

sali

Максим75:D  :D  да простите за это. но так хотя бы видно что конкретно имел ввиду

sali

Максим75, просто я до сих пор не могу получить остаток по кассе именно по наличным только .
запутался уже, нужно настроить движение по двум документам по наличке, то бишь условие ставить перед движением - если вид движение внесение/выемка и тип движения наличные  то записываем


sali

Максим75, у меня снова неправильные движения по остатку в кассе. хотя приделал одинаковые значения
код чтобы показать остаток
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)     Параметры.Свойство("КассоваяСмена", КассоваяСмена);     Параметры.Свойство("КассаККМ", КассаККМ);     Параметры.Свойство("ВидДвиженияНаличных", ВидДвиженияНаличных);         Если ВидДвиженияНаличных = Перечисления.ВидыДвиженияНаличных.Внесение Тогда         Заголовок = "Внесение";         Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВнесение;     Иначе         Заголовок = "Выемка";                Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВыемка;                                        Запрос = Новый Запрос;         Запрос.Текст =         "ВЫБРАТЬ         |    ДенежныеСредстваОстатки.СуммаОстаток КАК СуммаОстаток         |ИЗ         |    РегистрНакопления.ДенежныеСредства.Остатки КАК ДенежныеСредстваОстатки";                 РезультатЗапроса = Запрос.Выполнить();                 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();                 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл                ВКассе = ВыборкаДетальныеЗаписи.СуммаОстаток;            КонецЦикла;        КонецЕсли;          СоздатьВнесениеВыемкаДСНаСервере(); КонецПроцедуры
движения
Процедура ОбработкаПроведения(Отказ, Режим)              Если ТипДенежныхСредств = Перечисления.ТипыОплатыККТ.Наличные ИЛИ ТипДенежныхСредств = "Наличная оплата" Тогда         // регистр ДенежныеСредства Приход         Движения.ДенежныеСредства.Записывать = Истина;         Движение = Движения.ДенежныеСредства.Добавить();         Движение.ВидДвижения = ВидДвиженияНакопления.Приход;         Движение.Период = Дата;         Движение.КассаККМ = КассаККМ;         Движение.Автор = Автор;         Движение.ТипДенежныхСредств = ТипДенежныхСредств;         Движение.ВидДвиженияНаличных = ВидДвиженияНаличных;         Движение.Сумма = Сумма;                  ИначеЕсли ТипДенежныхСредств = Перечисления.ТипыОплатыККТ.Наличные ИЛИ ТипДенежныхСредств = "Наличная оплата" Тогда         // регистр ДенежныеСредства Расход         Движения.ДенежныеСредства.Записывать = Истина;         Движение = Движения.ДенежныеСредства.Добавить();         Движение.ВидДвижения = ВидДвиженияНакопления.Расход;         Движение.Период = Дата;         Движение.КассаККМ = КассаККМ;         Движение.Автор = Автор;         Движение.ТипДенежныхСредств = ТипДенежныхСредств;         Движение.ВидДвиженияНаличных = ВидДвиженияНаличных;         Движение.Сумма = Сумма;             КонецЕсли; КонецПроцедуры //документ чеки ккм Процедура ОбработкаПроведения(Отказ, Режим)     // регистр ДенежныеСредства Приход     Движения.ДенежныеСредства.Записывать = Истина;     Для Каждого ТекСтрокаОплаты Из Оплаты Цикл         Движение = Движения.ДенежныеСредства.Добавить();         Движение.ВидДвижения = ВидДвиженияНакопления.Приход;         Движение.Период = Дата;         Движение.КассаККМ = КассаККМ;         Движение.Автор = Автор;         Движение.ТипДенежныхСредств = ТипДенежныхСредств;         Движение.ВидДвиженияНаличных = ВидДвиженияНаличных;         Движение.Сумма = ТекСтрокаОплаты.Сумма;     КонецЦикла; КонецПроцедуры
вид движения наличных - перечисления виды движения наличных(внесение/выемка)
тип денежных средств - справочник вид оплаты (есть реквизит там тип оплаты который ссылается на перечисления типы оплат ккт (наличные/электроно)Снимок экрана (43).pngСнимок экрана (45).png 

Теги:

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

Рейтинг@Mail.ru

Поиск