Имя: Пароль:
1C
1C 7.7
V7 - в форме документа при вызове Записать() не выполняется ПриЗаписи() - может кто помнит
,
0 Джордж1
 
10.01.22
15:50
Документ. Перед Печатью записываем документ методом Записать(), но почему то при этом не вызывается предопределенная процедура ПриЗаписи()

В справке написано что Записать() аналогичен интерактивной записи
1 Kigo_Kigo
 
10.01.22
15:53
Насколько я помню, при Записать() в процедуру ПриЗаписи() не входит
2 Kigo_Kigo
 
10.01.22
15:54
3 Джордж1
 
10.01.22
15:55
И как тогда ее вызвать да еще со проверкой выполнения

При обычной записи все проверки в ПриЗаписи() и там СтатусВозврата(0) и отмена записи если нужно
4 Kigo_Kigo
 
10.01.22
15:56
(3) Читай в (2) там все отоветы
5 Джордж1
 
10.01.22
15:57
(4)Не весело. Сейчас вся коонфа унифицирована, а тут придется костыли делать
6 Kigo_Kigo
 
10.01.22
15:58
(5) Так в лоб вызывай ПриЗаписи(), тя никто за это не укусит
7 Джордж1
 
10.01.22
15:59
(6)Так мне надо проверить - как она отраблотала
8 Харлампий Дымба
 
10.01.22
16:04
В типовой ЗиКе так
Процедура ПриЗаписи()
ПередЗаписью();
КонецПроцедуры    // ПриЗаписи

а в Функция ПередЗаписью() запихиваешь всё, что было в ПриЗаписи(), и если СтатусВозврата(0) то возвращай себе 0.
И тогда в Печать():
Если ПриЗаписи()=1 Тогда
Записать();
Печать();
9 Джордж1
 
10.01.22
16:05
Вот так малой кровью вроде работает

            ПриЗаписи();
            Если СтатусВозврата()=1 Тогда
                Записать();
            Иначе
                Возврат;
            КонецЕсли;
10 trad
 
10.01.22
16:06
(7) СтатусВозврата() - это еще и функция
11 Харлампий Дымба
 
10.01.22
16:07
(9) Идеально
12 Джордж1
 
10.01.22
16:08
(10)это да. только вот за пределами процедуры вызова - непонятно что она возвращает
13 серый КТУЛХУ
 
10.01.22
16:38
(12): ну, вообще-то - известно.
при начале выполнения любого куска кода (включая модальные вызовы) СтатусВозврата() возвращает единицу. в процессе выполнения кода он может бытьть изменен программно или встроенными средствами 1с.
14 Джордж1
 
10.01.22
16:50
(13)в документации сказано про некое "действие" - а вот что это такое - непонятно.
15 Харлампий Дымба
 
10.01.22
22:51
(14) Некое действие - это вызов СтатусВозврата(0), ну или СтатусВозврата(1). То есть ты в одной из процедур/функций делаешь СтатусВозврата(0), то потом тебе по всему стеку вызовов функция СтатусВозврата() будет возвращать ноль. После выхода из последней процедуры значение СтатусВозврата() опять вернётся в единицу. Если после установки СтатусВозврата(0) в этом же стеке вызовов будет выполняться предопределенная процедура, то при завершении отработки этой  процедуры, системно событие выполняться не будет.
В документации написано, что устанавливать СтатусВозврата() имеет смысл только в теле предопределенных процедур, но это немного не так. СтатусВозврата() прекрасно отрабатывает свои функции и в пользовательских процедурах, вызванных из предопределенных.