|
записать редактируемый документ до нажатия пользователем "Записать" | ☑ | ||
---|---|---|---|---|
0
Andy MilkyWay
17.07.12
✎
14:15
|
Заранее прошу простить за пространность объяснения, что отнимаю драгоценное время.
Добавлен новый документ в типовую конфигурацию УТ для Украины версия 8.2. Документ имеет множество состояний, но проводится в одном определенном состоянии. При этом стандартными средствами конфигурации проверяется правильность заполнения реквизитов (вызывается несколько процедур из общего модуля стеком). В одной процедуре проверяется, что договор соответствует организации. При этом проверка производится не по текущим данным в форме документа, а по данным сохраненного объекта из базы. Даже если пользователь правильно указал договор в форме, все равно пишет, что договор не соответствует организации. Идея заключается в том, чтобы перед запуском проверки взять сохраненный документ из базы, изменить договор и записать в базу, а далее идет стандартная проверка, вызываемая формой. Сделал такой фокус, однако 1с не обманешь, пишет, что невозможно совершить операцию, потому что объект изменен или удален. Как-то можно обмануть 1с в данной ситуации? Возможно, где-то хранится версия документа-объекта, изменяемого формой, и ее можно программно перезаписать? |
|||
1
palpetrovich
17.07.12
✎
14:18
|
многа бувафф, вычлени суть вопроса, может и у самого просветление наступит :)
|
|||
2
Mort
17.07.12
✎
14:19
|
ТС знает толк в извращениях...
|
|||
3
Всеяд
17.07.12
✎
14:20
|
Изменить саму проверку (с данных объекта в БД на данные текущего экземпляра объекта) не предлагать?
|
|||
4
Andy MilkyWay
17.07.12
✎
14:20
|
(1) кратко: Возможно, где-то хранится версия документа-объекта, изменяемого формой, и ее можно программно перезаписать?
|
|||
5
AaNnDdRrEeYy
17.07.12
✎
14:20
|
(2)из серии, "Наступил на яйца и прыгнул"
|
|||
6
gosn1ck
17.07.12
✎
14:20
|
(4) (1)
|
|||
7
Andy MilkyWay
17.07.12
✎
14:22
|
(3) идут стандартные проверки из общих модулей, менять их?
|
|||
8
AaNnDdRrEeYy
17.07.12
✎
14:22
|
(4)версия меняется только при записи, не при изменении.
при изменении всего устанавливается признак Модифицированность |
|||
9
Andy MilkyWay
17.07.12
✎
14:24
|
(8) я же и записываю объект с измененным реквизитом "Договор", поэтому версия меняется
|
|||
10
AaNnDdRrEeYy
17.07.12
✎
14:24
|
(7)нет, просто вызывать из нужных месть когда уже объект записан. например в обработке проведения. и если что то не так то отказ
|
|||
11
AaNnDdRrEeYy
17.07.12
✎
14:26
|
(9) тогда просто обнови версию
Этаформа.Прочитать(); |
|||
12
Andy MilkyWay
17.07.12
✎
14:26
|
была идея в форме сделать экспортную переменную-структуру, в которой хранить текущие реквизиты формы для проверки именно в той процедуре, но при обновлении конф. пишет, что такая переменная не существует
|
|||
13
Andy MilkyWay
17.07.12
✎
14:27
|
(11) а остальные реквизиты, которые были изменены в форме, не затрутся?
|
|||
14
AaNnDdRrEeYy
17.07.12
✎
14:28
|
Нет они тоже записываються когда ты при изменения договора записываеш,
нельзя записать документ частями, только целиком. |
|||
15
Andy MilkyWay
17.07.12
✎
14:33
|
(14) я перед запись договора получаю из базы копию сохраненного объекта в другой переменной, меняю в ней договор и записываю в базу. А все остальные реквизиты не записываю, они должны проверяться далее стандартным путем.
|
|||
16
Лефмихалыч
17.07.12
✎
14:36
|
(0) осуществляй проверку заполнения в обработке проверки заполнения, не делай мозг
|
|||
17
Andy MilkyWay
17.07.12
✎
14:41
|
(16) Можно было бы сделать, если бы я сам делал это документ. Но мы работаем командой, каждый делает свой кусок, могу кому-то испортить работу :(
|
|||
18
AaNnDdRrEeYy
17.07.12
✎
14:42
|
(15) ты так делаеш?
ДокОбъект = объект.Ссылка.ПолучитьОбъект();//копия со старым договором ДокОбъект.Договор = объект.договор;//копия с новым Докобъект.Записать(Режимзаписидокумента.запись); проверитьДоговор(докОбъект.ССылка);//проверка |
|||
19
sash-ml
17.07.12
✎
14:43
|
записатьвформе() не?
|
|||
20
Andy MilkyWay
17.07.12
✎
14:44
|
(18) так, вроде бы
|
|||
21
AaNnDdRrEeYy
17.07.12
✎
14:44
|
если так как в (18) то ты влип детка
ТОЛЬКО ЧТЕНИЕ ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>) ВерсияДанных (DataVersion) Использование: Только чтение. Описание: Тип: Строка. Содержит текущую версию данных объекта. Доступность: Сервер, толстый клиент, внешнее соединение |
|||
22
AaNnDdRrEeYy
17.07.12
✎
14:45
|
скажи с теми с кем в комманде работаеш что это невозможно, пусть переделывают
|
|||
23
Andy MilkyWay
17.07.12
✎
14:47
|
(22) ладно, буду еще думать
|
|||
24
Andy MilkyWay
17.07.12
✎
14:49
|
в любом случае, всем спасибо за помощь ;)
|
|||
25
pessok
17.07.12
✎
15:09
|
чета я не пойму. а значение реквизита формы нельзя епередать на проверку?
|
|||
26
Рэйв
17.07.12
✎
15:13
|
(15)Зачем тебе эти кривоокольные пути? Заполняй договор в текущей форме и не выноси мозг людям.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |