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

FastCode 1552 13 21 67

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

Автор: 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)
;
ВЫБРАТЬ ШтрихКод
ИЗ ДаноПлюс
ГДЕ ШтрихКод НЕ В 
(ВЫБРАТЬ Дано.ШтрихКод ИЗ РегистрСведений_ШтрихкодыНоменклатуры КАК Дано)
0
{} Ожидается идентификатор
Орфографическая ошибка в инкрементирования: инкрементирования
Орфографическая ошибка в РегистрСведений_ШтрихкодыНоменклатуры (найдено 2): Штрихкоды

См. также

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

НайтиНеоднозначныхПользователейИБ (БСП)

АдресВСвободнойФорме (БСП)

ЭтоАдресВСвободнойФорме (БСП)

АдресВведенВСвободнойФорме (БСП)

Проверить расположен ли один элемент управляемой формы внутри другого

Как выделить слово внутри ячейки макета жирным шрифтом (курсивным)?

УстановитьПрефиксОрганизации (БСП)

Модератору