7.7 Сохряняя товар в номен. руается на 8 EAN код, с 13 все ок

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем vladj, 19 мар 2012.

  1. TopicStarter Overlay
    vladj
    Offline

    vladj

    Регистрация:
    19 мар 2012
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Люди добрые помогите!
    Я не программист но очень надо разобраться...

    Код:
    Функция глКонтрольныйСимволEAN(ШтрКод, Тип) Экспорт
    
    Четн = 0;
    Нечетн = 0;
    
    Если Тип = 13 Тогда
    КолвоИтераций = 6;
    ИначеЕсли Тип = 8 Тогда
    КолвоИтераций = 4;
    Иначе
    Возврат "-1";
    КонецЕсли;
    
    Для Индекс = 1 По КолвоИтераций Цикл
    Четн = Четн + Сред(ШтрКод, 2 * Индекс, 1);
    Нечетн = Нечетн + Сред(ШтрКод, 2 * Индекс - 1, 1);
    КонецЦикла;
    
    Если Тип = 13 Тогда
    Четн = Четн * 3;
    Иначе
    Нечетн = Нечетн * 3;
    КонецЕсли;
    
    КонтЦифра = 10 - (Четн + Нечетн) % 10;
    
    Возврат ?(КонтЦифра = 10, "0", Строка(КонтЦифра));
    
    КонецФункции // КонтрольныйСимволEAN()



    Код:
    Процедура ПриЗаписи()  
    
    Если ПустоеЗначение(КодЕАН) = 0 Тогда 
    Если глКонтрольныйСимволEAN(КодЕАН,СтрДлина (СокрЛП (Строка(КодЕан))))  <> Прав(СокрЛП (Строка(КодЕАН)), 1) Тогда
    Предупреждение("Штрих-код имеет неправильный формат или длину!");
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;				  
    


    С 13 значными штрихами все ок... На 8ми ругаетсься... Подскажите что надо поравить буду ВЕСЬМА благодарен!
  2. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Думаю нужно дописать в этом куске для 8-значного:

    Код:
    Если Тип = 13 Тогда
    Четн = Четн * 3;
    Иначе
    Нечетн = Нечетн * 3;
    КонецЕсли;
  3. TopicStarter Overlay
    vladj
    Offline

    vladj

    Регистрация:
    19 мар 2012
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Подскажите в таком виде как надо вставить... Метод подбора сдесь не помогает) Заранее благодарен!
  4. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Проверьте 8-значный код через функцию глКонтрольныйСимволEAN()
    добейтесь выполнения условия:
    Код:
    глКонтрольныйСимволEAN(КодЕАН,СтрДлина (СокрЛП (Строка(КодЕан)))) = Прав(СокрЛП (Строка(КодЕАН)), 1)
  5. TopicStarter Overlay
    vladj
    Offline

    vladj

    Регистрация:
    19 мар 2012
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Сделал чудом...

    Теперь новая проблема, как сделать не только ровно 13 а еще добавить равно 8, те роавно 13 и 8, чтоб распозновало и 13 и 8



    Код:
     ШтрихКод = Данные;
    
    Если СтрДлина(СокрЛП(Данные)) <> 13 Тогда
    предупреждение(СтрДлина(СокрЛП(Данные)));
    МоеПредупреждение("Ошибка!","Не известный формат штрихкода!",1,1,0);
    ШтрихКод = "";	  
    ;	
    Возврат;  
    
    КонецЕсли;
  6. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Код:
    ШтрихКод = Данные;
    Если СтрДлина(СокрЛП(Данные)) = 13 ИЛИ СтрДлина(СокрЛП(Данные)) = 8 Тогда
    
    Иначе
    предупреждение(СтрДлина(СокрЛП(Данные)));
    МоеПредупреждение("Ошибка!","Не известный формат штрихкода!",1,1,0);
    ШтрихКод = "";  
    ; 
    Возврат; 
    
    КонецЕсли;
  7. TopicStarter Overlay
    vladj
    Offline

    vladj

    Регистрация:
    19 мар 2012
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Отказывается понимать(((


    Если СтрДлина(СокрЛП(Данные)) = 13 ИЛИ СтрДлина(СокрЛП(Данные)) <<?>>= 8 Тогда
    {Обработка.ЧекКкм: Неправильное использование арифметической или строковой операции
  8. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Может так:

    Код:
    ШтрихКод = Данные;
    Если (СтрДлина(СокрЛП(Данные)) = 13) ИЛИ (СтрДлина(СокрЛП(Данные)) = 8) Тогда
    Сообщить("Все ОК");
    Иначе
    предупреждение(СтрДлина(СокрЛП(Данные)));
    МоеПредупреждение("Ошибка!","Не известный формат штрихкода!",1,1,0);
    ШтрихКод = ""; 
    ;
    Возврат;
    КонецЕсли;
  9. TopicStarter Overlay
    vladj
    Offline

    vladj

    Регистрация:
    19 мар 2012
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    ООО ништяк))) Заработало))) спасибо огромное за помощь хороший человек!!!! :yahoo: :icon_smilemin: :yahoo:
  10. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Обращайтесь... Думаю, тему можно закрыть...
  11. TopicStarter Overlay
    vladj
    Offline

    vladj

    Регистрация:
    19 мар 2012
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Думаю да) Все ок надпись убрать нельзя? Ну в целом и не обязательно...
  12. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Почему же?? Убирай пож-та )))

Поделиться этой страницей