Имя: Пароль:
1C
1С v8
Как в процедуре док ПриЗаписи узнать что она вызвана при закрытой форме?
0 SerGa
 
10.10.12
13:19
т.е. нужно при записи почистить некоторые реквизиты документа в случае запись вызвана не из фомы..
1 zak555
 
10.10.12
13:20
это какие реквизиты нужно почистить и зачем ?
2 5 Элемент
 
10.10.12
13:21
Никак
3 Fragster
 
гуру
10.10.12
13:22
алгоритм при программном и интерактивном действии не должен отличаться.
4 1Страх
 
10.10.12
13:22
в событии ПередЗаписью формы заполни какое-нибудь доп свойство и анализируй его
но подход неверный, имхо
5 Fragster
 
гуру
10.10.12
13:22
а вообще - в форме устанавливать в ДополнительныеСвойства что-нибудь, а в ПриЗаписи - анализировать.
6 SerGa
 
10.10.12
13:22
(1) это не суть важно... априори считаем это необходимым...
7 Нуф-Нуф
 
10.10.12
13:22
в процедуре перед записью модуля формы добавлять дополнительно свойство. и по его наличию в модуле объекта определять откуда вызвана запись
8 Fragster
 
гуру
10.10.12
13:22
только менять надо ПередЗаписью, а не ПриЗаписи
9 Фрэнки
 
10.10.12
13:23
я в таких случаях ПриОткрытии формы добавляю дополнительное свойство объекту.
ПриЗаписи или ПередЗаписью в модуле объекта смотрю было установлено дополнительное свойство или нет.
10 1Страх
 
10.10.12
13:23
(7) ты опоздун, смотри (4)
11 zak555
 
10.10.12
13:23
(6) херня а не "априори"
объект он и в африке объект и ему пофигу откуда его пишут --- прграммно или интерективно
12 SerGa
 
10.10.12
13:24
Всем спасибо.  путь ясен...!!
13 Фрэнки
 
10.10.12
13:25
(10) в чем неверность такого подхода, если другого применения для ДополнительноеСвойство нету
14 1Страх
 
10.10.12
13:25
(13) см (3)
15 olegves
 
10.10.12
13:27
(0) при записи из формы передавай свой параметр записи, а в модуле объекта проверяй этот свой параметр. Если параметра нет, значит запись не из формы
16 Classic
 
10.10.12
13:32
(3)
Зачем тогда ОбменДанными.Загрузка ?
17 Рэйв
 
10.10.12
13:33
(0)Сделай экспортную переменную модуля объекта и ставь ее в истина в ПриЗаписи в форме.

Но лучше бы ты прислушался к (3)
18 Fragster
 
гуру
10.10.12
13:34
(13) применение - передача данных по цепочке событий.
19 pumbaEO
 
10.10.12
13:35
УФ ?
20 Fragster
 
гуру
10.10.12
13:35
(16) алгоритм в таком случае выполнился в другом узле РИБ (по хорошему). а "мальчики, которые могут поменять задним числом без проверок" - это неправильно.
21 SerGa
 
10.10.12
13:38
(15) Как передавать параметр?
(17) а ведь точно.... самый простой вариант.  к мнению (3) прислушался, там особый случай  на логику записи движений никак не влияет...
22 Aprobator
 
10.10.12
13:38
(0) экспортная переменную модуля объекта. В модуле формы в событии ПриЗаписи ставишь ей какое нибудь значение. Ну и в модуле объекта ПриЗаписи выполняешь анализ ее значения.
23 Classic
 
10.10.12
13:39
(20)
Не факт, что такой же алгоритм, как при интерактивном проведении.
24 Fragster
 
гуру
10.10.12
13:40
(23)->(3). ОбменДанными.Загрузка сделан для того, чтобы повторно не взывать все алгоритмы проверок, формирования движений и т.д.
25 Фрэнки
 
10.10.12
13:51
(21) (22) Ну и в чем прописанная в тексте модуля объекта экспортная переменная отличается от прописывания в модуле формы добавления элемента в структуру ДополнительныеСвойства ?
26 SerGa
 
10.10.12
13:54
(25) по большому счету не чем наверно в данном случае..  на мой взгляд чуть проще и прозрачней код...
27 Aprobator
 
10.10.12
13:54
(25) дело вкуса. Право на жизнь имеет и то и то. Просто экспортная переменная - первое что пришло в голову. Такая задача ни разу не возникала.
28 hhhh
 
10.10.12
13:56
(14) у меня задача была: выгрузка оплат в эксель. Как раз надо выгружать только измененные интерактивно. А если главбух запустила групповое перепроведение за год, то выгружать документы не надо.
29 pumbaEO
 
10.10.12
13:57
(27) На УФ не сильно прокатит.
30 Aprobator
 
10.10.12
13:57
интерактивные проверки должны вызываться из событий формы, только и всего.
31 Aprobator
 
10.10.12
13:58
(29) экспортные переменные в модуле объекта запрещены?
32 ssh2006
 
10.10.12
14:00
На УФ с доп свойствами может не сработать
33 Aprobator
 
10.10.12
14:02
(32) почему? ДополнительныеСвойства - свойство объекта. Правда писать в него можно только на стороне сервера.
34 ssh2006
 
10.10.12
14:08
Как-то пробовал из обработки заполнения в модуле объекта поместить в доп свойства значение, а в при создании формы на сервере считать их. Разные объекты получались, исходный объект со своими доп свойствами уже не был жив. Могу ошибаться, но кажется так было.
35 Aprobator
 
10.10.12
14:13
скорей всего не с того объекта форму получал.
36 Лефмихалыч
 
10.10.12
14:13
(0) с некоторыми оговорками и ограничениями может подойти вот эта метода:

Процедура ПриЗаписи()
  Если Документы.ТвойДокумент.ПолучитьФорму().Открыта() Тогда
     // дело происходит, когда открыта форма


Но проще и правильнее перестать хотеть так делать: различное поведение при открытой форме и закрытой - это быдлокодинг в чистом виде
37 ssh2006
 
10.10.12
14:19
Q: "Можно ли изменить ДополнительныеСвойства у документа из управляемой формы в режиме тонкого клиента, а затем поймать в обработчике события ПриЗаписи() объекта "документ"?"

A: "Теоретически можно, но практического смысла в этом мало.
На клиенте нет объектов. Поэтому чтобы изменить свойство ДополнительныеСвойства вам нужно пойти на сервер, там реквизит формы преобразовать в объект и тогда уже менять его свойство ДополнительныеСвойства.
Воспользоваться тем, что вы изменили, можно будет только в этом же серверном вызове и до тех пор, пока жив ваш программный объект. Т.е. где-то тут рядом вам нужно будет его записывать.
Если же вы поменятете таким образом ДополнительныеСвойства и решите обратно преобразовать объект в данные формы и вернуться на клиента, то ваши изменения пропадут, т.к. форма "не запоминает" это свойство программного объекта."
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=563290
38 Aprobator
 
10.10.12
14:39
(37) пасиб - буду знать теперь.
39 olegves
 
10.10.12
17:32
(21) в процедуре ПередЗаписьюНаСервере
ПараметрыЗаписи - это структура, куда можно вставлять свои параметры
40 Mort
 
10.10.12
17:49
(37) Не верю что Радченко ТАК ответил...

В параметрах процедур передЗаписьюнаСервере и ПриЗаписиНаСервере есть ТекущийОбъект. Это и есть тот самый записываемый объект, которому можно назначить доп. свойства.
41 ssh2006
 
10.10.12
18:25
(40) Да вроде устанавливать доп свойства в передЗаписьюнаСервере, чтобы потом их получить в ПередЗаписьюОбъекта - это как раз в этой схеме: [Воспользоваться тем, что вы изменили, можно будет только в этом же серверном вызове и до тех пор, пока жив ваш программный объект.].
42 Mort
 
10.10.12
18:28
(41) В той, только имелось в виду другое: "Т.е. где-то тут рядом вам нужно будет его записывать"
43 ssh2006
 
10.10.12
18:30
(42) ну без записи же не обойтись...
44 Mort
 
10.10.12
18:36
(43) С чего бы?

Процедура ПередЗаписьюНаСервере(...)

  ТекущийОбъект.ДополнительныеСвойства.Вставить("Ж*ПА"); // Ловим в модуле объекта

КонецПроцедуры;
45 Aprobator
 
10.10.12
18:46
запись то тут не при чем. Имелось ввиду, что если после изменения допсвойств объекта будет использован метод ЗначениеВДанныеФормы, то допсвойства сотрутся. Проверять, имхо, надо.
46 ssh2006
 
10.10.12
18:48
(44) да, тут вопросов нет.

Сбегать на сервер, поменять доп свойства и продолжить дальше смотреть на форму, с тем, чтобы позже нажав кнопку записать отловить их в ПриЗаписи не получится. Я так это понимаю. Чтобы эти доп свойства попали в ПриЗаписи объекта, нужно, чтобы они устанавливались в том же серверном вызове, что и сама процедура ПриЗаписи. Установка в ПередЗаписьюНаСервере как раз это решает. Но для вызова этой процедуры нужно вызвать запись. Т.е. можно установить доп св-ва и следом Записать() или устанавливать их уже ПередЗаписьюНаСервере. Противоречий не вижу.  

(45) как раз причем. Чтобы эти доп свойства попали в ПриЗаписи объекта, нужно, чтобы они устанавливались в том же серверном вызове, что и сама процедура ПриЗаписи - я так понимаю.
47 Aprobator
 
10.10.12
18:50
(46) проверяй (44) и все увидишь сам. Объект один, но измененный. И не за что не поверю, что модуль объекта видит другой объект без изменений сделанных в модуле формы.
48 ssh2006
 
10.10.12
18:53
(47) что проверять-то, я написал [да, тут вопросов нет.]. Это и в СП написано
49 Фрэнки
 
11.10.12
09:36
Можно подвести резюме по всему обсуждению:
- при использовании "толстых форм из толстого клиента" - допсвойства или экспортные переменные модуля объекта дают возможность увидеть, что открытой формы нет.
- при использовании управляемых форм прежнее дефолтное использование экспортной переменной или дополнительного свойства слишком затруднительно и уже практически теряет всякий смысл, поскольку события для объектов в УФ расширены и содержат ПараметрыЗаписи в виде структуры, куда вставляются дополнительные непосредственно в коде для инициации записи объекта. Т.е. все отличия в ПараметрыЗаписи, которых в режиме совместимости с версией 8.1 просто нет.