Имя: Пароль:
1C
1С v8
Доступ к ячейкам табличного поля (обычные формы)
,
0 denco_78
 
01.10.18
20:52
Добрый день.  1С 8.2

Есть форма. На ней табличное поле, берущее данные из табличной части документа. Надо ограничить вводимые цифры некоторыми максимальными значениями, вычисляемыми при открытии формы. Для каждой строки - свое значение.

Для этого я сделал в поле еще один столбец, не связанный с ТЧ.
Он заполняется в обработчике поля "ПриПолученииДанных". С этим я вроде разобрался.

Проблема возникла с обработчиком "ПриИзменении", в котором вводимое значение должно сравниваться с цифрой из того независимого столбца. Не пойму, как добраться до его ячеек. В отладчике видны только ячейки, связанные с ТЧ. Сама колонка видна, но только как оформление. Ячеек нет.
1 hhhh
 
01.10.18
21:56
(0) там нет ничего. это фикция. Данные выводятся на форму и в ту же наносекунду грохаются нахрен. Никаких ячеек для хранения не существует в действительности.
2 denco_78
 
02.10.18
17:40
Да вроде не грохаются. По крайней мере, в таблице видны.

Порылся по форуму. Нашел несколько тем с подобными вопросами, но без нормального решения.

А можно еще как-то осуществить задуманное?
Фактически этот документ, где нужны ограничения получается копированием другого в новый. Вот надо, чтобы в таблице была возможность только уменьшать цифры относительно исходных.
3 Cool_Profi
 
02.10.18
17:44
ПриПолученииДанных:
ОформлениеСтроки.ТвояКолонка.УстановитьТекст(ВычислитьНужноеЗначение());

ПриИзменении:
Если ТвояДругаяКолонка <> вычсислитьНужноеЗначение() Тогда...
4 denco_78
 
02.10.18
17:58
Так не получится.
Открываю форму - таблица уже заполнена скопированными значениями.
ПриПолученииДанных копирую одну колонку в другую (запоминаю).

ПриИзменении надо сравнить введенное значение с исходным, т.е. запомненым.
5 hhhh
 
02.10.18
22:03
(4) не запоминаешь ты. Вот Фома неверующий. После вывода на экран значение стирается.

Поэтому в таблице они видны, а в ПриИзменении не видны.
6 denco_78
 
03.10.18
18:05
Это я примерный алгоритм озвучивал. Что вычислять неоткуда.
А что не получится - уже понял.

В итоге реализовал через 2-е поле с одной колонкой рядом. На мой взгляд изврат, но работает.
7 aka AMIGO
 
03.10.18
18:08
Я-б при открытии документа создавал ТЗ, в ней нужные значения, (т.е старые!) при изменениях - сравнивал с ними.. Но я таки семерочник.
8 denco_78
 
03.10.18
18:19
Форма уже есть. Не моя. Я ее просто дорабатываю, одновременно разбираясь с программированием.
Понадобилось возвраты реализовать малой кровью. Естественно, возврат не может быть больше первоначальной выдачи.
9 sechs
 
03.10.18
18:57
(8) > малой кровью

Ну-ну. Подумай о том, что будет если одну строку удалить, а другую добавить.
10 denco_78
 
03.10.18
20:28
Перечень строк заблокирован. Можно менять только количество в сторону уменьшения.
11 denco_78
 
03.10.18
20:40
Т.е. цифры в столбике "количество".
12 НЕА123
 
04.10.18
08:52
(8)
самое правильное - проверять при проведении.
13 lEvGl
 
гуру
04.10.18
09:05
есть же максимальное/минимальное значение для числовых полей ввода/реквизитов. ПриНачалеРедактирования поставить нужное ограничение. Сам не делал, проверять что то лень.
14 lEvGl
 
гуру
04.10.18
09:13
а, тут в другом вопрос..
а зачем рассчитывать в приполученииданных? если колонка заполняется данными из колонки другого документа зачем тут еще колонка? скопировал данные "один в один" и в событиях типа ПЕРЕД изменением фиксировать старое, потом в событиях типа ПРИ изменении сравнивать с новым. Либо как уже предлагал - ограничение макс. значения для поля ввода.
15 denco_78
 
04.10.18
11:13
(13) С минимальным/максимальным значениями, похоже, та же история, что и с дополнительным столбцом - оформление столбца есть, а в ячейках их нет. С них я и начинал. Либо не разобрался.

(14) Проверять со старым значением при вводе не годится: представим, что изначально в ячейке стояло 20. Пользователь сначала поменял на 5, а потом передумал и захотел поставить 8...
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.