gifts2017

Розница 8. Аптека, поиск номенклатуры по штрихкоду

Опубликовал Илья Герман (its_33) в раздел Программирование - Практика программирования

В конфигурации Розница 8. Аптека, редакция 2.1 (2.1.9.12) возникает ситуация, когда при чтении штрихкода выводится вся номенклатура, у которой совпадает прочтенный штрихкод независимо от остатков на текущем складе рабочего места, что при недостаточном контроле со стороны кассира приводит к списанию номенклатуры с другого склада.
Для избежания данной ситуации предлагается в запрос типовой конфигурации добавлять условия по складу и положительным остаткам с изменением типовой конфигурации.

Для решения обозначенной проблемы предлагается модифицировать конфигурацию следующим образом:


В ОбщийМодуль.ПодключаемоеОборудованиеРТ

Функция ПолученШтрихкодИзСШК(Штрихкод, Форма, СтруктураДействий = Неопределено) Экспорт


После кода (строка 107)

// Товары, серийные номера, информационные карты.
Если СтруктураДействий.Свойство("ПроверкаТоваров")
ИЛИ СтруктураДействий.Свойство("ПроверкаСерийныхНомеров")
ИЛИ СтруктураДействий.Свойство("ПроверкаКарт") Тогда
// Товары
Если СтруктураДействий.Свойство("ПроверкаТоваров") 
И НЕ СтруктураПараметровКлиента.Свойство("ПрекратитьПоиск") Тогда
Запрос = Новый Запрос("ВЫБРАТЬ
| ВЫРАЗИТЬ(Штрихкоды.Владелец КАК Справочник.Номенклатура) КАК Номенклатура,
| Штрихкоды.Упаковка КАК Упаковка,
| Штрихкоды.Характеристика КАК Характеристика
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.Штрихкод = &Штрихкод
| И Штрихкоды.Владелец ССЫЛКА Справочник.Номенклатура");

Вставить

Попытка
Запрос = Новый Запрос("ВЫБРАТЬ
| ВЫРАЗИТЬ(Штрихкоды.Владелец КАК Справочник.Номенклатура) КАК Номенклатура,
| Штрихкоды.Упаковка КАК Упаковка,
| Штрихкоды.Характеристика КАК Характеристика
|ПОМЕСТИТЬ ХарактеристикиНоменклатураШтрихкода
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.Штрихкод = &Штрихкод
| И Штрихкоды.Владелец ССЫЛКА Справочник.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура,
| ТоварыНаСкладахОстатки.Характеристика,
| ТоварыНаСкладахОстатки.КоличествоОстаток,
| ТоварыНаСкладахОстатки.РезервОстаток
|ПОМЕСТИТЬ ХарактеристикиНоменклатураОстатки
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(
| ,
| Склад = &Склад
| И (Номенклатура, Характеристика) В
| (ВЫБРАТЬ
| ХарактеристикиНоменклатураШтрихкода.Номенклатура,
| ХарактеристикиНоменклатураШтрихкода.Характеристика
| ИЗ
| ХарактеристикиНоменклатураШтрихкода)) КАК ТоварыНаСкладахОстатки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ХарактеристикиНоменклатураШтрихкода.Номенклатура,
| ХарактеристикиНоменклатураШтрихкода.Упаковка,
| ХарактеристикиНоменклатураШтрихкода.Характеристика
|ИЗ
| ХарактеристикиНоменклатураШтрихкода КАК ХарактеристикиНоменклатураШтрихкода
|ГДЕ
| (ХарактеристикиНоменклатураШтрихкода.Номенклатура, ХарактеристикиНоменклатураШтрихкода.Характеристика) В
| (ВЫБРАТЬ
| ХарактеристикиНоменклатураОстатки.Номенклатура,
| ХарактеристикиНоменклатураОстатки.Характеристика
| ИЗ
| ХарактеристикиНоменклатураОстатки
| ГДЕ
| ХарактеристикиНоменклатураОстатки.КоличествоОстаток - ХарактеристикиНоменклатураОстатки.РезервОстаток > 0)");


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

КонецПопытки;


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

Работает как в управляемом режиме, так и обычном.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Терехин (anterehin) 13.09.16 09:45
Так надо наверно писать разрабам.. чтобы изменили в следующих релизах, а так получается при каждом обновление надо будет править.
2. Илья Герман (its_33) 13.09.16 13:13
Проблема эта давно стоит, но она не решается. Вставить небольшой кусок кода не проблема. Там возможно маркировать своими штрих-кодами входящие партии, тогда проблема не уникальных ШК пропадает, но это значительно увеличивает трудоемкость при приемке товара.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа