Имя: Пароль:
1C
1C 7.7
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) Извиняюсь, пропустил :)