Имя: Пароль:
1C
1С v8
1С 8.3 УФ. Блокируется объект при программной записи
0 Guerro
 
25.03.20
13:09
Только начал работать с УФ.
Есть журнал документов "Склад", в модуле формы идет обработка внешнего события. Внешним событием выступает сканер ШтрихКода. У документа "Расход" есть ШтрихКод, при его сканировании в журнале "Склад", должно происходить:
1)Проверка на выдачу документа "Расход"
2)Если не выдан, то создать документ "ВыдачаТовара" на основании "расхода" с заполненными реквизитами и табличной частью. И открыть созданный документ не записывая его.
3)Если еще раз отсканировать этот же ШтрихКод, то провести документ "ВыдачаТовара" и закрыть форму.

Как это реализовано:
1)На форме журнала документов "Склад"
&НаКлиенте
Форма = ПолучитьФорму("Документ.ВыдачаТовара.Форма.ФормаДокумента");
ДанныеФормы = Форма.Объект;
Проводить = ВнешнееСобытиеНаСервере(ДокументРасход,ДанныеФормы);

&НаСервере
        ПодчиненныеДокументы = ОсновныеФункции.ПолучитьСписокПодчиненныхДокументов(Рез);
        
        Для Каждого СтрокаТЗ из ПодчиненныеДокументы цикл
            Если ТипЗнч(СтрокаТЗ.Ссылка)=Тип("ДокументСсылка.ВыдачаТовара") тогда
                Сообщить(""+Рез+" уже выдан!");
                Возврат Ложь;
            КонецЕсли;
        КонецЦикла;

2)На форме журнала документов "Склад"
&НаСервере
ДанныеФормы.Контрагент = ДокументРасход.Дилер;
ДанныеФормы.ДокОснование = ДокументРасход.Ссылка;
ДанныеФормы.Склад = ДокументРасход.Склад;
ДанныеФормы.ТабличнаяЧасть1.Загрузить(ДокументРасход.ТабличнаяЧасть1.Выгрузить());

3)На форме журнала документов "Склад"
                &НаКлиенте
                Если Проводить Тогда
                    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
                    Сканировать=Ложь;
                    Форма.ОткрытьМодально();
                    Сканировать=Истина;                
                КонецЕсли;

4)Обработка внешнего события на форме ВыдачаТоваров
&НаСервере
Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));

&На Клиенте
Закрыть();
________________________________________________________________________________


Проблема в том, что при проводки и закрытии "ВыдачаТовара". Обработка внешнего события формы "ВыдачаТовара", до сих пор активируется, при сканировании штрихкода и документ уже закрытый программно нельзя удалить, потому что он становится заблокирован. Как решить ситуацию, может неправильно закрываю или провожу?

P.S. Сканировать - реквизит формы журнала документов "Склад"
1 Guerro
 
25.03.20
13:40
Проблема решена. Проблема была в том, что я вручную вставил обработку "ПриЗакрытии", и забыл ее определить для формы "ВыдачаТовара".
Программист всегда исправляет последнюю ошибку.