|
Как определить что текущая строка только-что введена? | ☑ | ||
---|---|---|---|---|
0
Молодой 1Снег
19.06.13
✎
17:17
|
8.2 обычные формы.
На форме документа есть табличное поле, привязанное к табличной части. Как программно определить, что текущая редактируемая строка в которой находится курсор только-что введена по кнопке Ins или нажатием зеленого плюса? |
|||
1
Молодой 1Снег
19.06.13
✎
17:20
|
Если я зайду в редактирование существующей строки и нажму Esc, то завершится её редактирование без сохранение изменений. А если я нажму Esc в только-что введенной строке, то она полностью удалится. Значит с точки зрения платформы разница между такими строками есть.
Как это отследить программно? |
|||
2
mikecool
19.06.13
✎
17:21
|
передначаломдобавления
|
|||
3
Lama12
19.06.13
✎
17:22
|
В момент когда ее только что ввели.
|
|||
4
Молодой 1Снег
19.06.13
✎
17:40
|
(2) Создал переменную модуля, назвал её НоваяСтрока. В процедуре ПередНачаломДобавления пишу в неё Истина, а в ПриОкончанииРедактирования Ложь. И в процессе прыгания по ячейкам смотрю на её.
Вроде всё работает. Спасибо за пинок в нужном направлении! |
|||
5
drcrasher
19.06.13
✎
17:43
|
продам СП дорого!
ПередОкончаниемРедактирования (BeforeEditEnd) Синтаксис: ПередОкончаниемРедактирования(<НоваяСтрока>, <ОтменаРедактирования>, <Отказ>) Параметры: <НоваяСтрока> Тип: Булево. Установлен в Истина, если строка была добавлена или скопирована. <ОтменаРедактирования> Тип: Булево. Истина, если произошла отмена редактирования. Значение по умолчанию: Ложь <Отказ> Тип: Булево. Признак отказа от выполнения действия. Значение по умолчанию: Ложь Описание: Вызывается перед окончанием редактирования строки. |
|||
6
Молодой 1Снег
19.06.13
✎
17:48
|
(5) Мне нужно в процедуре ПриАктивизацииЯчейки узнать - я нахожусь в редактировании новой строки или уже во введенной ранее. Так что ПередОкончаниемРедактирования мне не подойдет.
|
|||
7
Infsams654
19.06.13
✎
18:01
|
(6) ЗАЧЕМ "нужно в процедуре ПриАктивизацииЯчейки" ? . Сказали же уже в (2)
|
|||
8
Infsams654
19.06.13
✎
18:08
|
(6) а, понял, что хочешь - ПриНачал
еРедактирования |
|||
9
Молодой 1Снег
19.06.13
✎
18:08
|
(7) В процедуре ПриАктивизацииЯчейки у меня обрабатывается некоторый код. Он должен выполнять разные действия в зависимости от того новая это строка или уже введенная.
Поэтому я применил механизм (4) с подсказки (2). Других вариантов я не вижу. |
|||
10
Infsams654
19.06.13
✎
18:15
|
(7) не надо при активизации ячейки. Надо смотреть
ПриНачалеРедактирования Если НоваяСтрока Тогда |
|||
11
Молодой 1Снег
19.06.13
✎
18:17
|
(10) Я просто недостаточно подробно сформулировал задачу. Мне нужно ИМЕННО В процедуре ПриАктивизацииЯчейки узнать нахожусь ли я в новой строке.
|
|||
12
Sj
19.06.13
✎
18:18
|
можно попробовать добавить вычисляемый столбец ЭтоНоваяСтрока. При начале редактирования писать туда истина. при окончании ложь.
|
|||
13
Infsams654
19.06.13
✎
18:23
|
(11) так по ПриНачалеРедактирования по Если НоваяСтрока и устанавливай флажок новой строки. Событие активизации ячейки (строки) возникает позже, если не ошибаюсь
|
|||
14
Фокусник
19.06.13
✎
18:37
|
(11) "Я просто недостаточно подробно сформулировал задачу."
+ "Мне нужно ИМЕННО В процедуре ПриАктивизацииЯчейки узнать нахожусь ли я в новой строке." Это не формулировка задачи, это формулировка хода РЕШЕНИЯ. Задачу исходную озвучь... :) |
|||
15
Молодой 1Снег
19.06.13
✎
18:56
|
(14) Ну если хотите саму исходную задачу то вот.
Заказчик требует, чтобы определенные сотрудники в определенном документе не могли редактировать введенные ими же строки. То есть принцип такой: сотрудник добавляет строку заполняет в ней все необходимые колонки и как только он закончил редактирование этой строки он больше не может в ней ничего изменить и не может удалить эту строку. Несохраненный документ нельзя распечатывать. Дело осложняется тем, что одну из колонок этого документа сотрудники должны иметь право редактировать. Я реализовал так: в процедуре ПередНачаломИзменения проверяю роль сотрудника и название текущей редактируемой колонки. Если это не та колонка которую можно редактировать и сотр этот тот кому нельзя редактировать строки, то даю отказ. Но всплыл косяк: сотрудник может зайти в редактирование строки через колонку которую можно редактировать, и внести изменения в колонки которые нельзя редактировать. Тогда я в процедуре ПриАктивизацииЯчейки добавил проверку, что перешли в запрещенную колонку, проверку прав и проверку того, что это не новая строка. Если все условия срабатывают, то я вызываю Элемент.ЗакончитьРедактированиеСтроки(Ложь). Требования заказчика выполнены. Если отбросить вопрос о том, вменяема ли сама задача, то есть ли иные варианты её решения? |
|||
16
Infsams654
19.06.13
✎
19:02
|
Это дурдом или как?
"То есть принцип такой: сотрудник добавляет строку заполняет в ней все необходимые колонки и как только он закончил редактирование этой строки он больше не может в ней ничего изменить и не может удалить эту строку." |
|||
17
Infsams654
19.06.13
✎
19:05
|
(15) я серьезно спрашиваю, это тестирование сотрудника на правильность с 1-го раза ввода информации ?
|
|||
18
Молодой 1Снег
19.06.13
✎
19:40
|
(17) Заказчик таким образом пытается добиться точного соответствия документов в печатном и электронном виде.
Глупо конечно, но таковы его требования. |
|||
19
Молодой 1Снег
19.06.13
✎
19:40
|
(15) Так что по поводу моего решения из (15)? Есть более оптимальные варианты?
|
|||
20
kosts
19.06.13
✎
20:02
|
(15) Если не ошибаюсь, то в обычных формах в процедуре при выводе строки можно установить ТолькоПросмотр для отдельных ячеек.
|
|||
21
PR
19.06.13
✎
20:06
|
В пятницу такие ветки надо заводить.
|
|||
22
kosts
19.06.13
✎
20:08
|
(18) >пытается добиться точного соответствия документов в печатном и электронном виде.
Жесткий способ. Может можно более гуманный способ сделать... Например разрешит печать только проведенного, но запретить самому сотруднику перепроводить и делать отмену проведения. Т.е. пока не провели можно всяко его редактировать... |
|||
23
kosts
19.06.13
✎
20:13
|
ОформлениеСтроки.Ячейки.НапомнитьПоЗавершении.ТолькоПросмотр = Истина;
|
|||
24
Infsams654
19.06.13
✎
20:18
|
(22) повторяю - дурдом. "Заказчик таким образом пытается добиться точного соответствия документов в печатном и электронном виде" - заказчик сможет, если захочет ...
Кстати, это вы такие уникальные? Отнюдь. |
|||
25
Зойч
19.06.13
✎
20:25
|
(15) 1с правильно пошла в этом направлении. Запрет печати непроведенных. а провел, все поезд ушел
|
|||
26
kosts
19.06.13
✎
20:25
|
(24) Это к ТС, я тут ни при чем.
Кто платит тот и заказывают музыку. Но из-за драконовских мер может страдать бизнес. Когда из-за косяка в строке придется перенабирать документ, при этом возможно потеряв другого клиента. Думаю заказчик передумает. |
|||
27
Infsams654
19.06.13
✎
20:35
|
(26) - согласен. Но только после проведения документа - поезд ушел.
Но при чем тут изменение (0) в поле проведенного документа ? |
|||
28
Молодой 1Снег
19.06.13
✎
20:45
|
Документ никаких проводок и движений не делает. Следовательно не проводится.
Мы предлагали заказчику более адекватные пути решения. Но у него на все свой сугубо специфический |
|||
29
Молодой 1Снег
19.06.13
✎
20:47
|
(23) Наверно проще было пойти этим путем. Но я не додумался.
|
|||
30
Мимохожий Однако
19.06.13
✎
21:57
|
Вероятно, заказчик бывший программист, т.к. формулирует не только задачу, но и варианты решения. Не дай Бог такого заказчика.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |