Как задать выборку Штрихкода Ean13 в заданном интервале

1. yaroslavch 29 15.12.16 14:55 Сейчас в теме
Добрый день уважаемые форумчане. Есть сетка магазинов работающая на распределенной базе данных.

Встала задача формирования штрих-кодов тип EAN-13 (для индивидуальных скидок) на каждом из магазинов.

Сразу возникает трудность, с тем, что если запустить формирование штрих-кодов как есть, будут дубли, трибли и т.п.

Чтобы решить данную проблему было найдено решение, задать внутренний префикс, чтобы не пересекались с основными штрихкодами, и на каждый магазин выделить интервал с кодами.

Штрих-код: 2007________К ; к - контрольный символ

Теперь стоит задача. Известен интвервал с 2000 по 12000 тысяч. Как в данном интервале найти последний с генерированный штрих-код? желательно в запросе.

Может кто решал похожую задачу?

В рознице я нашел похожую выборку с учетом внутренних префиксов:

ВЫБРАТЬ
	ПОДСТРОКА(ЯШтрихкодыДокументов.Штрихкод, 5, 8) КАК Код
ИЗ
	РегистрСведений.ЯШтрихкодыДокументов КАК ЯШтрихкодыДокументов
ГДЕ
	ЯШтрихкодыДокументов.ТипШтрихкода = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ТипыШтрихкодов.EAN13)
	И ЯШтрихкодыДокументов.Штрихкод ПОДОБНО "2007_________"  
Показать

Но как адаптировать под дополнительную выборку, по периоду. я залипаю...
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. spacecraft 15.12.16 15:20 Сейчас в теме
(1)
ВЫБРАТЬ
    МАКСИМУМ(ПОДСТРОКА(ЯШтрихкодыДокументов.Штрихкод, 5, 8)) КАК Код
ИЗ
    РегистрСведений.ЯШтрихкодыДокументов КАК ЯШтрихкодыДокументов
ГДЕ
    ЯШтрихкодыДокументов.ТипШтрихкода = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ТипыШтрихкодов.EAN13)
    И ЯШтрихкодыДокументов.Штрихкод ПОДОБНО "2007%"  
13. v3rter 19.12.16 17:11 Сейчас в теме
Пожалуй, вариант (3) лучший. Даже можно прикрутить к нему условие
    |ГДЕ
    |    Таб.Код > """+ ДиапазонНачало+""""+ "  И   Таб.Код < """+ ДиапазонОкончание +"""
вместо
ЯШтрихкодыДокументов.Штрихкод ПОДОБНО "2007_________"  
и должен сработать. Или
ЯШтрихкодыДокументов.Штрихкод ПОДОБНО "200712%"  
только передавать параметром.
2. v3rter 15.12.16 15:19 Сейчас в теме
А так?

ВЫБРАТЬ ПЕРВЫЕ 1
    ПОДСТРОКА(ЯШтрихкодыДокументов.Штрихкод, 5, 8) КАК Код
ИЗ
    РегистрСведений.ЯШтрихкодыДокументов КАК ЯШтрихкодыДокументов
ГДЕ
    ЯШтрихкодыДокументов.ТипШтрихкода = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ТипыШтрихкодов.EAN13)
    И ЯШтрихкодыДокументов.Штрихкод ПОДОБНО "2007_________"  
УПОРЯДОЧИТЬ ПО ЯШтрихкодыДокументов.Штрихкод УБЫВ
4. yaroslavch 29 15.12.16 15:22 Сейчас в теме
нужна выборка в пределах периода.

Если брать убывающее, то к примеру на следующем магазине идет от 12000 и до 22000.

5. spacecraft 15.12.16 15:27 Сейчас в теме
(4) это сколько же магазинов, что потребовались именно интервалы?
2007 префикс общий.
для каждого магазина дополнительный префикс ХХ.
Пример, для 1 магазина префикс будет 200701, для 2 - 200702 и т.д.
И выбирается простои и по штрихкоду сразу видно из какого магазина.
6. yaroslavch 29 15.12.16 15:54 Сейчас в теме
(5) магазинов много. в данном случае 20, но если брать общую задачу, то что делать когда их 200?
А 500? мне такие сетки знакомы.

Пока выкрутился так, удивительно но сравнение в запросе работает:


ДиапазонНачало = ДополнитьСимволами("0", 8-СтрДлина(СтрЗаменить(Строка(Диапазон.Начало), " ","")))+СтрЗаменить(Строка(Диапазон.Начало), " ","");
	ДиапазонОкончание	= ДополнитьСимволами("0", 8-СтрДлина(СтрЗаменить(Строка(Диапазон.Конец), " ","")))+СтрЗаменить(Строка(Диапазон.Конец), " ","");

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

8. spacecraft 15.12.16 16:06 Сейчас в теме
(6) если даже ориентироваться на очень большую сеть и префикс магазина сделать 3 символа.
Посчитаем. Общий префикс = 4 символа. Префикс магазина 3 символа. Итого 7 символов.
Учитывая использования EAN13 имеем всего 12 значащих символа. Вычитаем префиксы, получаем 5 разрядов.
В существующем решении имеем диапазон в 12000 штрихкодов. Те же 5 разрядов, но из-за диапазона в 8 раз меньше значений. И куча проблем сейчас и в будущем.
9. yaroslavch 29 19.12.16 15:11 Сейчас в теме
(8) Я не совсем согласен выделять магазину отдельный префикс. Даже если их 3 штуки. Хотя ваше решение тоже имеет место быть.
Префиксы куда-то надо записывать, возможно константы или по справочнику магазинов. Магазины имеют свойство открываться и закрываться, и что делать с оставшейся емкостью?
И как это помнить пользователю? Хранить инструкции которые ни кто не читает? А если еще и текучка сотрудников.
При этом еще нужно развести с номенклатурой и инфокартами, и многое чем.

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

Но это дело каждого. На вкус и цвет.. товарища....

Я за универсальность и удобство настройки...






10. spacecraft 19.12.16 15:23 Сейчас в теме
(9) т.е. интервал кодов 0-12000 это универсально и удобно, а интервал кодов 0-99999 это проблемы?
Не нравится слово префикс, не используйте. Считайте это интервалом, если так удобнее представить.
Хороший архитектор это половина успеха и минимум проблем в будущем.
11. yaroslavch 29 19.12.16 15:56 Сейчас в теме
(10) Дело не ёмкости интервала, а в возможности его задать и ограничить, как собственно и работать в данном интервале.

Вопрос темы изначально был, как выбрать интервал штрих-кодов в заданном интервале.

Меня искренне удивляют Ваши попытки продавливать решение, хотя оно в рамки текущего вопроса не совсем вписывается.

Возможность вашего решения я признал, но обсуждать его без привязки к конкретному случаю, считаю не целесообразным.

12. spacecraft 19.12.16 16:39 Сейчас в теме
(11) случай конкретней некуда.
Сравните запрос вашего диапазона в (6), и запрос в (3) если сделать как я предложил.

Но, конечно решать Вам.
7. v3rter 15.12.16 16:05 Сейчас в теме
Собственно, после добавления
ВЫБРАТЬ ПЕРВЫЕ 1

УПОРЯДОЧИТЬ ПО Код УБЫВ

из отфильрованных условием должен выбраться первый, а так как по убыванию, то последний в интервале. Попробуйте.
Оставьте свое сообщение

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