Имя: Пароль:
1C
1С v8
записать редактируемый документ до нажатия пользователем "Записать"
,
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)Зачем тебе эти кривоокольные пути? Заполняй договор в текущей форме и не выноси мозг людям.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.