Нужно создать свой нумератор в документе, для уникального штрих кода
10 символов минуя префикс и контрольное число
решил сделать при записи ссылку на справочник или регистр сведений
и у того и у другого можно сделать уникальное чисельное поле,
через что лучше реализовать? я больше склоняюсь к справочнику, мне как выходцу 1с 7.7
как то привычнее.
10 символов минуя префикс и контрольное число
решил сделать при записи ссылку на справочник или регистр сведений
и у того и у другого можно сделать уникальное чисельное поле,
через что лучше реализовать? я больше склоняюсь к справочнику, мне как выходцу 1с 7.7
как то привычнее.
По теме из базы знаний
- "Откат" данных без транзакций. Расширение для легкого возврата к "исходному" или выбранному состоянию после любых изменений данных
- Найти и уничтожить. Популярные уязвимости в проектах 1С
- Заполнение регистра сведений "Фамилия, имя, отчество физического лица" (ERP 2.5, КА 2.5, ЗУП 3.1)
- Запись / хранение слипчеков банковского терминала в базе 1С: Розница
- Доработка стандартного модуля обмена от Битрикс для выгрузки произвольных таблиц значений или запросов в Highload-блоки
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Нумератор лучше вообще самому не делать, а подписать на это платформу. Это избавит от многих проблем.
Из этих соображений напрашивается справочник, у которого можно будет задействовать системный номер в качестве источника нумерации.
Из этих соображений напрашивается справочник, у которого можно будет задействовать системный номер в качестве источника нумерации.
(1)делаете РегистрСведений "Нумераторы" с измерением "Нумератор"(строка) и ресурсом "значение"(число).
и делаете функцию в общем модуле:
и делаете функцию в общем модуле:
Функция ПолучитьЗначениеНумератора(Нумератор = "мой нумератор") Экспорт
ТекущееЗначение = 0;
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = "РегистрСведений.Нумераторы";
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.УстановитьЗначение("Нумератор", Нумератор);
Блокировка.Заблокировать();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Нумераторы.Значение
|ИЗ
| РегистрСведений.Нумераторы КАК Нумераторы
|ГДЕ
| Нумераторы.Нумератор = &Нумератор";
Запрос.УстановитьПараметр("Нумератор", Нумератор);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ТекущееЗначение = Выборка.Значение;
КонецЕсли;
НСтр = РегистрыСведений.Нумераторы.СоздатьМенеджерЗаписи();
НСтр.Наименование = Нумератор;
НСтр.Значение = ТекущееЗначение + 1;
НСтр.Записать();
ЗафиксироватьТранзакцию();
Возврат Формат(ТекущееЗначение, "ЧЦ=10; ЧН=0; ЧВН=; ЧГ=0");
КонецФункции
Показать
(19)да кто ж спорит с тем, что системная нумерация - лучшее решение в плане производительности, чем какое-то свое решение.
Вопрос в том, каким образом получать новый номер системного нумератора так, чтобы оно учитывало многопользовательскую работу.
Есть объект метаданных "нумератор" у документов, можно воспользоваться им, если устроит его функционал.
Вопрос в том, каким образом получать новый номер системного нумератора так, чтобы оно учитывало многопользовательскую работу.
Есть объект метаданных "нумератор" у документов, можно воспользоваться им, если устроит его функционал.
(20) У тебя хотя бы многопользовательский доступ разруливается. Многие об этом даже не задумываются. "А что, у меня все работает. Значит, реализовано правильно".
В качестве альтернативы можно элементы справочника клепать и использовать их нумерацию. Они по блокировкам конфликтовать не будут,. Но места больше будет занимать, да.
В качестве альтернативы можно элементы справочника клепать и использовать их нумерацию. Они по блокировкам конфликтовать не будут,. Но места больше будет занимать, да.
(23) А мне нравится :) Если оставить только номер, то табличка совсем худая будет. Вполне вменяемый размен места на диске на параллельность получения номеров. И это притом, что ее еще и чистить можно. Но на практике не использовал - всегда удавалось выкрутиться без доп-нумераторов.
(11) Уникальный идентификатор - это десятичное число с 38 нулями. Получая от него в разы более короткий хеш при желании засунуть его в EAN-13 - было бы неплохо проверить его уникальность, что сразу сводит на нет все плюшки. В общем гуид - далеко не самый оптимальный вариант для штрихкодирования, даже если в qr его пихать. Обычно всегда можно найти гораздо более компактные и несложные варианты.
Умная мысля приходит апосля!
Текущее Unix epoch время:
1636648185
текущий Unix time будет всегда уникален!
2 документа в одну секунду двумя пользователями запишутся по теории вероятности 1 раз из миллиона или даже больше
Текущее Unix epoch время:
1636648185
текущий Unix time будет всегда уникален!
2 документа в одну секунду двумя пользователями запишутся по теории вероятности 1 раз из миллиона или даже больше
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот