Поиск свободного штрихкода (EAN-13) внутри одного префикса

FastCode 63 8

Решение основано на непосредственном получении следующего кода. Без необходимости перевода в числовой тип. В штрих-коде ищется последняя серия девяток. Она заменяется на серию нулей. Предшествующая цифра заменяется следующей в ряду цифр. Начало сохраняется. То есть решается задача инкрементирования числа непосредственно в символьном виде:

Автор: ildarovich

ВЫБРАТЬ 0 КАК Х ПОМЕСТИТЬ Р1 ОБЪЕДИНИТЬ ВЫБРАТЬ 1
;
ВЫБРАТЬ А.Х + 2 * Б.Х КАК Х ПОМЕСТИТЬ Р2 ИЗ Р1 КАК А, Р1 КАК Б
;
ВЫБРАТЬ А.Х + 4 * Б.Х КАК Х ПОМЕСТИТЬ Р4 ИЗ Р2 КАК А, Р2 КАК Б
;
ВЫБРАТЬ ВЫРАЗИТЬ(ПОДСТРОКА(ШтрихКод, 1, А.Х - 1) КАК СТРОКА(12)) 
+ ПОДСТРОКА("123456789", Б.Х + 1, 1) 
+ ПОДСТРОКА("000000000000", А.Х + 1, 12) КАК ШтрихКод
ПОМЕСТИТЬ ДаноПлюс 
ИЗ РегистрСведений_ШтрихкодыНоменклатуры, Р4 КАК А, Р4 КАК Б
ГДЕ ШтрихКод ПОДОБНО ПОДСТРОКА("%999999999999", 1, 13 - А.Х) 
И ШтрихКод НЕ ПОДОБНО ПОДСТРОКА("%999999999999", 1, 14 - А.Х)
И Б.Х < 9 И ПОДСТРОКА(ШтрихКод, А.Х, 1) = ПОДСТРОКА("012345678", Б.Х + 1, 1)
;
ВЫБРАТЬ ШтрихКод
ИЗ ДаноПлюс
ГДЕ ШтрихКод НЕ В 
(ВЫБРАТЬ Дано.ШтрихКод ИЗ РегистрСведений_ШтрихкодыНоменклатуры КАК Дано)
{} Ожидается идентификатор
Орфографическая ошибка в инкрементирования: инкрементирования
Орфографическая ошибка в РегистрСведений_ШтрихкодыНоменклатуры (найдено 2): Штрихкоды
OneTracker - трекер учета рабочего времени программиста 1С

Похожие публикации

Остатки на каждый день

Модератору