|   |   | 
| 
 | Блокировка регистра сведений на добавление данных | ☑ | ||
|---|---|---|---|---|
| 0
    
        Gera1t 10.04.24✎ 15:20 | 
        Здравствуйте! Есть регистр сведений "ШтрихКодыУпаковок".
 Перед тем как добавить запись в этот регистр, проверяю штрихкод на уникальность. Но возникает иногда такая ситуация, когда с 2 компьютеров это действие происходит одновременно. Что бы этого избежать добавил вот такой код, для блокировки регистра: НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый); БлокировкаДанных = Новый БлокировкаДанных; ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрСведений.ШтрихКодыУпаковок"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; ЭлементБлокировки.ИсточникДанных = Результат; //ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Штрихкод", "Штрихкод"); БлокировкаДанных.Заблокировать(); ЗафиксироватьТранзакцию(); Но это не работает. Подскажите пожалуйста, как правильно реализовать блокировку регистра для добавления данных. Спасибо! | |||
| 1
    
        vis 10.04.24✎ 15:22 | 
        У вас с двух компов добавляют одинаковые ШК ?     | |||
| 2
    
        Gera1t 10.04.24✎ 15:25 | 
        (1) Не совсем так, но примерно. Я сделал дополнительный контроль, и одинаковые штрихкоды создать не возможно, но получилось как то сложно, хотелось бы решить проблему проще.     | |||
| 3
    
        Gera1t 10.04.24✎ 15:30 | 
        Получается так: с одного компьютера добавляется новый штрихкод, программа его генерит (генерит путем добавления к последнему текущему 1) и он записывается в регистр, в этот же момент с другого компьютера генериться еще один штрихкод, точно такой же, и это происходит в промежуток времени между генерацией нового штрихкода и записью его в регистр     | |||
| 4
    
        СвинТуз 10.04.24✎ 15:34 | 
        "Результат"
 По ресурсу что ли работаешь? Или по реквизиту? | |||
| 5
    
        СвинТуз 10.04.24✎ 15:36 | 
        (0)
 Блокируй весь регистр. Без отборов. Чего мелочиться? Интенсивная запись идет с большими расчетами? | |||
| 6
    
        Gera1t 10.04.24✎ 15:41 | 
        (4) По измерению
 (5) Действий много с разных компьютеров, расчетов не много. | |||
| 7
    
        СвинТуз 10.04.24✎ 15:44 | 
        (6)
 Что то оно как то не того. я хз. Сравни ЭлементБлокировки.ИсточникДанных = ДокументОбъект.ВозвратнаяТара; ЭлементБлокировки.ИспользоватьИзИсточникаДанных( "Номенклатура", "Номенклатура"); и ЭлементБлокировки.ИсточникДанных = Результат; //ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Штрихкод", "Штрихкод"); Комент меня смущает. | |||
| 8
    
        НастяПРО 10.04.24✎ 15:54 | 
        (7) СВИНДАМА??? ИЛИ СВИНВАЛЕТ?     | |||
| 9
    
        vicof 10.04.24✎ 15:57 | 
        (8)Просвинастя     | |||
| 10
    
        НастяПРО 10.04.24✎ 15:58 | 
        (9) Саша лох, трусы в горох, сиськи по колено!!!!     | |||
| 11
    
        vicof 10.04.24✎ 16:00 | 
        Забаньте ее уже     | |||
| 12
    
        НастяПРО 10.04.24✎ 16:00 | 
        (11) Я тебя щас забаню, малолетний дебил     | |||
| 13
    
        НастяПРО 10.04.24✎ 16:00 | 
        (11) Я тебя щас забаню, малолетний дебил     | |||
| 14
    
        НастяПРО 10.04.24✎ 16:01 | 
        (11) СписокЗначений     | |||
| 15
    
        НастяПРО 10.04.24✎ 16:01 | 
        (11) Я тебя щас забаню, малолетний дебил
 Я тебя щас забаню, малолетний дебил | |||
| 16
    
        НастяПРО 10.04.24✎ 16:01 | 
        Я тебя щас забаню, малолетний дебил (11)     | |||
| 17
    
        timurhv 10.04.24✎ 16:11 | 
        (0) Нет там СпискаЗначений:
 ЭлементБлокировкиДанных.ИсточникДанных Использование: Чтение и запись. Описание: Тип: РезультатЗапроса, Табличная часть, ТаблицаЗначений. Источник данных, содержащий значения полей для установки условий на поля пространства блокировки. https://www.koderline.ru/expert/instruktsii/article-upravlyaemye-blokirovki/ 3.Установка условия блокировки записей с помощью источника данных БлокировкаДанных = Новый БлокировкаДанных; ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрНакопления.ОстаткиТоваровНаСкладах"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; ЭлементБлокировки.УстановитьЗначение("Склад", Склад); ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры; ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура"); Данные для установки ограничений на поля этого элемента блокировки – это таблица значений "СписокНоменклатуры". Блокируем в данных регистра "ОстаткиТоваровНаСкладах" все записи, у которых значение измерения "Склад" равно значению переменной "Склад", а значение измерения "Номенклатура" равно какому-либо значению из колонки "Номенклатура", указанного источника данных. В качестве источника данных можно указывать результат запроса, и для последнего примера можно было бы создать запрос, который бы отсекал номенклатуру, содержащую "услугу", тем самым нивелируя избыточность блокировки. | |||
| 18
    
        Sorento 11.04.24✎ 09:34 | 
        (16) Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. (с)Фредерик Брукс-младший     | |||
| 19
    
        ptiz 11.04.24✎ 09:56 | 
        (0) Надо понимать смысл блокировок.
 После того как ты сделал -БлокировкаДанных.Заблокировать(); - в той же транзакции проверяй: существует ли такой же ШК. Без этого выходит, что ты просто ждешь, когда второй сеанс освободит регистр, но после освобождения там будет запись с этим ШК. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |