Имя: Пароль:
1C
1С v8
УПП. Партии. Блокировки.
0 AHuk87
 
10.09.15
17:17
Добрый день, пожалуйста помогите разобраться. В типовой УПП 1.3 в общем модуле "УправлениеЗапасамиПартионныйУчет" в процедура "ЗаписатьДвижения()", есть следующий кусок кода

// Установим УБ (эксклюзивную) перед чтением набора записей
        Если глЗначениеПеременной("ИспользоватьБлокировкуДанных")  Тогда
            Если Метаданные.РегистрыНакопления.Содержит(ДМ) Тогда
                ТипТаблицы = "РегистрНакопления";
            Иначе
                // Запись движений по бухгалтерскому или налоговому ПУ
                ТипТаблицы = "РегистрБухгалтерии";
            КонецЕсли;
            СтруктураПараметровБлокировки = Новый Структура(
                "ТипТаблицы,ИмяТаблицы"
                ,ТипТаблицы
                ,ДМ.Имя + ".НаборЗаписей");
                
            СтруктураЗначенийБлокировки = Новый Структура("Регистратор", ДвиженияРегистра.Отбор.Регистратор.Значение);
            
            ОбщегоНазначения.УстановитьУправляемуюБлокировку(СтруктураПараметровБлокировки,СтруктураЗначенийБлокировки,, Ложь, "");
        КонецЕсли;

Судя из него блокировка устанавливается на регистратор, проверил тоже самое на созданном документе "Тест блокировки" где считываю и списываю остатки по регистру ТоварыНаСкладах, написав следующее:

Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ТоварыНаСкладах");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.УстановитьЗначение("Регистратор", Ссылка);
    Блокировка.Заблокировать();

То у меня 2 документа с разным набором товаров вызывают взаимоблокировку, изменив код на:

Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ТоварыНаСкладах");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = Товары;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
    ЭлементБлокировки.УстановитьЗначение("Регистратор", Ссылка);
    ЭлементБлокировки.УстановитьЗначение("Склад", Склад);
    Блокировка.Заблокировать();

Получил, что документы с разным набором номенклатуры спокойно проводиться. Следовательно вопрос, почему в типовой УПП так сделано, чем они руководствуются? Или я чего-то не понял?
1 Fragster
 
гуру
10.09.15
17:19
разделение итогов должно быть включено и разрешено
2 AHuk87
 
10.09.15
17:25
(1) В типовой УПП оно разрешено для данного регистра. Вопрос собственно, почему устанавливается блокировка на регистратор, а на набор измерений не делается
3 leonidkorolev
 
10.09.15
17:35
(0) Думаю что всё банально. Изначально разработчики посчитали что блокировки на регистратор будет достаточно, а на тестах ошибка взаимоблокировки не выявилась. Думаю надо написать в 1С что-бы доработали этот момент.
4 H A D G E H O G s
 
10.09.15
17:37
5 Fragster
 
гуру
10.09.15
17:41
(2) разрешено и ВКЛЮЧЕНО
6 AHuk87
 
10.09.15
17:55
(4) Спасибо, но не то, блокировки есть, но по-моему они излишние и их над детализировать.
7 AHuk87
 
10.09.15
17:59
(5) Пожалуйста, поясните что имеется ввиду под "ВКЛЮЧЕНО"?
8 Fragster
 
гуру
10.09.15
18:18
(7) мало разрешить в конфигураторе, надо еще включить в предприятии
9 AHuk87
 
10.09.15
21:00
(8) Буду признателен, если вы мне скажете, где это искать в УПП
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс