Имя: Пароль:
1C
1С v8
Модифицированность() и Модифицированность
,
0 varyag
 
13.01.15
07:50
Не могу понять почему метод Модицицированность() возвращает Истина.
http://storage3.static.itmages.ru/i/15/0113/h_1421124637_2437524_cf1aed2e84.jpg
Хотя ПриОткрытии в Модуле формы написал уже:
    ЭтаФорма.Модифицированность = Ложь;
    Модифицированность = Ложь;
1 lxndr
 
13.01.15
07:53
() - это метод объекта
свойство - это свойство формы
2 varyag
 
13.01.15
07:57
(1) это итак понятно. Почему метод объекта возвращает Ложь. А если вызывать через ПолучитьФорму() - то Истина. Причем свойство формы тоже Ложь.
3 varyag
 
13.01.15
07:58
причем у Формы в синтакс помощнике вообще нет метода такого, а только свойство
4 hhhh
 
13.01.15
08:09
(0) значит ПередОткрытием или ПриОткрытии меняет реквизит объекта какой-то. Допросите вашего программера при помощи паяльника, чего-то он туда вставил.
5 varyag
 
13.01.15
08:20
(4) понятно что меняет. Но я думал что
    ЭтаФорма.Модифицированность = Ложь;
    Модифицированность = Ложь;
должно решить проблему
6 Krolik Bezobraznik
 
13.01.15
08:59
(5) Флаг модифицированности сбрасывается после события ПередОткрытием() формы, но перед событием ПриОткрытии().

Иди отладчиком по событию ПриОткрытии(), что то меняется из реквизитов.
7 Defender aka LINN
 
13.01.15
09:12
(5) Это смотря какую проблему ты хочешь решить
8 Фокусник
 
13.01.15
09:19
(5) ИМХО, флаг Модифицированность нужно НЕ сбрасывать, а НЕ устанавливать...
9 Defender aka LINN
 
13.01.15
09:33
(8) А какая разница, если он ждет, что установкой этого флага вернет доллар по 6 ублей?
10 Defender aka LINN
 
13.01.15
09:33
*рублей
11 Фокусник
 
13.01.15
09:36
(9) Мне на ум приходит другая аналогия: "чисто не там где убирают, а там где не мусорят" ;)
12 Serg_1960
 
13.01.15
09:48
Вопрос на тему "А если подумать?": Когда в форме документа заполняются значения ДокументОбъект, ЭтотОбъект, ЭтаФорма?

Успехов в изучении функционала платформы :)

ЭтаФорма.ДокументОбъект = Документы[ЭтотОбъект.Метаданные().Имя].СоздатьДокумент();
ЭтаФорма.Обновить();
ЭтаФорма.Модифицированность = Ложь;
13 hhhh
 
13.01.15
10:04
(12) а с какого боку здесь Модицицированность()  ??
14 vde69
 
13.01.15
10:09
Функция Модицицированность()  
  Возврат не Объект.Версия = Ссылка.Версия;
КонецФункции
15 varyag
 
13.01.15
10:18
(7) Решить то я уже решил... Там реквизиты менялись. Меня просто заинтересовал сам факт. Что этот метод возвращает для формы значение Истина, причем в синтакс-помощнике не документирован данный момент - что вообще у формы есть такой метод. Соответственно я хотел решить все просто установкой свойства в значение Истина.
16 vde69
 
13.01.15
10:20
(15) свойство Модицицированность определяет необходимость системного запроса на сохранение перед закрытием...


функция проверяет версию обьекта...
17 varyag
 
13.01.15
10:22
(16) Но почему ПолучитьОбъект().Модифицированность() Не Равно ПолучитьФорму().Модифицированность()  ?
18 varyag
 
13.01.15
10:23
и как тут понимать вообще что такое Форма? Для Формы вообще не описано такого метода
19 vde69
 
13.01.15
10:26
ПолучитьФорму().Модифицированность()  

вернет Истина если есть хоть одно програмное изменение реквитов/свойств. тоесть к обьекту это вообще не относится никак....

это примерно как вопрос:

почему ПолучитьОбъект() не равен ПолучитьФорму()
20 GROOVY
 
13.01.15
10:37
(18) У формы есть только свойство "Модифицированность", методы только у объектов и наборов записей.
21 Defender aka LINN
 
13.01.15
11:08
(17) "Падает по исключению" все же несколько не "не равно", не находишь?
22 varyag
 
14.01.15
04:49
(21) Ничего не падает. Смотри (19)
(19) , (20)  Скажите что я получаю методом ПолучитьФорму() ?
цитирую СП :

Возвращаемое значение:

Тип: Форма.

для ДокументаОбъекта:
Описание:

Получает форму документа, которая содержит данный ОБЪЕКТ встроенного языка.

Получает форму документа.

ДокументСсылки:
Описание:

Получает форму документа

ДокументМенеджера:
Описание:

Получает форму документа. Если получаемая форма - форма для редактирования документа, то будет получена форма нового документа.

У меня ПолучитьФорму() для ссылки

Но получается что форма все же содержит объект? раз для неё отрабатывает Метод Модифицированность().. Или как? Ведь у формы такого метода нет. Но и для объекта этот метод возвращает другое значение. Изменение реквизитов было, например Организация = Объект.Организация. (Это не я писал, я просто исправляю)

Хочу просто понять схему
23 Defender aka LINN
 
14.01.15
07:47
Потому что
ПолучитьФорму().Модифицированность() = ПолучитьФорму().Объект.Модифицированность()
24 varyag
 
14.01.15
08:34
(23) хм.. А почему ПолучитьФорму().Модифицированность() <> ПолучитьОбъект().Модифицированность() ?

Что проверяется в одном и в другом случае?
25 Defender aka LINN
 
14.01.15
08:56
(24) Потому что, ять, это ДВА РАЗНЫХ ОБЪЕКТА
26 varyag
 
14.01.15
09:13
(25) можно подробней?
1й - объект документ?
2й - объект форма чтоли?

Не нервничайте)
27 Локи-13
 
14.01.15
09:22
(26) документ - это строка БД
ПолучитьФорму().Модифицированность() - 1 копия объекта
ПолучитьОбъект().Модифицированность() - 2 копия объекта
28 varyag
 
14.01.15
09:43
(27) примерно понятно. Нужно быть осторожным при выборе способа проверки модифицированости
29 Локи-13
 
14.01.15
09:47
(28)
по итогу:
1 случай - модифицированность новой копии объекта
2 случай - модифицированность копии объекта для которой открыта форма
3 случай - модифицированность самой формы (ставится если меняется реквизит, меняющий данные)

нужно понимать, модифицированность чего проверяешь.
30 varyag
 
14.01.15
09:58
(29) Спасибо
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший