Имя: Пароль:
1C
 
Блокировка документа после его объединения с другим
0 AnBlast
 
28.12.23
18:15
Есть два документа... с моем случае счета.
В какой-то момент оператор решает, что их надо объединить в один. Выбирает первый - в который, потом второй - из которого перелить ТЧ, нажимает кнопку объединить. Все объединяется, но полученный документ ставится на блокировку - зайти в него нельзя до перезапуска программы у этого оператора (т.е. блокировка вызвана именно объединением).

Документ нигде не светится открытым
При попытке программно открыть документ сразу после объедиения и записи - та же ошибка блокировки.

Пробовал играться с РазблокироватьДанныеДляРедактирования - не получается.
Просто программно открыть - тоже, естественно, не получается.

Не то, что б это была очень большая проблема, но задалбывает операторов.

Подскажите какой-нить путь обхода этого дела...
УФ. РМК.
1 Мимохожий Однако
 
28.12.23
19:23
Без кода обсуждать бессмысленно
2 AnBlast
 
29.12.23
10:52
(1) та там 350 строк кода в объединении...
но суть простая - объединение табличных частей (их там несколько и они связаны)... потом один док снимается с проведения, а второй проводится/сохраняется.
И вот как раз второй блокируется.
Все в одной транзакции.

код собственно сохранения документа нового вот:

Док1.СуммаДокумента = Док1.Товары.Итог("Сумма");
Док1.Комментарий = Док1.Комментарий+" /Объединение/ "+СокрЛП(Ком);
Док1.Записать(?(Док1.Проведен ИЛИ Док2.Проведен,РежимЗаписиДокумента.Проведение,РежимЗаписиДокумента.Запись));
3 MaximSh
 
29.12.23
12:37
(2)

Если Док1.Заблокирован() Тогда
Док.1.Разблокировать();
КонецЕсли;
4 AnBlast
 
29.12.23
15:37
(3) а нифига ))
я так тоже пробовал... Док1.Заблокирован() у меня после объединения = Ложь
Но форму открыть не дает. Ни программно, ни интерактивно до перезапуска сеанса
5 vicof
 
29.12.23
15:50
(2) Суть-то может и простая, а код кривой)
6 AnBlast
 
29.12.23
16:47
(5) ну я б не стал читать 350 строк кода ))

но побороть получилось
добавил РазблокироватьДанныеДляРедактирования

Док1.СуммаДокумента = Док1.Товары.Итог("Сумма");
Док1.Комментарий = Док1.Комментарий+" /Объединение/ "+СокрЛП(Ком);
Док1.Записать(?(Док1.Проведен ИЛИ Док2.Проведен,РежимЗаписиДокумента.Проведение,РежимЗаписиДокумента.Запись));
РазблокироватьДанныеДляРедактирования(, ЭтаФорма.УникальныйИдентификатор)

Но теперь вопрос - я не указываю первый параметр и значит что будут разблокированы все объекты связанные с этой формой? есть шанс накосячить?
Это форма выбора чека в РМК общепит с тучей официантов которые не видят чеки друг друга, но администраторы видят...
т.е. теоритически может быть открыт из этой формы другой чек и я его тоже разблокирую (собственно все, что связанно с формой разблокирую) и админ что-то направит параллельно с автором чека...
или нет?
7 Bigbro
 
30.12.23
08:44
"ну я б не стал читать 350 строк кода"
лентяй.
8 Мимохожий Однако
 
30.12.23
08:50
Я бы вообще не заморачивался с объединением документов. Логичнее сделать единую печать с нескольких чеков. При этом и подробная информация не потеряется и не надо заниматься танцами с бубнами.
Как говорится:"Другой взгляд на задачу".
9 AnBlast
 
03.01.24
17:11
(7) есть такое ))
(8) не... оно как бы вариант, но все уже привыкли так.

Н вопрос все равно актуален: я не указываю первый параметр и значит что будут разблокированы все объекты связанные с этой формой? Так? есть шанс накосячить?

Уже день гоняю тесты этого дела... но уверенности на 100% нет, что кто-то добавит что-то в чек, я его разблокирую, а потом кто-то опять что-то другой еще что-то добавит. И будет беда
10 Мимохожий Однако
 
03.01.24
22:19
(9) Если дань привычкам, то накосячишь 100%