Имя: Пароль:
1C
1С v8
Управляемые формы. Признак копирования документа
0 Wefast
 
14.10.15
12:48
При создании документа_1, перед его записью я создаю другой документ_2 программно.

Если реквизит с ссылкой на этот новый документ_2 существует значит документ_1 не новый и документ_2 новый не создается.
Если реквизит пустой, значит это новый документ_1 и создается документ_2

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

Вот я и не пойму как понять создается документ копированием или нет.

Дошел только до того, что бы проверять заполненость обязательного реквизита формы. Но не нашел событие которое бы вызывалось для еще не записанных(новых) документов.
1 butterbean
 
14.10.15
12:50
просто очищай реквизит ПриКопировании
2 vicof
 
14.10.15
12:51
"перед его записью я создаю другой документ_2 программно"
это 5
3 Wefast
 
14.10.15
12:56
(2) ?
(1) что то я не найду такой реквизит
4 GROOVY
 
14.10.15
12:58
Данные заполнения проверяй. Да и событие, вроде как есть.
5 butterbean
 
14.10.15
12:59
(3) ПриКопировании - это событие, в котором нужно очищать твой реквизит документа_1, содержащий ссылку на документ_2
6 GROOVY
 
14.10.15
13:00
ДокументОбъект.<Имя документа>.ПриКопировании (DocumentObject.<Имя документа>.OnCopy)
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ПриКопировании (OnCopy)
Синтаксис:

ПриКопировании(<ОбъектКопирования>)
Параметры:

<ОбъектКопирования>

Тип: ДокументОбъект.
Исходный документ, который является источником копирования.
Описание:

Возникает при создании документа копированием.
См. также:

ДокументСсылка, метод Скопировать
7 Wefast
 
14.10.15
14:01
(5) у формы нет такого события
(6) не пойму как это применить. Это разве не способ программно скопировать какой то документ? Что то вроде
Документы.МойДокумент.ПриКопирование(СсылкаНадокумент);
Иначе я не понима что и куда написать
8 GROOVY
 
14.10.15
14:10
(7) Это событие объекта Возникает при создании документа копированием
9 Wefast
 
14.10.15
14:52
(8) ну вот я создаю документ копированием.
Поставил точку останова на событие ПриОткрытие
открываю отладку Shift+f9
Ввожу Объект
И нет там ПриКопирование
Ввожу ЭтаФорма
И тоже не нахожу ПриКопирование
Ввожу Документы.КА_ГрафикПлатежей.Прикопирование() и нет там ничего
10 Wefast
 
14.10.15
14:56
В общем мне тут подсказали, что в модуле объекта можно такое событие создать и видимо тут то и нужно останавливаться точкой останова
11 Jonny_Khomich
 
14.10.15
14:57
(10) ага, в этом событии тебе надо очищать значение твоего реквизита
12 olegves
 
14.10.15
14:57
(9) как все запущено...
открой модуль объекта (твоего документа), найди (создай) процедуру ПриКопировании и там ставь ТО
13 Wefast
 
14.10.15
15:00
(12) да, у меня много таких огромных дыр в знаниях. Без понятия что нужно сделать, что бы познать все эти основы. Пока получается вот только таким способом когда сталкиваешься с подобным
14 Матиус
 
14.10.15
15:06
(13) >> перед его записью я создаю другой документ_2 программно

Что происходит с документом_2 при отмене проведения документа_1? А при пометке удаления? А при удалении? А если документ_1 не записался? А если юзер изменил документ_2, документ_1 скорректируется?

Иди уж в дворники, хоть какой-то толк из тебя будет.
15 Wefast
 
14.10.15
15:28
(14) Ничего не происходит. При удаление или отмене проведения и не должно, заказчик этого не указывал.

А вот если документ не записан, я так понимаю это произойдет если к примеру что то не заполнено, а потом пользователь решил и не делать документ и закроет его.

Тут косяк. И как мне его исправить?

А советы свои где и кем мне работать прошу оставить при себе.

Считаю что все это приходит с опытом.
16 Wefast
 
14.10.15
15:35
(14) При удаление, при отмене проведения я могу получить свой документ_2 и удалить его(теоретически).

А вот что делать если документ_1 пытались записать но не записали в итоге я не знаю.

Может можно создать событие ОбработкаЗаполения() и вызвать ее перед созданием документ_2. Но как это все сделать правильно не представляю
17 Wefast
 
14.10.15
15:43
Ну вот можно вызвать ПроверитьЗаполнение() перед созданием документ_2
20 lefthander
 
14.10.15
16:56
Можно и так
Процедура ПриКопировании(ОбъектКопирования)
    
реквизит с ссылкой на этот новый документ_2 = Неопределено;
    
    
КонецПроцедуры
21 Матиус
 
14.10.15
18:58
(15) Я просто советую тебе быть полезным обществу.

>> А вот что делать если документ_1 пытались записать но не записали в итоге я не знаю.

Транзак...
22 Матиус
 
15.10.15
07:53
(15) >> заказчик этого не указывал.

Правильно, тыжпрограммист, все сделаешь как надо.