Версия для печати темы (https://pro1c.org.ua/index.php?s=e842c578010e0ff5d0e60640ae2a9491&showtopic=52462)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ ПриЗаписиПерепроводить = Ложь. Недоступно для записи

Автор: Constantus 10.06.19, 12:49

Приветствую, Форумчане!
1с8.3.6, самапис, БСП, УФ

Нашел метод, который по-моей задумке должен просто записать документ, не проводя его...

Код

&НаКлиенте
Процедура ДокументСдан(Команда)
    
ДокументСданНаСервере();
    
    ЭтаФорма.ПриЗаписиПерепроводить = Ложь;
    Записать();
    ЭтаФорма.ПриЗаписиПерепроводить = Истина;
    
    Парам = Новый Структура(); //108470
    Парам.Вставить("Основание",Объект.Ссылка);
    Парам.Вставить("Действие","Принят");
    Форм = ОткрытьФорму("Документ.ПрохождениеДокумента.ФормаОбъекта",Парам,,,ВариантОткрытияОкна.ОтдельноеОкно,,Новый ОписаниеОповещения("ДокументСданЗавершение", ЭтотОбъект, Новый Структура("Команда", Команда)),РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
    
КонецПроцедуры


Но выдает ошибку:
Цитата
Поле объекта недоступно для записи (ПриЗаписиПерепроводить)
ЭтаФорма.ПриЗаписиПерепроводить = Ложь;


Как правильно посадить эту волшебную комбинацию? На сервере, ЭтаФорма, Объект?

Автор: Petre 10.06.19, 13:11

Сделать то же самое, только не &НаКлиенте, а &НаСервере.

Автор: Constantus 10.06.19, 13:22

Petre @ Сегодня, 17:11 * ,
Сделал в модуле формы:

&НаКлиенте
Процедура ДокументСдан(Команда)
    ДокументСданНаСервере();
    //Записать(РежимЗаписиДокумента.Запись);
    
    //ПриЗаписиПерепроводить = Ложь;
    //Записать();
    //ПриЗаписиПерепроводить = Истина;
    
    Зап();
    
    Парам = Новый Структура(); //108470
    Парам.Вставить("Основание",Объект.Ссылка);
    Парам.Вставить("Действие","Принят");
    Форм = ОткрытьФорму("Документ.ПрохождениеДокумента.ФормаОбъекта",Парам,,,ВариантОткрытияОкна.ОтдельноеОкно,,Новый ОписаниеОповещения("ДокументСданЗавершение", ЭтотОбъект, Новый Структура("Команда", Команда)),РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
    //Закрыть();
КонецПроцедуры

&НаСервере
Процедура Зап()
    
    ЭтаФорма.ПриЗаписиПерепроводить = Ложь;
    Записать();
    ЭтаФорма.ПриЗаписиПерепроводить = Истина;



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

ЭтаФорма.ПриЗаписиПерепроводить = Ложь
- сработало, т.е. перешло в Ложь, но всё равно стало перепроводить...

Что не так я натворил? Мож в модуле объекта это нужно?

Автор: Petre 10.06.19, 13:34

Constantus @ Today, 13:22 * ,
Это касается только проведенных документов. Если вам надо создать и просто записать документ, используйте параметр метода Записать().

Автор: Constantus 10.06.19, 13:36

Есть нюанс... У меня есть подписка на событие с процедурой

Процедура ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента


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

Т.е. смысл такой, нужно разрешить запись, но не дать возможность перепровести документ... Как правильно расположить последовательность действий кода?



Автор: Petre 10.06.19, 13:48

Constantus @ Today, 13:36 * ,
Не понимаю, при чем здесь подписка. Проверьте отладчиком, и убедитесь.
Если надо записать, вызывайте Записать(РежимЗаписиДокумента.Запись).

Автор: sava1 10.06.19, 14:28

ПередЗаписью - если Режим Проведение Тогда Режим=Запись

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua