![]() |
![]() |
|
Модифицированность() | ☑ | ||
---|---|---|---|---|
0
antoneus
18.06.08
✎
11:05
|
Здравствуйте! Расскажите, что может влиять на модифицированность формы? Дело в том, что в сильно изнасилованной конфе (буха) записанный и проведённый документ (расходная) при открытии постоянно становится модифицированным. В ПриОткрытии() никакие реквизиты дока не затрагиваются, естессно.
|
|||
1
чувак
18.06.08
✎
11:06
|
А ВводНового() ?
|
|||
2
Kondarat
18.06.08
✎
11:07
|
>>В ПриОткрытии() никакие реквизиты дока не затрагиваются, естессно.
Чет с трудом верится. |
|||
3
чувак
18.06.08
✎
11:07
|
Еще в самом теле формы за процедурами?
|
|||
4
Нуф-Нуф
18.06.08
✎
11:07
|
смотри при открытии, а еще раньше, в самом низу, до всех процедур
|
|||
5
Warlock
18.06.08
✎
11:08
|
Еще есть формулы на форме и код под всеми процедурами
|
|||
6
Ёпрст
гуру
18.06.08
✎
11:09
|
(0) Иши в формулах элементов диалога вызовы функций ... они и модифицируют...
Либо открывай форму ТолькоПросмотр(1) всегда..:) |
|||
7
antoneus
18.06.08
✎
11:19
|
В теле ничего такого нет. Ловлю отладчиком - на выходе из ПриОткрытии() Модифицированность - 0. Дальше бегит в функции элементов диалога - на входе Модифицированность - 1. Пока забодал Формексом в ПослеОткрытия. Значит, ТолькоПросмотр(1)?
|
|||
8
ДенисЧ
18.06.08
✎
11:20
|
(7) неправильно делаешь. Комменти весь код ПриОткрытии() и открывай по строке, по документ не начнет изменяться
|
|||
9
Ёпрст
гуру
18.06.08
✎
11:22
|
(7) Ключевая фраза - "бегает в функциях .. " вот в них то и меняется модифицированность... :)
Можешь её принудительно сбросить - записать() в ложной транзакции, например.. Тебе проще - у тя есть формекс, там СбросМодифицированности() есть |
|||
10
antoneus
18.06.08
✎
11:27
|
Ну, закомментил. Ну, не изменяется. а работать как? Там и УправлениеСлоями и куча условий - кому из юзеров что можно.
|
|||
11
antoneus
18.06.08
✎
11:28
|
дык сбросом модифицированности и победил. но хотелось бы докопаться...
|
|||
12
ДенисЧ
18.06.08
✎
11:29
|
(10) повторяю. ОТкрывай по строке - так найдёшь, которая из них меняет.
|
|||
13
antoneus
18.06.08
✎
11:30
|
Ёпрст, я поставил точки останова ВЕЗДЕ. после ПриОткрытии скачет в функцию элемента диалога - и на входе уже 1.
|
|||
14
Ёпрст
гуру
18.06.08
✎
11:30
|
(11) Тебе вроде как всё уже ответили ... Модифицированность ставится в функциях твоих... Значение переключателю ставишь, галочки там,ТЗ на форме заполняешь еще чего и всё - форма можифицированна.
|
|||
15
ДенисЧ
18.06.08
✎
11:31
|
(13) павтаряю. В отладчике ты изменение Модифицированности() не отловишь.
|
|||
16
antoneus
18.06.08
✎
11:36
|
(15) это я понял, когда впихнул в приотрытии наглое изменение реквизита.
(14) то есть, если я ставлю списку значений на форме текущую строку - то пипец? |
|||
17
Ёпрст
гуру
18.06.08
✎
11:38
|
(16) яя, натюрлих :)
|
|||
18
antoneus
18.06.08
✎
11:43
|
о как. Спасибо, Ёпрст, в который раз выручаешь. Формекс рулит :)
|
|||
19
Chieftain
18.06.08
✎
12:10
|
(17) Данунах
|
|||
20
antoneus
18.06.08
✎
12:23
|
(17) ну да. проверил на типовом "Оказание услуг"
|
|||
21
antoneus
18.06.08
✎
12:24
|
не то.
|
|||
22
Ёпрст
гуру
18.06.08
✎
12:28
|
(19) ? Не забудь, что помимо установки текущего значения, тебе еще сам список на форме заполнить надобно :))
|
|||
23
Chieftain
18.06.08
✎
12:32
|
(22) Что делаю не так? Модуль формы элемента справочника:
Процедура ПриОткрытии() Флажок=1; Список.ТекущаяСтрока(2); Комбо.ТекущаяСтрока(3); КонецПроцедуры // ПриОткрытии Список.ДобавитьЗначение(1); Список.ДобавитьЗначение(2); Список.ДобавитьЗначение(3); Список.ДобавитьЗначение(4); Комбо.ДобавитьЗначение(1); Комбо.ДобавитьЗначение(2); Комбо.ДобавитьЗначение(3); Комбо.ДобавитьЗначение(4); |
|||
24
Chieftain
18.06.08
✎
12:33
|
+(23) модифицированность не ставится
Список - СписокЗначений на форме Комбо - Полу со списком Флажок - Флажок (не реквизит) |
|||
25
antoneus
18.06.08
✎
12:34
|
(22) В типовой заполняется. у меня заполняется. В типовой устанавливается текущая строка (тащут из реквизита). У меня устанавливается текущая строка (тащу из реквизита). В типовой - не модифицировано.
|
|||
26
Cap_1977
18.06.08
✎
12:39
|
(25) У тебя при открытии модифицируется какой то реквизит документа - ищи.
|
|||
27
Ёпрст
гуру
18.06.08
✎
12:39
|
(23,25) Может быть, соврал значит :)
Видать еще где-то значения реквизитов меняешь. Форма.Обновить(1) нет случаем в коде ? |
|||
28
Chieftain
18.06.08
✎
12:44
|
(27) Вот тут ты прав)) Либо "реквизит=значение", либо "Обновить(1)"
|
|||
29
Ёпрст
гуру
18.06.08
✎
12:48
|
||||
30
AlexWolf
18.06.08
✎
12:49
|
+(28) так же замечательно ставит модифицированность метод Реквизит.ВидыДляВыбора("");
|
|||
31
antoneus
18.06.08
✎
13:05
|
(26-30) в отладчике прополз всю приотрытии и реквизиты дока НЕ МЕНЯЮТСЯ. ни один из предложенных вариантов тоже не присутствует. треплют реквизит формы - флажок, правда.
|
|||
32
antoneus
18.06.08
✎
13:10
|
закомментил - та же хня.
|
|||
33
Ёпрст
гуру
18.06.08
✎
13:13
|
(32) Функции в текстовых реквизитах гляди ...
|
|||
34
antoneus
18.06.08
✎
13:23
|
(33) см. (13)
|
|||
35
Ёпрст
гуру
18.06.08
✎
13:23
|
(34) Ты 29 глядел ?
|
|||
36
antoneus
18.06.08
✎
13:28
|
Кстати, в процессе (тк я типа прогер), Форма.ТолькоПросмотр() = 1
|
|||
37
Ёпрст
гуру
18.06.08
✎
13:32
|
(36) Может того, код свой покажешь ?
|
|||
38
antoneus
18.06.08
✎
13:33
|
(35) ох, мать. Закладки?
|
|||
39
AlexWolf
18.06.08
✎
13:41
|
(38) переключение закладок не устанавливает флаг модифицированности....
|
|||
40
antoneus
18.06.08
✎
13:42
|
(37) та код элементарный.
ПриЗаписиПерепроводить(?(глПользователь.Наименование = "Петя", 0, 1)); глПроверкаРазрешенияРедактирования(Контекст); Доступность = ?((ИмяПользователя() = "Маша"), 1, 0); Если Проведен() = 0 Тогда ДатаДок = ТекущаяДата(); Иначе НачальныйВидОтгрузки = ВидОтгрузки; КонецЕсли; Если ИмяПользователя() = "Коля" Тогда Если (глПользователь <> Автор) Тогда Форма.ТолькоПросмотр(?(НазваниеНабораПрав() = "Администратор", 0, 1)); КонецЕсли; КонецЕсли; Если ФлагЗаявки = 1 Тогда Если ДатаДок < РабочаяДата() Тогда Форма.ТолькоПросмотр(1); ИначеЕсли ДатаДок = РабочаяДата() Тогда Если (НазваниеНабораПрав() = "Администратор") или (НазваниеНабораПрав() = "Бухгалтер") ИЛИ (НазваниеНабораПрав() = "Кладовщик") Тогда Форма.ТолькоПросмотр(0); КонецЕсли; КонецЕсли; КонецЕсли; Если Автор.Наименование = "Коля" Тогда Если (Автор <> глПользователь) и (глПользователь.Наименование <> "Оля") и (глПользователь.Наименование <> "Света") и (глПользователь.Наименование <> "Рита") Тогда Форма.ТолькоПросмотр(?(НазваниеНабораПрав() <> "Администратор", 0, 1)); КонецЕсли; КонецЕсли; Если (ВидОтгрузки <> 1) и (ВидОтгрузки <> 2) Тогда Если Проведен() = 1 Тогда Если глПользователь.Наименование <> "Маша" Тогда Форма.ТолькоПросмотр(1); КонецЕсли; КонецЕсли; КонецЕсли; Активизировать("НомерДок"); Форма.Товар.ВыполнятьФормулуТолькоПриИзменении(1); Форма.Цена.ВыполнятьФормулуТолькоПриИзменении(1); Форма.Сумма.ВыполнятьФормулуТолькоПриИзменении(1); Форма.НДС.ВыполнятьФормулуТолькоПриИзменении(1); Форма.НП.ВыполнятьФормулуТолькоПриИзменении(1); ВариантЗачетаАванса.ДобавитьЗначение(1, "не зачитывать"); ВариантЗачетаАванса.ДобавитьЗначение(2, "только по договору"); ВариантЗачетаАванса.ДобавитьЗначение(0, "без указания договора"); ВариантЗачетаАванса.ТекущаяСтрока(ВариантЗачетаАванса.НайтиЗначение(ЗачитыватьАванс)); Если Константа.ИспользоватьТипыЦен = Нет Тогда Форма.ПодписьТипаЦен.Видимость(0); Форма.ТипЦен.Видимость(0); Иначе Форма.ПодписьТипаЦен.Видимость(1); Форма.ТипЦен.Видимость(1); КонецЕсли; НачальнаяДатаДокумента = ДатаДок; УправлениеКурсом(0); Форма.НДС.Видимость(глПризнакУчетаНалога(Контекст, "НДС")); Форма.НП.Видимость(глПризнакУчетаНалога(Контекст, "НП")); СписокВидовОтгрузки.ДобавитьЗначение(1, "1. первый способ"); СписокВидовОтгрузки.ДобавитьЗначение(2, "2. второй способ"); СписокВидовОтгрузки.ТекущаяСтрока(ВидОтгрузки); УправлениеВидимостьюРеквизитов(); Если Выбран() = 0 Тогда ПриВыбореВидовОтгрузки(); КонецЕсли; // Управление видимостью реквизитов "Грузополучатель" и "Грузотправитель". Если ПустоеЗначение(Грузоотправитель) = 1 Тогда ВариантОтправки = 1; КонецЕсли; УправлениеВидимостьюГрузоотправителя(); Если ПустоеЗначение(Грузополучатель) = 1 Тогда ВариантПолучения = 1; КонецЕсли; УправлениеВидимостьюГрузополучателя(); // Заполним таблицу для выбора печатной формы НомерТекущейФормы = глУстановкаКнопкиПечать(Контекст, "Документ." + Вид(), ТаблицаПечФорм); Если глПользователь.Наименование = "Петя" Тогда Если (ВидОтгрузки = 3) ИЛИ (ВидОтгрузки = 4) Тогда РеквКолвоКоробов = Итог("КоличествоМест"); Форма.ИспользоватьСлой("Транспорт, Кнопки"); Форма.ТолькоПросмотр(0); Форма.КнопкаОК.Доступность(0); Форма.ДатаНепринятия.Доступность(0); Форма.ДатаПовторнойДоставки.Доступность(0); Иначе СтатусВозврата(0); Возврат; КонецЕсли; Иначе УправлениеЗакладками(); Форма.ИспользоватьСлой("Основной, Кнопки"); КонецЕсли; Если Контрагент.Выбран() = 1 Тогда РеквАдресДоставки = Контрагент.АдресДоставки; КонецЕсли; Если Форма.ТолькоПросмотр() = 1 Тогда Форма.КнопкаЗаписать.Доступность(0); Форма.КнопкаОК.Доступность(0); Форма.КнопкаПодбор.Доступность(0); Форма.КнопкаОчистить.Доступность(0); Форма.КнопкаВыбораКомитента.Доступность(0); Форма.КнопкаВыбораДоговораКомиссии.Доступность(0); КонтекстФормыПодбора = 0; КонецЕсли; УправлениеДоступностьюРеквизитов(); |
|||
41
Chieftain
18.06.08
✎
13:45
|
(40) Структуру документа тогда дай чтоль
|
|||
42
ДенисЧ
18.06.08
✎
13:46
|
Если Проведен() = 0 Тогда
ДатаДок = ТекущаяДата(); Иначе НачальныйВидОтгрузки = ВидОтгрузки; КонецЕсли; ЕСли это не реквизиты документа, то я римский Папа |
|||
43
Chieftain
18.06.08
✎
13:49
|
(42) В сабже проведенный документ, а "НачальныйВидОтгрузки" - хз что это такое
|
|||
44
Ёпрст
гуру
18.06.08
✎
13:49
|
А это что ? Вот этот кусок только приводит к модифицированности, даже если
РеквАдресДоставки - просто реквизит формы, а не документа. Если Контрагент.Выбран() = 1 Тогда РеквАдресДоставки = Контрагент.АдресДоставки; КонецЕсли; |
|||
45
antoneus
18.06.08
✎
13:50
|
В структуре дофига реквизитов шапки и немножко меньше табличной части. Оно надо?
|
|||
46
Ёпрст
гуру
18.06.08
✎
13:51
|
(45) не надо, и так видно, что Модифицированность у тебя возникает сплошь и рядом :))
|
|||
47
antoneus
18.06.08
✎
13:52
|
(42) Док изменяется и если Проведен() = 1.
Все, что с префиксом Рекв - текстовые реквизиты формы. |
|||
48
Chieftain
18.06.08
✎
13:53
|
(44) Опять не прав. Группа - реквизит формы. Никакой модифицированности
Процедура ПриОткрытии() Группа = Родитель; КонецПроцедуры // ПриОткрытии |
|||
49
antoneus
18.06.08
✎
13:53
|
(43) НачальныйВидОтгрузки - переменная модуля формы. Ещё вопросы?
|
|||
50
Chieftain
18.06.08
✎
13:55
|
(49)Что есть:
ВариантОтправки РеквКолвоКоробов РеквАдресДоставки |
|||
51
antoneus
18.06.08
✎
13:57
|
(50) ВариантОтправки - флажок на форме.
РеквКолвоКоробов - числовое поле на форме РеквАдресДоставки - текстовое поле на форме |
|||
52
Ёпрст
гуру
18.06.08
✎
13:58
|
(48) Возможно..:)
Но если есть присвоение в функции в текстовом реквизите - привет :) |
|||
53
Ёпрст
гуру
18.06.08
✎
13:59
|
+52 Всё равно видать реквизиты дёргает :)
Или Закладки виноваты. |
|||
54
Chieftain
18.06.08
✎
14:03
|
(53) Да полюбасу где-то изменяет реквизиты
|
|||
55
Колхозник-внедренец
18.06.08
✎
14:22
|
Вместо
РеквКолвоКоробов = Итог("КоличествоМест"); на будущее делай так: Если РеквКолвоКоробов <> Итог("КоличествоМест") Тогда РеквКолвоКоробов = Итог("КоличествоМест"); КонецЕсли; и остальные из (50) по аналогии |
|||
56
antoneus
18.06.08
✎
14:23
|
Процедура глПроверкаРазрешенияРедактирования(Конт) Экспорт
Если Конт.Выбран() = 1 Тогда Если Конт.ДатаДок <= Константа.ДатаЗапретаРедактирования Тогда Конт.Форма.ТолькоПросмотр(1) КонецЕсли; Если Конт.Вид() = "РасходнаяНакладная" Тогда Если Конт.Проведен() = 1 Тогда Если Конт.ДатаДок < РабочаяДата() Тогда Если НазваниеНабораПрав() <> "Администратор" Тогда Конт.Форма.ТолькоПросмотр(1); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры Процедура УправлениеВидимостьюРеквизитов() Видимость = ?((ВидОтгрузки = 1) ИЛИ (ВидОтгрузки = 2) , 0, 1); Форма.Сумма.Видимость(Видимость); Форма.НДС.Видимость(Видимость); Форма.ГТД.Видимость(Видимость); Форма.Всего.Видимость(?(ВидОтгрузки = 1, 0, 1)); Форма.КоличествоМест.Видимость(?(ВидОтгрузки = 2, 1, 0)); Форма.Цена.Видимость(?(ВидОтгрузки = 1, 0, 1)); Форма.ТекстТипаЦен.Видимость(?(ВидОтгрузки = 12, 1, 0)); Форма.ТипЦенПоступления.Видимость(?(ВидОтгрузки = 12, 1, 0)); КонецПроцедуры Процедура УправлениеЗакладками() Если НазваниеНабораПрав() = "Администратор" Тогда Если ВидОтгрузки > 2 Тогда Форма.ИспользоватьЗакладки(1); Форма.Закладки.ДобавитьЗначение(1, "Товарная часть"); Форма.Закладки.ДобавитьЗначение(2, "Транспортная часть"); Иначе Форма.ИспользоватьЗакладки(0); Форма.ИспользоватьСлой("Основной, Кнопки"); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
57
antoneus
18.06.08
✎
14:27
|
(55) глПользователь.Наименование <> "Петя". а ваще, попробую
|
|||
58
antoneus
18.06.08
✎
14:30
|
(+57) да и это реквизит формы, вообще-то
|
|||
59
Колхозник-внедренец
18.06.08
✎
14:36
|
Чтобы не скакать по процедурам в поисках изменяемого реквизита делай так:
включай в Отладчике "Замер производительности", открывай форму и выключай "Замер". В результате выйдет листинг строчек кода, которые выполнялись. Вот среди них и ищи присвоение значения реквизиту. |
|||
60
antoneus
18.06.08
✎
14:51
|
(59) -> (13, 40, 56)
|
|||
61
antoneus
18.06.08
✎
15:17
|
эх, ладно, сходил за пивом уже. Формекс - так Формекс
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |