|
Получение остатков товара в чеке ккм | ☑ | ||
---|---|---|---|---|
0
GrishaRus
naïve
23.03.24
✎
11:03
|
Добрый день пытаюсь получить остаток по товару и внести ее в колонку "Остаток"
вот код Если ОформленияСтрок.Количество() = 0 Тогда Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ТаблицаНоменклатуры.Номенклатура, | ТаблицаНоменклатуры.ХарактеристикаНоменклатуры, | ТаблицаНоменклатуры.Склад |ПОМЕСТИТЬ ТаблицаВЗапрос |ИЗ | &ТаблицаНоменклатуры КАК ТаблицаНоменклатуры |; | |ВЫБРАТЬ | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток |ИЗ | РегистрНакопления.ТоварыВРознице.Остатки( | , | (Номенклатура, ХарактеристикаНоменклатуры, Склад) В | (ВЫБРАТЬ | ТаблицаВЗапрос.Номенклатура, | ТаблицаВЗапрос.ХарактеристикаНоменклатуры, | ТаблицаВЗапрос.Склад | ИЗ | ТаблицаВЗапрос КАК ТаблицаВЗапрос)) КАК ТоварыНаСкладахОстатки |ГДЕ | ТоварыНаСкладахОстатки.Номенклатура.Услуга = ЛОЖЬ"; ТаблицаНоменклатуры = Товары.Выгрузить(); ТаблицаНоменклатуры.Колонки.Добавить("Склад",Новый ОписаниеТипов("СправочникСсылка.Склады")); ТаблицаНоменклатуры.ЗаполнитьЗначения(Склад,"Склад"); Запрос.УстановитьПараметр("ТаблицаНоменклатуры", ТаблицаНоменклатуры); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда //Сообщить ("Нет смогли определить остатки"); Возврат; КонецЕсли; ТаблицаОстатков = Результат.Выгрузить(); ТаблицаОстатков.Индексы.Добавить("Номенклатура,ХарактеристикаНоменклатуры"); СтруктураПоиска = Новый Структура; МассивСтрок = Новый Массив; Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл СтруктураПоиска.Вставить("Номенклатура" , ОформлениеСтроки.ДанныеСтроки.Номенклатура); СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", ОформлениеСтроки.ДанныеСтроки.ХарактеристикаНоменклатуры); СтруктураПоиска.Вставить("Склад" , Склад); МассивСтрок = ТаблицаОстатков.НайтиСтроки(СтруктураПоиска); Остаток=0; Если МассивСтрок.Количество() > 0 Тогда Остаток = МассивСтрок[0].КоличествоОстаток; КонецЕсли; ОформлениеСтроки.Ячейки.Остаток.УстановитьТекст(Остаток); Сообщить (Остаток); КонецЦикла; КонецПроцедуры выдает остаток 0 хотя это не так |
|||
1
Волшебник
23.03.24
✎
11:02
|
Зачем так много кода?
Закачайте остатки в соответствие одним маленьким запросом с отбором по массиву ссылок. Или в таблицу значений, но обязательно проиндексируйте её. Затем достаньте остаток очень быстро. |
|||
2
Волшебник
23.03.24
✎
11:02
|
Кстати, зачем в чеке ККМ остаток? Там нужно отгружаемое количество, остаток точно не нужен
|
|||
3
Волшебник
23.03.24
✎
11:03
|
(0) Когда приводите фрагменты кода, то не глотайте названия процедур, а то теряется контекст
|
|||
4
GrishaRus
naïve
23.03.24
✎
11:05
|
(1) это конечно все хорошо, но данный код взят из инета и написан был для РМК и там говорят он работает, я знаю что он и в чеке ккм должен работать но я еще не догнал как нужно изменить запрос что бы он заработал :D
|
|||
5
GrishaRus
naïve
23.03.24
✎
11:06
|
(2) для удобства хотелось бы видеть свободный остаток без необходимости заходить в номенклатуру или в подбор
|
|||
6
АНДР
23.03.24
✎
11:37
|
(1) пункт 3.2 https://its.1c.ru/db/v8std/content/777/hdoc
|
|||
7
Волшебник
23.03.24
✎
11:39
|
(6) А я не про временные таблицы, а про таблицу значений
|
|||
8
АНДР
23.03.24
✎
11:44
|
(7) Точно, я невнимателен.
|
|||
9
rphosts
23.03.24
✎
16:39
|
(4) первое правило бойскаута: после тебя должно быть чище чем было до тебя
|
|||
10
Михаил Козлов
23.03.24
✎
16:49
|
(0) Вы определяете остатки по временной таблице ТаблицаНоменклатуры (параметр в запросе), а она у Вас пустая.
|
|||
11
Волшебник
23.03.24
✎
18:43
|
(5) В чеке этого не нужно. Там надо пробивать что принесли
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |