Имя: Пароль:
1C
1С v8
не могу понять как сделать правильно
0 BaHgaJI
 
02.06.15
22:38
делаю запись в РС в общем модуле
нз=РС.Добавить();
нз.номер = формированиеНомера(); //измерение
РС.Записать();

в формировании номера выполняются процедуры по проверке на задвоенность в этом же регистре и тд и он возвращает новый номер.

как мне. заблокировать формирование номера чтобы если кто то еще в ту же секунду будет записывать чтобы не выскочила ошибка что такая запись уже есть? блокировки автоматические. Надо как то перенести в передЗаписью? Или как?
1 BaHgaJI
 
02.06.15
23:48
может не стоит заморачиваться? все равно шанс чтобы номер совпал 0,00000001
2 18_plus
 
02.06.15
23:56
а номер для чего? для уникальности?
3 BaHgaJI
 
02.06.15
23:57
ну ваще это не номер, а штрихкод
4 Вася Чез
 
03.06.15
07:13
(0) поставить управляемые блокировки, сделать что-то вроде
Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
    
    Блокировка.Заблокировать();
5 BaHgaJI
 
03.06.15
08:12
(4) блокировки же работают только в транзакции
6 BaHgaJI
 
03.06.15
08:20
В принципе перенес в передЗаписью, все нормально работает,
но появилась другая проблема как мне вернуть обратно полученный штрихкод. Вот проц передЗаписью:

    Если ЭтотОбъект.Количество() >0 тогда
        Если ЭтотОбъект[0].ШтрихКод = ""  тогда
            НаборТЗ = ЭтотОбъект.Выгрузить();
            ЭтотОбъект.Удалить(0);
            ШтрихКод = УчетШтрихКодов.СформироватьШтрихКод();
            НаборТЗ[0].ШтрихКод = ШтрихКод;
            НаборЗаписей = РегистрыСведений.ШтриКодДляОбъекта.СоздатьНаборЗаписей();
            НаборЗаписей.Отбор.ШтрихКод.Значение = ШтрихКод;
            НаборЗаписей.Отбор.ШтрихКод.ВидСравнения = ВидСравнения.Равно;
            НаборЗаписей.Отбор.ШтрихКод.Использование = Истина;
            НаборЗаписей.Прочитать();
            НаборЗаписей.Загрузить(НаборТЗ);
            НаборЗаписей.Записать();
        КонецЕсли;
    КонецЕсли;
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн