Как изменить код функции, чтобы выполнить задачу? 1С: Розница 2,2

1. user755570 22.05.17 11:23 Сейчас в теме
моя задача:
клиент хочет использовать реквизит "Артикул" в ШК.
Т.е. в ШК(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 = &Код");
            КонецЕсли;
            
            Запрос.УстановитьПараметр("Код", Число(КодТовара));
            Запрос.УстановитьПараметр("КоличествоТовара", Число(КоличествоТовара));
            РезультатЗапроса = Запрос.Выполнить();
            
            Если НЕ РезультатЗапроса.Пустой() Тогда
                Выборка = РезультатЗапроса.Выбрать();
                Выборка.Следующий();
                НеизвестныеДанныеПО = Ложь;
                СтруктураПараметров = Новый Структура;
                СтруктураПараметров.Вставить("НеизвестныеДанныеПО", НеизвестныеДанныеПО);
                СтруктураПараметров.Вставить("ЗначенияПоиска", Новый Массив);
                СтруктураПараметров.Вставить("Действие", "ПроверкаВесовыхТоваров");
                СтруктураПараметров.Вставить("ДанныеПО", Штрихкод);
                СтруктураШтрихкода  = Новый Структура;
                ОбщегоНазначенияРТ.ПеренестиСтрокуВыборкиВСтруктуру(РезультатЗапроса, Выборка, СтруктураШтрихкода);
                Если СтруктураДействий.Свойство("ИспользоватьКоличество") Тогда
                    СтруктураШтрихкода.Количество = СтруктураШтрихкода.Количество * СтруктураДействий.ИспользоватьКоличество;
                КонецЕсли;
                СтруктураПараметров.ЗначенияПоиска.Добавить(СтруктураШтрихкода);
                СтруктураПараметровКлиента = Форма.ОбработатьДанныеПОВФормеСервер(СтруктураПараметров, СтруктураПараметровКлиента);
                
            КонецЕсли;
            
        КонецЕсли;
        
    КонецЕсли;
Показать
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 22.05.17 11:47 Сейчас в теме
(1)
а не по рег.сведений Штрихкоды.
- а почему бы и нет? Записывайте в регистр ваши коды... А поиск стандартный
+
3. user755570 22.05.17 11:49 Сейчас в теме
(2)просто такое задание, надо переделать
+
4. TODD22 18 22.05.17 11:50 Сейчас в теме
Долго темы плодить будете?
+
5. user755570 22.05.17 11:51 Сейчас в теме
(4)я просто прошу помочь
+
6. TODD22 18 22.05.17 11:53 Сейчас в теме
Я вам уже написал как решить вашу задачу.
+
7. user755570 22.05.17 11:54 Сейчас в теме
(6)никакую обработку писать не нужно. нужно просто поменять код и все
+
10. TODD22 18 22.05.17 12:02 Сейчас в теме
(7)Пишу ещё раз медленно... Не надо ничего менять. Надо записать в регистр PLU артикулы как номера PLU. Больше ничего делать не надо. Никакой код менять не нужно.
Хотя вам видней... вам же на работу устраиваться...
+
12. user755570 22.05.17 12:08 Сейчас в теме
(10)подскажите как это сделать?
+
13. WasiliyMay 8 22.05.17 13:21 Сейчас в теме
(12) Вам уже дали несколько вариантов решения. Для получения готового решения на сайте существует биржа заказов
+
8. user755570 22.05.17 11:56 Сейчас в теме
(6)я хочу подставить вместо префиксавесовоготовара артикулвесового товара. но там останется код товара, с ним тоже чтото делать надо
+
9. alex-l19041 8 22.05.17 11:58 Сейчас в теме
(8)
но там останется код товара
- "там" - это где ?
+
11. user755570 22.05.17 12:07 Сейчас в теме
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот