Имя: Пароль:
1C
1С v8
Не изменять модифицированность формы при изменении реквизита таблицы формы
☑
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) Только расширение.Только хардкор.Своя обработка.
Основная теорема систематики: Новые системы плодят новые проблемы.