Решение созрело такое:
1. Создается табличка прямо в БД 1С вида:
(для MS SQL Server)
CREATE TABLE [dbo].[zbarcodes](
[ID] [bigint] IDENTITY([НАЧАЛЬНОЕЗНАЧЕНИЕСЧЕТЧИКА],1) NOT NULL,
CONSTRAINT [PK_zbarcodes] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
[НАЧАЛЬНОЕЗНАЧЕНИЕСЧЕТЧИКА] - заменить на число, например 20000000000 - первый шк в системе (или другое число - последнее в Вашей учетной системе, если хочется продолжить текущую нумерацию)
2. Создаем Процедурку в общем модуле с выполнением на сервере (для УФ)
//Процедура получения уникального штрихкода (у нас используется Code 128 - без контрольных символов)
//Параметры:
//Организация - можно сделать таблицы на каждую организацию - и получать по организации имя таблицы в БД из ЗначенияСвойствОбъектов
//СтруктураПараметров - параметры подключения к БД SQL через ADO
Функция ПолучитьНовыйШтрихкод(Организация, СтруктураПараметров) Экспорт
Соединение= Новый COMObject("ADODB.Connection");
Соединение.ConnectionString = "Driver={SQL Server};Server=" + СокрЛП(СтруктураПараметров.Сервер)
+ ";UID=" + СокрЛП(СтруктураПараметров.Логин)
+ ";pwd=" + СокрЛП(СтруктураПараметров.Пароль)
+ ";Database=" + СокрЛП(СтруктураПараметров.БД);
Соединение.ConnectionTimeOut = 40;
Соединение.CommandTimeout = 0;
Соединение.CursorLocation = 3;
Попытка
Соединение.Open();
Исключение
#Если Клиент Тогда
Сообщить("Возникла ошибка подключения к базе");
#КонецЕсли
Соединение="";
Возврат Неопределено;
КонецПопытки;
ТекстЗапроса="INSERT into zbarcodes DEFAULT VALUES";
Соединение.Execute(ТекстЗапроса);
ТекстЗапроса="SELECT @@IDENTITY";
Выборка=Соединение.Execute(ТекстЗапроса);
НовыйШтрихкод=Выборка.Fields(0).Value;
Выборка.Close();
Выборка =""
Соединение = "";
Возврат НовыйШтрихкод;
КонецФункции
В итоге все забыли что такое блокировки при присвоении новых штрихкодов, и обеспечена уникальность штрихкода, + скорость получения значения!