|
|
Не изменять модифицированность формы при изменении реквизита таблицы формы
PuhUfa, Logovazz, 2S, 1cVandal, RomanYS, Эх-эх-эх, RomaH, rozer76, Kigo_Kigo, Ботаник Гарден Меран, Franchiser, RVN, bolder, Fragster, toypaul, LoneMan, banco, Галахад, dva1c, maxab72, Fedor-1971, Мультук, mikecool, Phace, Климов Сергей, asady, Indian, kittystark, takefive, КонецЕсли, Web00001, Mr_Boogie, paramedic, Garykom, obs191, DemonShinji2, Михаил Козлов, Prog_man, alexela, Затейник, Надо работать, глазковыколупыватель, 2mugik, Ненавижу 1С, CtrlZ, Vstur, Redaktor, Mankubus, Chameleon1980, okmail, Гипервизор, elka302, Кир Пластелинин, ildary, Eiffil123, altaykniga, maxar
| ☑ |
|
0
altaykniga
11.11.26
✎
08:44
|
Доброго времени суток, уважаемые.
На управляемую форму документа выведена его табличная часть. Нужно добавить на форму колонку "Напечатать". Пользователь проставляет галочки в этой колонке на необходимых строках, жмет Кнопку "Напечатать". Обрабатываются только строки, в которых пользователь проставил галочки. При закрытии формы значения из колонки "Напечатать" сохранять не нужно.
Добавил в основной реквизит формы "Объект" в реквизит "Товары"(тип = табличная часть) колонку реквизита "Напечатать" (тип - булево). Вывел эту колонку на форму.
В пользовательском режиме при изменении значения в колонке "Напечатать" модифицированность формы меняется в Истина. Как этого избежать?
Пытался использовать события таблицы "Товары" на форме:
-перед началом изменения (сохранял значение модифицированности формы в созданный реквизит формы)
-при изменении (брать значение модифицированности формы из сохраненного значения в событии "перед началом изменения")
Но на этапе "при изменении" форма еще не видит, что она была модифицирована. В итоге при изменении значения в колонке "Напечатать" форма думает, что она модифицирована.
Добавлять в метаданные новый реквизит табличной части не хотелось бы, рассчитываю обойтись реквизитом, создаваемым непосредственно при создании формы документа
Прошу подсказать, как этого добиться. Заранее благодарю за помощь
|
|
|
1
Eiffil123
11.11.26
✎
08:57
|
(0) Добавлять в метаданные новый реквизит табличной части не хотелось бы, рассчитываю обойтись реквизитом, создаваемым непосредственно при создании формы документа
это не помогло бы.
Сделайте доп.обработку, в которой будет повторена ТЧ из документа. Там пользователь будет галки ставить и печатать из нее. Вызов обработки - по кнопке из документа.
|
|
|
2
maxab72
11.11.26
✎
09:03
|
если сотрудник не должен более ничего менять в ТЧ документа, то можно заменить ее на таблицу из запроса к документу, и обрабатывать ее.
|
|
|
3
Chameleon1980
11.11.26
✎
09:22
|
запоминай "перед началом" текущее значение текущего реквизита формы (ЭтотОбъект.ТекущийЭлемент) будь то реквизит формы, тч и да хоть чего. после изменения сравнивай и по результату выставляй модифицированность. пардон. тебе наоборот. читай (4).
|
|
|
4
Chameleon1980
11.11.26
✎
09:22
|
Запоминай модифицированность перед началом редактирования своего реквизита - выставляй после - в то, что запомнил.
Вроде, все верно описано в 0 - не вчитывался, правда.
|
|
|
5
Phace
11.11.26
✎
09:55
|
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если Элемент.ТекущийЭлемент.Имя = "ТоварыНапечатать" Тогда
Модифицированность = ложь;
КонецЕсли;
КонецПроцедуры // ТоварыПриОкончанииРедактирования()
|
|
|
6
PuhUfa
11.11.26
✎
09:52
|
Сделать колонку "напечатать" только просмотр. Обрабатывать клик по ней и программно снимать/устанавливать галку.
|
|
|
7
LoneMan
11.11.26
✎
09:55
|
(5) Не убедительно
Похоже, нет подходящего события. Либо модифицированность Ложь на выходе, либо не знаешь, может там и другие ячейки были изменены
|
|
|
8
LoneMan
11.11.26
✎
09:58
|
+(7) Да что там ячейки. Цельный документ был поменян
(6) Чотко.
|
|
|
9
Phace
11.11.26
✎
10:10
|
(7) справедливое замечание, добавляем условие:
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если НЕ Модифицированность И Элемент.ТекущийЭлемент.Имя = "ТоварыНапечатать" Тогда
Модифицированность = ложь;
КонецЕсли;
КонецПроцедуры // ТоварыПриОкончанииРедактирования()
|
|
|
11
LoneMan
11.11.26
✎
10:13
|
(9) В любом случае на входе Модифицированность же Истина
Я тут вон что придумал
&НаКлиенте
Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
Если Элемент.ТекущийЭлемент.Имя = "ТоварыРеквизит1" И Не ЭтотОбъект.Модифицированность Тогда
ТекДанные = Элементы.Товары.ТекущиеДанные;
ТекДанные.Реквизит1 = Не ТекДанные.Реквизит1;
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
А вообще имхо, ответ на вопрос это (6)
Ну и понятно, что по-правильному наверно своя форма нужна
|
|
|
12
Phace
11.11.26
✎
10:23
|
(11) // В любом случае на входе Модифицированность же Истина
Честно говоря, я не проверял. Если так, то необходимо добавить реквизит на форму "МояМодифицированность" типа булево, в событии перед началом редактирования табличной если Модифицированность = истина, то устанавливаем МояМодифицированность = истина, затем в ПриОкончанииРедактирования проверять уже его. Ну до этого сам автор топика, думаю, додумался бы уже.
|
|
|
13
bolder
11.11.26
✎
10:41
|
(0) Только расширение.Только хардкор.Своя обработка.
|
|