Как определить что текущая строка только-что введена? #669776


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

В этой группе 1С