Регистр Сведений или справочник?

1. zoeh 31 11.11.21 13:46 Сейчас в теме
Нужно создать свой нумератор в документе, для уникального штрих кода
10 символов минуя префикс и контрольное число
решил сделать при записи ссылку на справочник или регистр сведений
и у того и у другого можно сделать уникальное чисельное поле,
через что лучше реализовать? я больше склоняюсь к справочнику, мне как выходцу 1с 7.7
как то привычнее.
По теме из базы знаний
Найденные решения
2. herfis 513 11.11.21 13:59 Сейчас в теме
Нумератор лучше вообще самому не делать, а подписать на это платформу. Это избавит от многих проблем.
Из этих соображений напрашивается справочник, у которого можно будет задействовать системный номер в качестве источника нумерации.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Kongo2019 11.11.21 14:00 Сейчас в теме
(1)Если нужна ссылка на объект то справочник. Если срезы на дату то регистр.
По быстродействию они один хрен уже.
2. herfis 513 11.11.21 13:59 Сейчас в теме
Нумератор лучше вообще самому не делать, а подписать на это платформу. Это избавит от многих проблем.
Из этих соображений напрашивается справочник, у которого можно будет задействовать системный номер в качестве источника нумерации.
26. zoeh 31 11.11.21 19:28 Сейчас в теме
(2)Так и собрался делать!
4. VladimirB 17 11.11.21 14:01 Сейчас в теме
(1) А чем не подойдет УникальныйИдентификатор() ? Он ведь уже есть.
user1278383; +1 Ответить
14. nomad_irk 80 11.11.21 14:34 Сейчас в теме
(4)тем, что человеку нужен уникальный EAN13
5. herfis 513 11.11.21 14:05 Сейчас в теме
Если штрихкод идентифицирует документ, то почему не взять номер документа?
7. spacecraft 11.11.21 14:10 Сейчас в теме
(5) номер документа уникален обычно в пределах года (ну или как настроить).
25. zoeh 31 11.11.21 19:28 Сейчас в теме
(5)А если 10 организаций с 10ю префиксами?
29. herfis 513 12.11.21 10:58 Сейчас в теме
(25) Абсолютно не проблема. Тебе нужно просто закодировать префиксы и все. Двух цифр думаю хватит. Вряд ли у тебя будет сто префиксов и более.
6. VladimirB 17 11.11.21 14:07 Сейчас в теме
(5) Еще и дату тогда добавить
8. herfis 513 11.11.21 14:14 Сейчас в теме
(7) Это не проблема обычно. Пусть автор сначала подробностей насыпет. Что и зачем он штрихкодировать хочет. Тогда дам конкретный рецепт.
9. herfis 513 11.11.21 14:16 Сейчас в теме
Если именно документы штрихкодируются, то никаких отдельных нумераторов обычно нафиг не надо.
10. nomad_irk 80 11.11.21 14:21 Сейчас в теме
(1)делаете РегистрСведений "Нумераторы" с измерением "Нумератор"(строка) и ресурсом "значение"(число).

и делаете функцию в общем модуле:

Функция ПолучитьЗначениеНумератора(Нумератор = "мой нумератор") Экспорт
	
	ТекущееЗначение = 0;
	
	НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
	
	Блокировка = Новый БлокировкаДанных;
	ЭлементБлокировки = Блокировка.Добавить();
	ЭлементБлокировки.Область = "РегистрСведений.Нумераторы";
	ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
	ЭлементБлокировки.УстановитьЗначение("Нумератор", Нумератор);
	Блокировка.Заблокировать();
		
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Нумераторы.Значение
	|ИЗ
	|	РегистрСведений.Нумераторы КАК Нумераторы
	|ГДЕ
	|	Нумераторы.Нумератор = &Нумератор";
	Запрос.УстановитьПараметр("Нумератор", Нумератор);
			
	Выборка = Запрос.Выполнить().Выбрать();
	
	Если Выборка.Следующий() Тогда
		ТекущееЗначение = Выборка.Значение;
	КонецЕсли;
	
	НСтр = РегистрыСведений.Нумераторы.СоздатьМенеджерЗаписи();
	НСтр.Наименование = Нумератор;
	НСтр.Значение = ТекущееЗначение + 1;
	НСтр.Записать();
	
	ЗафиксироватьТранзакцию();
			
	Возврат Формат(ТекущееЗначение, "ЧЦ=10; ЧН=0; ЧВН=; ЧГ=0");

КонецФункции
Показать
19. herfis 513 11.11.21 15:00 Сейчас в теме
(10) Вот прелесть системной нумерации именно в том, что она не может стать узким местом по блокировкам. Но я сильно сомневаюсь что ТС вообще нужен отдельный нумератор.
20. nomad_irk 80 11.11.21 15:09 Сейчас в теме
(19)да кто ж спорит с тем, что системная нумерация - лучшее решение в плане производительности, чем какое-то свое решение.
Вопрос в том, каким образом получать новый номер системного нумератора так, чтобы оно учитывало многопользовательскую работу.

Есть объект метаданных "нумератор" у документов, можно воспользоваться им, если устроит его функционал.
22. herfis 513 11.11.21 15:21 Сейчас в теме
(20) У тебя хотя бы многопользовательский доступ разруливается. Многие об этом даже не задумываются. "А что, у меня все работает. Значит, реализовано правильно".
В качестве альтернативы можно элементы справочника клепать и использовать их нумерацию. Они по блокировкам конфликтовать не будут,. Но места больше будет занимать, да.
23. nomad_irk 80 11.11.21 15:28 Сейчас в теме
(22)ИМХО, делать справочник и плодить в нем элементы ради получения номера - такое себе решение, хотя оно и самое простое в реализации.
24. herfis 513 11.11.21 15:35 Сейчас в теме
(23) А мне нравится :) Если оставить только номер, то табличка совсем худая будет. Вполне вменяемый размен места на диске на параллельность получения номеров. И это притом, что ее еще и чистить можно. Но на практике не использовал - всегда удавалось выкрутиться без доп-нумераторов.
11. zelenii 11.11.21 14:21 Сейчас в теме
В типовой ут под штрихкодом понимают уникальный идентификатор. Т.е. он зашифрован в штрихкоде. Поскольку он уникален в пределах базы то отличный вариант для кодирвоания.
21. herfis 513 11.11.21 15:09 Сейчас в теме
(11) Уникальный идентификатор - это десятичное число с 38 нулями. Получая от него в разы более короткий хеш при желании засунуть его в EAN-13 - было бы неплохо проверить его уникальность, что сразу сводит на нет все плюшки. В общем гуид - далеко не самый оптимальный вариант для штрихкодирования, даже если в qr его пихать. Обычно всегда можно найти гораздо более компактные и несложные варианты.
12. VladimirB 17 11.11.21 14:22 Сейчас в теме
(1) Возможно, что автор штрихкодить хочет несколько видов документов. Тогда Даты и номера недостаточно, нужен хотя бы еще префикс. А для него можно создать справочник - (ВидДокумента,Префикс)
13. VladimirB 17 11.11.21 14:23 Сейчас в теме
(11) Да я тоже писал про уникальный идентификатор
15. VladimirB 17 11.11.21 14:41 Сейчас в теме
16. nomad_irk 80 11.11.21 14:45 Сейчас в теме
(15)и зачем так усложнять, если EAN13 может содержать ТОЛЬКО цифровые значения?
17. VladimirB 17 11.11.21 14:49 Сейчас в теме
(16) хранить же его нужно, а так уже ведь все есть
18. nomad_irk 80 11.11.21 14:50 Сейчас в теме
(17)я уже дал 100% работающее решение в (10) без привлечения УИ и вычисления хэша от него.
27. zoeh 31 11.11.21 19:31 Сейчас в теме
Умная мысля приходит апосля!
Текущее Unix epoch время:
1636648185

текущий Unix time будет всегда уникален!
2 документа в одну секунду двумя пользователями запишутся по теории вероятности 1 раз из миллиона или даже больше
28. starik-2005 3093 11.11.21 21:58 Сейчас в теме
Божечки, очередной велосипед. В БСП уже есть нумерация документов искаропки.
30. EVKash 16 12.11.21 13:50 Сейчас в теме
(27) а если руками время ставят начало/конец дня?
31. spacecraft 12.11.21 14:04 Сейчас в теме
(30) так использовать не время документа, а текущее время формирования штрихкода.
У меня в одном из проектов так и сделано, для штрихкода талона, плюс префикс места выдачи. Но использую CODE128.
32. zoeh 31 17.11.21 12:45 Сейчас в теме
(31)
Code 128 не считывается сканером, не хватает размера этикетки 58х60
с монитора в большом виде читается.
флаг ЧБ печати пробовал не помогает,
Придется переделывать на ean 13
Оставьте свое сообщение

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