Как изменить код функции, чтобы выполнить задачу? 1С: Розница 2,2
моя задача:
клиент хочет использовать реквизит "Артикул" в ШК.
Т.е. в ШК(EAN13) будет стоять сначала "код артикула товара "(5
символов)+дальше вес(7 символов из которых 4 первых это целая часть и
3 последующих дробная).
У номенклатуры уже есть реквизит Артикул. В него скажем будет забито некое
число пусть начинающееся с 2 (уникальное для каждой позиции
напр.23456) и нужно доработать функцию, чтобы она понимала, что для ШК начинающийся на 2 нужно
искать по описанному алгоритму, а не по рег.сведений Штрихкоды.
я хочу подставить вместо префиксавесовоготовара артикулвесового товара. Или можете подсказать другие варианты решения?
вот функция:
клиент хочет использовать реквизит "Артикул" в ШК.
Т.е. в ШК(EAN13) будет стоять сначала "код артикула товара "(5
символов)+дальше вес(7 символов из которых 4 первых это целая часть и
3 последующих дробная).
У номенклатуры уже есть реквизит Артикул. В него скажем будет забито некое
число пусть начинающееся с 2 (уникальное для каждой позиции
напр.23456) и нужно доработать функцию, чтобы она понимала, что для ШК начинающийся на 2 нужно
искать по описанному алгоритму, а не по рег.сведений Штрихкоды.
я хочу подставить вместо префиксавесовоготовара артикулвесового товара. Или можете подсказать другие варианты решения?
вот функция:
Функция ПолученШтрихкодИзСШК(Штрихкод, Форма, СтруктураДействий = Неопределено) Экспорт
Перем СтруктураПараметровДействия, Пользователь;
Если СтруктураДействий = Неопределено Тогда
СтруктураДействий = ВариантыПроверокШтрихкода();
КонецЕсли;
ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13; // ОпределитьТипШтрихкода(Штрихкод);
НеизвестныеДанныеПО = Истина;
СтруктураПараметровКлиента = Новый Структура;
// Весовые товары и штучные на весах.
Если СтруктураДействий.Свойство("ПроверкаВесовыхТоваров")
И ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13 Тогда
АртикулВесовогоТовара = Номенклатура.Артикул;
ПрефиксВнутреннегоШтрихкодаШтучногоФасованногоТовара = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ПрефиксВнутреннегоШтрихкодаШтучногоФасованногоТовара");
ДлинаКодаВесовогоТовара = СтрДлина(Формат(ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ВерхняяГраницаДиапазонаSKUВесовогоТовара"),"ЧГ=0"));
Если ДлинаКодаВесовогоТовара < 5 Тогда
ДлинаКодаВесовогоТовара = 5;
КонецЕсли;
Если (ПрефиксВнутреннегоШтрихкодаВесовогоТовара > 0)
И (ДлинаКодаВесовогоТовара > 0)
И (СтрДлина(Штрихкод) = 13)
И (Лев(Штрихкод, 2) = ("2" + ПрефиксВнутреннегоШтрихкодаВесовогоТовара)
ИЛИ Лев(Штрихкод, 2) = ("2" + ПрефиксВнутреннегоШтрихкодаШтучногоФасованногоТовара)) Тогда
КодТовара = Сред(Штрихкод, 3, ДлинаКодаВесовогоТовара);
КоличествоТовара = Сред(Штрихкод, 3 + ДлинаКодаВесовогоТовара, 10 - ДлинаКодаВесовогоТовара);
Если Лев(Штрихкод, 2) = ("2" + ПрефиксВнутреннегоШтрихкодаВесовогоТовара) Тогда
// Весовой товара расфасованный на весах.
Запрос = Новый Запрос(
"ВЫБРАТЬ ПЕРВЫЕ 1
| КодыТоваровSKU.Номенклатура КАК Номенклатура,
| КодыТоваровSKU.Характеристика КАК Характеристика,
| КодыТоваровSKU.Упаковка КАК Упаковка,
| &КоличествоТовара / 1000 КАК Количество
|ИЗ
| РегистрСведений.КодыТоваровSKU КАК КодыТоваровSKU
|ГДЕ
| КодыТоваровSKU.SKU = &Код");
Иначе
// Штучный товар расфасованный на весах.
Запрос = Новый Запрос(
"ВЫБРАТЬ ПЕРВЫЕ 1
| КодыТоваровSKU.Номенклатура КАК Номенклатура,
| КодыТоваровSKU.Характеристика КАК Характеристика,
| КодыТоваровSKU.Упаковка КАК Упаковка,
| &КоличествоТовара КАК Количество
|ИЗ
| РегистрСведений.КодыТоваровSKU КАК КодыТоваровSKU
|ГДЕ
| КодыТоваровSKU.SKU = &Код");
КонецЕсли;
Запрос.УстановитьПараметр("Код", Число(КодТовара));
Запрос.УстановитьПараметр("КоличествоТовара", Число(КоличествоТовара));
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
НеизвестныеДанныеПО = Ложь;
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("НеизвестныеДанныеПО", НеизвестныеДанныеПО);
СтруктураПараметров.Вставить("ЗначенияПоиска", Новый Массив);
СтруктураПараметров.Вставить("Действие", "ПроверкаВесовыхТоваров");
СтруктураПараметров.Вставить("ДанныеПО", Штрихкод);
СтруктураШтрихкода = Новый Структура;
ОбщегоНазначенияРТ.ПеренестиСтрокуВыборкиВСтруктуру(РезультатЗапроса, Выборка, СтруктураШтрихкода);
Если СтруктураДействий.Свойство("ИспользоватьКоличество") Тогда
СтруктураШтрихкода.Количество = СтруктураШтрихкода.Количество * СтруктураДействий.ИспользоватьКоличество;
КонецЕсли;
СтруктураПараметров.ЗначенияПоиска.Добавить(СтруктураШтрихкода);
СтруктураПараметровКлиента = Форма.ОбработатьДанныеПОВФормеСервер(СтруктураПараметров, СтруктураПараметровКлиента);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот