![]() |
![]() |
![]() |
|
Системное перепроведение документов | ☑ | ||
---|---|---|---|---|
0
trv5
02.07.13
✎
14:40
|
Попытаюсь обрисовать ситуацию.
Есть подписка на событие "ПередЗаписью" для определенного набора документов. В обработчике устанавливается некий реквизит документа. При этом реквизит должен устанавливаться только если пользователь сам меняет документ. Работает все отлично, но... есть групповое перепроведение документов. Групповое перепроведение пользователи могут вызывать следующими способами: 1. через "групповое перепроведение документов" 2. меню "операции - проведение документов" Для первого варианта решение следующее: - Создал Параметры сеанса "СистемноеПерепроведение" - В обработке ГрупповоеПерепроведениеДокументов параметр устанавливаю в Истина в начале выполнения, и в Ложь после окончания выполнения - В подписке на событие проверяю значение ПараметрыСеанса.СистемноеПерепроведение, ну и соответственно понимаю что это, действие пользователя или перепроведение. Работает отлично... Но вот когда пользователь вызывает меню "операции - проведение документов" начинаются проблемы. Данная штука встроена в саму платформу, а следовательно я не могу установить ПараметрыСеанса.СистемноеПерепроведение в Истину, ну и соответственно в Подписке на события выполняется не совсем то что я хочу... Может кто подскажет решение... |
|||
1
Maxus43
02.07.13
✎
14:41
|
Из формы дока устанавливай ДополнительныеСвойства объекта. Будешь знать что это проведение из формы, т.е. интерактивно
|
|||
2
trv5
02.07.13
✎
14:55
|
(1) Дело в том что события формы ПередЗаписью и ПриЗаписи тоже вызываются с обработки
|
|||
3
Maxus43
02.07.13
✎
14:57
|
что? обработки не открывают формы, с чего они вызываются?
|
|||
4
mikecool
02.07.13
✎
14:58
|
(2) из обработки тоже можно допсвойства объекта установить
|
|||
5
Maxus43
02.07.13
✎
14:59
|
(4) Групповое перепроведение пользователи могут вызывать следующими способами:
1. через "групповое перепроведение документов" 2. меню "операции - проведение документов" тут можно? |
|||
6
mikecool
02.07.13
✎
15:00
|
(5) а тут допсвойство устанавливаться не будет, что будет признаком группового перепроведения
|
|||
7
trv5
02.07.13
✎
15:01
|
(3) Все разобрался, спасибо.
Только придется каждую форму править (((( |
|||
8
trv5
02.07.13
✎
15:02
|
(6) правда и допсвойства в подписке на событие тоже не будет..
|
|||
9
Maxus43
02.07.13
✎
15:03
|
(8) будет, оно живёт на всю жизнь объекта
|
|||
10
Maxus43
02.07.13
✎
15:03
|
(7) ну ты же хочешь отловить именно интерактивное. А оно из форм
|
|||
11
mikecool
02.07.13
✎
15:06
|
(9) если его добавили
|
|||
12
trv5
02.07.13
✎
15:08
|
(10) А как ты предлагаешь добавить допсвойство?
|
|||
13
Maxus43
02.07.13
✎
15:09
|
в форме перед записью
ЭтотОбъект.ДополнительныеСвойства.Вставить("КривымиРучкамиЗаписываетЮзер") |
|||
14
trv5
02.07.13
✎
15:12
|
(13) так я и говорю (7) придется КАЖДУЮ форму править...
В таком случае подписка на событие "ПередЗаписью" без смысленна, все равно надо каждый документ править... |
|||
15
Maxus43
02.07.13
✎
15:13
|
(14) да. Интерактивное проведение не правя формы не отловишь.
А подписка имеет смысл чтобы не править модуль объекта, а только форму |
|||
16
trv5
02.07.13
✎
15:15
|
(15) ну так с таким успехом нужный код можно вписать в ПередЗаписью модуля формы.
|
|||
17
kosts
02.07.13
✎
15:16
|
В форме вызывается куча общих модулей, посмотри, может какой вызывается для каждого документа, там и поставишь нужный флаг.
|
|||
18
mikecool
02.07.13
✎
15:17
|
(17) одна строка или кусок из 500 строк копировать - это одно и то же?
|
|||
19
Maxus43
02.07.13
✎
15:18
|
(16) можно.
Я просто говорю что невидать надёжного метода кроме этого. З.ы. а встроенное в платформу "операции - проведение документов" - она на клиенте проводит или нет? если на сервере - опять же можно вычислить |
|||
20
Aprobator
02.07.13
✎
15:18
|
(0) убрать меню операции нафиг )
|
|||
21
Maxus43
02.07.13
✎
15:19
|
кстати да, (17) прав. в ПриОткрытии вызывается куча процедур, там заполнить правилььно и всё
|
|||
22
Defender aka LINN
02.07.13
✎
15:27
|
(10) А если в форме списка?
|
|||
23
Maxus43
02.07.13
✎
15:27
|
(22) зачем всё портить то?
|
|||
24
trv5
02.07.13
✎
15:29
|
Шеф, все пропало )))))
Если помечать документ на удаление, то форма не открывается, следовательно допсвойство не устанавливается... А ведь это действие пользователя, которое мне надо отследить.. Точно тоже будет при отмене проведения например... Походу выхода нет.... придется из меню операции убирать перепроведение.... |
|||
25
Defender aka LINN
02.07.13
✎
15:39
|
(24) Потому что на самом деле не должно быть никакой разницы - как записывает документ.
|
|||
26
Конфигуратор1с
02.07.13
✎
15:40
|
(25) +1
|
|||
27
Aprobator
02.07.13
✎
15:41
|
Устанавливай реквизит в форме документа, событие ПередЗаписью.
|
|||
28
Aprobator
02.07.13
✎
15:42
|
вообще странная мода, менять реквизиты документа при его проведении.
|
|||
29
mikecool
02.07.13
✎
15:44
|
(25) тото везде отлуп в подписках на Загрузка = Истина
|
|||
30
Конфигуратор1с
02.07.13
✎
15:46
|
вообще задай пользователям в правах администрирование данных и системное перепроведение станет недоступным
|
|||
31
Defender aka LINN
02.07.13
✎
15:46
|
(29) Обмен - отдельная история
|
|||
32
trv5
02.07.13
✎
15:56
|
(25) (28) там реквизит ДатаМодификации используется для отслеживания изменений по документам для выгрузки в другую базу.
Вот только бухи минимум раз в неделю доки перепроводят, при этом могу провести и за пару месяцев. При этом устанавливается ДатаМодификации и соответственно их типа надо выгружать... а документов много, и в них то ниче не меняется... Вот и хотелось бы эту ситуацию исключить... |
|||
33
Aprobator
02.07.13
✎
16:00
|
(32) извращение. План обмена - раз и контроль при записи документа. Если Новый или объект был модифицирован - в обмен.
|
|||
34
trv5
02.07.13
✎
16:01
|
(33) базы мягко выражаясь АБСОЛЮТНО разные
|
|||
35
Aprobator
02.07.13
✎
16:03
|
(34) да какая разница? План обмена фиксирует какие объекты надо выгружать.
|
|||
36
Aprobator
02.07.13
✎
16:05
|
Чистишь его при удачной выгрузке. Как уж там контролируется прием данных - я хз.
|
|||
37
trv5
02.07.13
✎
16:07
|
(35) а как план обмена решит проблему с групповым перепроведением?
|
|||
38
Aprobator
02.07.13
✎
16:08
|
(37) а какая проблема то? Интересует же, чтобы в обмен попадали только измененные документы7 План обмена эту проблему решит. Что еще надо?
|
|||
39
trv5
02.07.13
✎
16:10
|
(38) При групповом перепроведении - они тоже попадут в обмен...
|
|||
40
Aprobator
02.07.13
✎
16:10
|
там правда, фиксацию то в плане обмена придется ручками прописать в данном случае. Автоматом то он там много лишнего пихать будет.
|
|||
41
Aprobator
02.07.13
✎
16:11
|
не ставь автоматическую фиксацию, а прописывай попадание в обмен, там где ты установку своего хитрого реквизита делаешь.
|
|||
42
trv5
02.07.13
✎
16:13
|
(41) )))))
так обратно же встанет вопрос... А как узнать, это групповое перепроведение? или пользователь что-то сделал? |
|||
43
PCcomCat
02.07.13
✎
16:13
|
(0) Может нужно проверять на то, открыта форма или нет, и в случае, когда форма открыта, менять то, что нужно?
|
|||
44
Aprobator
02.07.13
✎
16:15
|
(42) да какая фиг разница? Смысл - писать только если было изменение объекта. Если Объект.Модифицированность() тогда в обмен.
|
|||
45
Конфигуратор1с
02.07.13
✎
16:18
|
(42) так если идет групповое перепроведение то движения тоже меняются, не?
|
|||
46
PCcomCat
02.07.13
✎
16:19
|
(0) Что означает "пользователь сам меняет документ" с вашей точки зрения?
|
|||
47
trv5
02.07.13
✎
16:22
|
(44) Проверил... При проведении документа из "операции - Проведение документов" Объект.Модифицированность()тоже Истина
|
|||
48
trv5
02.07.13
✎
16:23
|
(46) редактирует, проводит, помечает на удаление, отменяет проведение и тд.
|
|||
49
Конфигуратор1с
02.07.13
✎
16:29
|
(48) ну так а групповое проведение чем лучше?
|
|||
50
Конфигуратор1с
02.07.13
✎
16:30
|
то есть если пользователь Вася пупкин наклепал сотню документов, потом понял что тупанул и забыл, что не тот склад надо было выбрать, открыл групповую обработку, поменял с помощью обработки все реквизиты и провел так же, то это не надо фиксировать?
|
|||
51
PCcomCat
02.07.13
✎
16:31
|
(48) на "помечает на удаление", "отменяет проведение" можно навесить автоматически изменение реквизита. А на проведение - считаю, что есть необходимость изменять этот самый реквизит только, если форма открыта, а если из списка проводят, то как и при групповом перепроведении, никаких изменений не происходит.
|
|||
52
Aprobator
02.07.13
✎
16:32
|
(47) значит механизм придется делать чуть хитрее. Идею я дал - думай.
|
|||
53
trv5
02.07.13
✎
16:32
|
(50) эти действия он может сделать с помощью обработки "Групповая обработка справочников и документов" и там все фиксируется.
Речь идет о перепроведении документов с помощью "Операции - Проведение документов" а там менять реквизиты нельзя... |
|||
54
PCcomCat
02.07.13
✎
16:33
|
(50) А вот про групповую обработку - это да!
|
|||
55
Конфигуратор1с
02.07.13
✎
16:33
|
(53) но движения документа то меняются при перепроведении
|
|||
56
trv5
02.07.13
✎
16:35
|
(55) движения документа в другой базе все равно свои, так что простое изменение движений мне не надо
|
|||
57
PCcomCat
02.07.13
✎
16:35
|
(55) Не считаю, что пользователь должен отвечать за движения.
|
|||
58
Aprobator
02.07.13
✎
16:35
|
(53) при проведении из операции Стек вызовов в отладчике что то показывает?
|
|||
59
Конфигуратор1с
02.07.13
✎
16:41
|
(56) ну так тогда раз перепроведение тебе не интересно, то ставишь проверку в обработчике при записи - если документ проведен и режим записи проведения тогда не фиксировать реквизит и все. В чес проблема?
|
|||
60
trv5
02.07.13
✎
16:43
|
(59) ))))
а если пользователь зашел в проведенный документ и например поменял количество? |
|||
61
Конфигуратор1с
02.07.13
✎
16:44
|
(60) а если пользователь открыл документ в форме, и не меняя ничего нажал провести или записать?)
|
|||
62
trv5
02.07.13
✎
16:47
|
(61) ну если он так проведет 10 документов - это одно,
а если бухгалтер проведет обработкой 5 тысяч это совсем другое ))) |
|||
63
PCcomCat
02.07.13
✎
16:50
|
(61) Открыл, нажал кнопку - попался!
|
|||
64
Конфигуратор1с
02.07.13
✎
16:51
|
(62) ну вот. Тебе либо надо отслеживать изменение документов либо в форме при записи реквизит свой фиксируешь, а пометку на удаление и проведение непроведенного документа в обработчике события с проверкой как я сказал на проведен документ и все.
|
|||
65
trv5
02.07.13
✎
16:54
|
(64) в форме в событии ПриЗаписи нельзя, это противоречит (50) ))))
|
|||
66
trv5
02.07.13
✎
16:54
|
Лан, всем спасибо за участие...
вопрос снят... |
|||
67
PCcomCat
02.07.13
✎
16:56
|
Есть еще вариант, только его нужно разобрать.
В общем идея такая: ПередЗаписью у тебя есть записываемый объект, у которого можно получить ссылку в базе, а из ссылки получить объект, записанный в базе; эти два объект и сравнить. Как-то так. |
|||
68
PCcomCat
02.07.13
✎
17:00
|
+(67) скорее сравнить данные записываемого объекта и ссылки.
|
|||
69
hhhh
02.07.13
✎
17:16
|
объекты могут быть одинаковые, а движения поменяются.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |