|
v7: 7.7 ВК. Как сбросить признак модифицированности документа? | ☑ | ||
---|---|---|---|---|
0
victuan1
21.01.22
✎
11:52
|
Как сбросить признак модифицированности документа?
Открыта форма документа, по нажатию кнопки, в нем происходит некие изменения в документе (программно процедурой привязанной к этой кнопке), системно взводится признак модифицированности документа. После окончания процедуры нужно как-то программно сбросить признак модифицированности, чтобы платформа 1С думала, что документ не изменен. Наверняка уже было решение и слышал вроде о нем краем уха. Но было давно и найти ничего не могу. Кто поможет готовым решением? Если решается через ВК, то желательно через 1с++. Всё что нарыл - неработающий код: //_____________________________________________________________________________ Процедура глСброситьПризнакМодифицированности(Конт) Экспорт //тщи // сброс признака модифицированности для формы Если (Конт.Выбран()=1) Тогда //(Конт.Модифицированность()=1) и Если ПлюсыЗагрузить() = 1 Тогда Попытка ФормаРасш = СоздатьОбъект("РасширениеФормы"); ФормаРасш.УстановитьФорму(конт.Форма); Сообщить(ФормаРасш.ПолныйПуть()); ФормаРасш.СбросМодифицированности() Исключение сообщить(ОписаниеОшибки()); //НачатьТранзакцию(); //Конт.Записать(); //ОтменитьТранзакцию(); КонецПопытки КонецЕсли; КонецЕсли; КонецПроцедуры // СброситьПризнакМодифицированности |
|||
1
trad
21.01.22
✎
11:59
|
переделать форму так, что бы вот это "системно взводится признак модифицированности документа" происходило только тогда когда нужно, не вариант?
|
|||
2
victuan1
21.01.22
✎
12:00
|
(1) Не вариант.
|
|||
3
АгентБезопасной Нацио
21.01.22
✎
12:01
|
(0) вообще-то это формекс
|
|||
4
trad
21.01.22
✎
12:02
|
если не сложно расскажи, почему документ должен быть без признака, если реквизит документа изменен?
|
|||
5
MWWRuza
гуру
21.01.22
✎
12:10
|
(4) расскажи, почему документ должен быть без признака, если реквизит документа изменен?
Ну, тут можно предположить, что не хочет нарушать ГП. А меняется реквизит, который не влияет на нее. Но, документ все равно захочет провестись, а тогда ГП "полетит"... |
|||
6
victuan1
21.01.22
✎
12:28
|
(4) Эмулируется несколько ТЧ, которые отображаются в одной штатной ТЧ документа при выборе закладки. Сделано давно (дцать лет назад) - работает, переделывать смысла нет - всем удобно.
Щас подчищаю хвосты (делаю легкую уборку в конфе), поэтому возник сабж. |
|||
7
Kigo_Kigo
21.01.22
✎
12:36
|
е если после выполнения сдеать Записать() признак разве не сбросится?
|
|||
8
trad
21.01.22
✎
12:36
|
(6) ясно.
|
|||
9
Эльниньо
21.01.22
✎
12:57
|
В памяти возникает "ложное закрытие формы"
|
|||
10
Djelf
21.01.22
✎
13:02
|
Код в (0) рабочий, только вот системный диалог сохранения выводится до события ПриЗакрытии(), а события ПерезЗакрытием() нет.
Повесь СбросМодифицированности в событие FormEx ПослеОбновленияФормы(). |
|||
11
Ёпрст
21.01.22
✎
13:21
|
(0) повесь сброс модифицированности в формулу текстового реквизита на форме
|
|||
12
Базис
naïve
21.01.22
✎
13:23
|
(11) Этот сброс будет всегда работать, даже когда он не нужен?
|
|||
13
серый КТУЛХУ
21.01.22
✎
13:28
|
(5): "документ все равно захочет провестись" - нет. точнее - от программиста зависит.
(9): совсем не про то. а без вк, тупо начатьтранзакцию - записать - отменитьтранзакцию? |
|||
14
Ёпрст
21.01.22
✎
13:52
|
(12) дык проверку на нужность воткнёт
|
|||
15
victuan1
21.01.22
✎
13:52
|
(3) Вообще-то, этот код был написан так давно, когда еще формекс входил в состав 1с++ ;)
|
|||
16
victuan1
21.01.22
✎
13:54
|
(13) "без вк, тупо начатьтранзакцию - записать - отменитьтранзакцию?"
Тогда срёт в 1cv7.mlg, а нам это не надо, поди еще и в УРБД запишет изменения? А нам это не надо. |
|||
17
серый КТУЛХУ
21.01.22
✎
14:16
|
(16) для этого еть метод .РегистрацияИзменений(0/1)
|
|||
18
Злопчинский
21.01.22
✎
14:24
|
Костыли приводят к другим костылям для костылей
|
|||
19
victuan1
21.01.22
✎
14:25
|
(17) У меня еще записи в млг-файле используются для обмена изменениями между неидентичными базами через GetIDs.dll.
Лишние записи в млг сломают выгрузку. |
|||
20
АгентБезопасной Нацио
21.01.22
✎
14:30
|
(18) спасет только ампутация? :-)
|
|||
21
victuan1
21.01.22
✎
14:35
|
Не люблю костыли..
|
|||
22
АгентБезопасной Нацио
21.01.22
✎
14:38
|
(21) смотря что считать "костылем".
с моей точки зрения, костыллинг™ - это вариант с отменой транзакции. а с формексом - вполне нормальное решение. ну и (опять же, имхо), "использование записей в млг для обмена" - тоже костыллинг™ |
|||
23
victuan1
21.01.22
✎
14:43
|
(22) С формексом я согласен. Чуть позже проверю на нем.
Использование млг для обмена меньший изврат чем весь МОД от ПиБи. |
|||
24
Ёпрст
21.01.22
✎
14:45
|
(23) МОД - это лучшее что было придумано в клюшках.
|
|||
25
victuan1
21.01.22
✎
14:49
|
(24) По мне, самое худшее.
|
|||
26
Ёпрст
21.01.22
✎
14:50
|
(25) Люди делятся на 2 категории - кто работал с МОД-ом и на тех, кто только видел, слышал.
|
|||
27
victuan1
21.01.22
✎
14:51
|
(26) Я замучился этот мод из конф выковыривать.
|
|||
28
Ёпрст
21.01.22
✎
14:52
|
С МОД-об можно было реализовывать любые обмены, с любыми базами, можно было работать 24/7 и менять конфы на ходу, используя МОД.
Да и ..много чего можно. КД и риб и рядом не валялись в то время. |
|||
29
Ёпрст
21.01.22
✎
14:52
|
(27) Зачем ?
|
|||
30
Ёпрст
21.01.22
✎
14:53
|
И выковыривать - сразу видно, что ты с ним не работал - есть штатный деинсталятор от ПБ, который сам удалит в и вернёт код в исходное состояние
|
|||
31
victuan1
21.01.22
✎
14:53
|
(27) Вот если бы МОД взял бы за основу штатный УРБД, но научился использвовать урбд-шные файлы обмена для неидентичных баз - вот эта была бы вещь.
А так раскуроченная база вставками МОДа, чтобы реализовать собственный механизм регистрации изменений, вместо надежного как Калашников УРБД. |
|||
32
Базис
naïve
21.01.22
✎
14:53
|
(24) Сразу после конфы "Финансовое планирование" от Инталева. (голосом Ильича) кстати, а где он?
|
|||
33
victuan1
21.01.22
✎
14:54
|
(29) Прог добавляет новые объекты метаданных и забывает про обработку МОДовского ИД - всё ломается.
|
|||
34
Ёпрст
21.01.22
✎
14:54
|
(31) Ты не поверишь. Но есть решения, где регистрация измений сделана через УРИБ, а обмен по правилам МОД-а..
|
|||
35
Ёпрст
21.01.22
✎
14:54
|
И это обсуждали... хрен знает в каком году на кубани, АндрейАндреич не даст соврать
|
|||
36
Ёпрст
21.01.22
✎
14:55
|
(33) Просто этот объект не будет выгружаться, делов то
|
|||
37
victuan1
21.01.22
✎
14:55
|
сама идея МОДа дублировать штатные ф-и своими мне вызывает неприятие.
|
|||
38
Ёпрст
21.01.22
✎
14:55
|
Другое дело, что надо помнить про конструкции модовские с записью объекта, чтоб регистрация была, или наеборот не была.
|
|||
39
Ёпрст
21.01.22
✎
14:56
|
(37) вот и я про то - см. (26)
) |
|||
40
АгентБезопасной Нацио
21.01.22
✎
14:57
|
(31) штатного механизма не всегда хватает.
Ну и невозможность (по крайней мере, с моими кривыми руками) сделать нормальную работу напрямую с табличками урбд для файловой. (35) даже я помню. после этого тоже пробовал МОД, но все-таки остался на типовой УРБД с прямымой корректировкой табличек |
|||
41
victuan1
21.01.22
✎
19:15
|
(11) Спасибо, работает.
А как отключить, чтобы формекс при этом не плевал в табло сообщений: X:\Base1C\BuhRM\1Cv7.MD\Document\Document_Number53565 X:\Base1C\BuhRM\1Cv7.MD\Document\Document_Number53565 ? |
|||
42
victuan1
21.01.22
✎
19:17
|
(41) А не, это мое отладочное сообщение, забыл убрать.
|
|||
43
Злопчинский
21.01.22
✎
20:24
|
в каком-то достаточно свежем редизе 9но не последнем) формекса - в табло сообщение выдается служебное внутриформексовское
|
|||
44
victuan1
21.01.22
✎
22:01
|
Задачу сабжа я победил - работает четко через формекс - спасибо Ёпрсту.
//_____________________________________________________________________________ Процедура глСброситьПризнакМодифицированности(Конт) Экспорт //тщи // сброс признака модифицированности для формы Если Конт.Выбран()=1 Тогда Если ФормексЗагружен = 1 Тогда Попытка ФормаРасш = СоздатьОбъект("РасширениеФормы"); ФормаРасш.УстановитьФорму(конт.Форма); //Сообщить(ФормаРасш.ПолныйПуть()); ФормаРасш.СбросМодифицированности() Исключение сообщить(ОписаниеОшибки()); КонецПопытки КонецЕсли; КонецЕсли; КонецПроцедуры // СброситьПризнакМодифицированности //_____________________________________________________________________________ Функция ИтоговаяСтрока() //тщи Если (НадоСброситьПризнакМодифицированности = 1) и (Модифицированность()=1) Тогда НадоСброситьПризнакМодифицированности = 0; глСброситьПризнакМодифицированности(контекст) КонецЕсли; ... |
|||
45
GreyK
22.01.22
✎
12:24
|
(44) Можно и без ВК.
Процедура СброситьМодифицированность() НачатьТранзакцию(); Записать(); ОтменитьТранзакцию(); КонецПроцедуры |
|||
46
Djelf
22.01.22
✎
14:03
|
(45) А читать (16) и (19) не обязательно? А в коде в (0) это решение уже есть, но не подошло.
|
|||
47
Злопчинский
22.01.22
✎
14:13
|
(45) В общем случае - сломается на Записать()
|
|||
48
GreyK
22.01.22
✎
14:19
|
(46) Извиняюсь, пропустил :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |