Имя: Пароль:
1C
1С v8
Ошибка блокировки объекта после использования метода ОткрытьФорму()
0 ladalady21110
 
16.11.18
14:45
Добрый день!
1С 8.3
Самопальный документ
Реквизит ИНН и установленная ему обработка выбора (по ИНН должен открываться список выбора контрагентов с таким ИНН)

&НаКлиенте
Процедура НСИКонтрагентыИННОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
        
    ПараметрыОтбора = Новый Структура("ИНН", ВыбранноеЗначение);
    
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
    
    ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("НСИКонтрагентыОписаниеОповещения", ЭтаФорма, Неопределено);
    ОткрытьФорму("Справочник.Контрагенты.ФормаВыбора", ПараметрыФормы, ЭтаФорма, Истина, ВариантОткрытияОкна.ОтдельноеОкно,, ОписаниеОповещенияОЗакрытии);

КонецПроцедуры

&НаКлиенте
Процедура НСИКонтрагентыОписаниеОповещения(РезультатЗакрытия, ДопПараметры) Экспорт
    
    ТекущиеДанные = Элементы.НСИКонтрагенты.ТекущиеДанные;
    
    Если РезультатЗакрытия = Неопределено Тогда
        Возврат;
    Иначе    
        ТекущиеДанные.ВидОперации     = ПредопределенноеЗначение("Перечисление.ВидыОперацийИзмененияНСИ.ИзменениеРеквизитовОбъекта");
        ТекущиеДанные.СсылкаОснование     = РезультатЗакрытия;
    КонецЕсли;    
    
КонецПроцедуры


Всё отрабатывает прекрасно.
Но есть одна провальная комбинация: Открыть(создать) документ -> тыкнуть в реквизит чтобы открылась форма выбора -> закрыть документ и открыть снова.
Всё, дальше документ записать нельзя и нельзя снова вызвать форму выбора.
Ошибка:
https://yadi.sk/i/Aw_BomCWbXwb2Q

Как починить?(
1 palsergeich
 
16.11.18
14:46
(0) Почитай что такое Пессемистичная объектная блокировка - это оно
2 Fragster
 
гуру
16.11.18
15:42
у тебяв том документе, ОТКУДА открывается форма выбора есть где-то циклическая ссылка, которая не дает до конца форму закрыть
3 DrWatson
 
16.11.18
15:52
А когда документ закрывается, разве форма выбора справочника не должна сама закрыться? Вроде как владелец установлен.
Второй вариант - открывать с блокировкой владельца.
4 Fragster
 
гуру
16.11.18
16:07
На самом деле тебе надо передавать в качестве владельца элемент формы, в вызываемой форме вызывать ОповеститьОВыборе и  выкинуть описание оповещения о закрытии вообще
5 Fragster
 
гуру
16.11.18
16:09
ну и похоже, что на самом деле надо указать связь параметров выбора и все, никаких самопальных вызовов не нужно использовать.
6 ladalady21110
 
16.11.18
16:44
Итого проблема оказалась в ОписаниеОповещенияОЗакрытии.
В моем случае удалось перейти к виду:


РезультатЗакрытия = ОткрытьФормуМодально("Справочник.Контрагенты.ФормаВыбора", ПараметрыФормы);
7 Fragster
 
гуру
16.11.18
22:22
(6) ииииииии это неправильный ответ
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс