Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 09:29

Непрвильно формируется штрих код

Автор Yanawerg, 30 авг 2024, 13:54

0 Пользователей и 1 гость просматривают эту тему.

Yanawerg

В общем модуле есть функция формирования штрих кода.
Добавил эту функцию в обработку и штрих код формирует "Да" вместо того что должен - "000001/123".
Почему он при сканировании ищет то что нужно а при попытке сформировать выдаёт что-то не нужное ?
Функция СформироватьШтрихКод(Знач ПрефиксШтучногоТовара = Неопределено, Знач ПрефиксВнутреннегоШтрихкода = Неопределено) Экспорт

Если ПрефиксШтучногоТовара = Неопределено Тогда
ПрефиксШтучногоТовара = СокрЛП(Константы.ПрефиксШтучногоТовара.Получить());
КонецЕсли;

Если ПрефиксВнутреннегоШтрихкода = Неопределено Тогда
ПрефиксВнутреннегоШтрихкода = Константы.ПрефиксВнутреннегоШтрихкода.Получить();
КонецЕсли;

ПрефиксШтучногоТовара = ?(ПустаяСтрока(ПрефиксШтучногоТовара), "0", ПрефиксШтучногоТовара);
ПрефиксВнутреннегоШтрихкода = Формат(ПрефиксВнутреннегоШтрихкода, "ЧЦ=2; ЧН=; ЧВН=");

Запрос = Новый Запрос("
|ВЫБРАТЬ
| МАКСИМУМ(ПОДСТРОКА(РегШтрихКоды.Штрихкод, 5, 8)) КАК Код
|ИЗ
| РегистрСведений.ШтрихКоды КАК РегШтрихКоды
|ГДЕ
| РегШтрихКоды.ТипШтрихкода = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ТипыШтрихкодов.EAN8)
| И РегШтрихКоды.Штрихкод ПОДОБНО ""2" + ПрефиксШтучногоТовара + ПрефиксВнутреннегоШтрихкода + "_________""
|");

Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ТекКод = ?(Выборка.Код = NULL, 1, Мин(ОбщегоНазначения.ПривестиСтрокуКЧислу(Выборка.Код) + 1, 99999999));

Штрихкод = "2" + ПрефиксШтучногоТовара + ПрефиксВнутреннегоШтрихкода + Формат(ТекКод, "ЧЦ=8; ЧВН=; ЧГ=");
Штрихкод = Штрихкод + КонтрольныйСимволEAN(ШтрихКод, 8);

Возврат Штрихкод;

КонецФункции

Максим75

Yanawerg,
1. а у Вас в выборку хоть что-то попадает?
2. Дайте код из обработки, где Вы вызываете эту функцию. "Да" очень похоже на булево, а возвращать должен что-то строковое.

LexaK

Yanawerg, с выборкой лучше такую конструкцию использовать
Если Выборка.Следующий() Тогда
    ТекКод = Мин(ОбщегоНазначения.ПривестиСтрокуКЧислу(Выборка.Код) + 1, 99999999);
Иначе
ТекКод = 1;
КонецЕсли;
если помогло нажмите: Спасибо!

Yanawerg

Новый проблема.
Немного изменил путь из обработки к общему и выводит теперь цифровое значение но до сих пор не верное.
Загружая заказ код должен выглядить так: номер заказа (281616/001) штрих должен выглядить как (2816161(контрольный символ)) а получается что он сформировал (2000000000184).
Я понял откуда он взял "2" и примерно могу представить откуда "184" но почему там куча нулей вместо тех цифр что нужны и почему их 13 если должно быть 8 ?

Максим75

Yanawerg, если у Вас все номера заказов выглядят так номер1/номер2 и Вам нужен номер1 плюс контрольный символ, так просто разберите номер заказа и возьмите то, что до / находится.

LexaK

Yanawerg, формат возвращает такое число
ТекКод = 184;                       
Сообщить(Формат(ТекКод, "ЧЦ=8; ЧВН=; ЧГ="));
= 00000184
если помогло нажмите: Спасибо!

Yanawerg

Максим75, Можете проверить правильно ли я прописал тогда ?
У меня получается что номер заказа выглядит так 268616/001 и мне нужно что бы не было / и нулей после /.
они формируются в другом месте и что бы их пилить нужно пол кода переделать (как-нибудь потом займусь этим)
Как мне правильно разорвать этот номер заказа ?
Прописал что-то такое (Криво но по другому уже не хочется делать)
Будет такое работать ?
        ШК = СтрЗаменить(СокрЛ(СтрЗаменить(Лев(Наименование, 9), "0", " "))," ","0");
        ШШК = СтрЗаменить(Наименование, " #", "") + Сред(Наименование, 9, 3);
        Штрих = ШШК + ШК;
        НервныйТик = Мин(ОбщегоНазначения.ПривестиСтрокуКЧислу(Штрих) + 1, 99999999);
        ШтрихКод = НервныйТик + ШтрихДляИмпорта.КонтрольныйСимволEAN();

Максим75

Yanawerg, используйте такую конструкцию

РазделительСтрок = Символы.ПС;
НомерДокумента=СтрЗаменить(Наименование,"/",РазделительСтрок);
НомерДокументаЛеваяЧасть=СтрПолучитьСтроку(НомерДокумента,1);

Суть такая: вначале заменяете "/" на символ перевода строки, в итоге получаете в НомерДокумента многострочную штуку вида
268616
001

потом берете первую строку из этой многострочной строки.

ну а дальше уже полученную левую часть номера превращайте в штрихкод.

Yanawerg

Теперь ругается на строку ТИКТАК = ШтрихДляИмпорта.КонтрольныйСимволEAN(Тип);Даже если убираю всё из скобок или добавляю ещё что-либо
Ошибку вот такую выдаёт:
{Обработка.ИмпортЗаказаИзИТ5Новый.Форма.Форма.Форма(515)}: Недостаточно фактических параметров

alexandr_ll

Yanawerg, Я вижу в вашей функции два параметра, а вы передаете только один.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск