#0
by Молодой 1Снег
8.2 обычные формы. На форме документа есть табличное поле, привязанное к табличной части. Как программно определить, что текущая редактируемая строка в которой находится курсор только-что введена по кнопке Ins или нажатием зеленого плюса?
#1
by Молодой 1Снег
Если я зайду в редактирование существующей строки и нажму Esc, то завершится её редактирование без сохранение изменений. А если я нажму Esc в только-что введенной строке, то она полностью удалится. Значит с точки зрения платформы разница между такими строками есть. Как это отследить программно?
#4
by Молодой 1Снег
Создал переменную модуля, назвал её НоваяСтрока. В процедуре ПередНачаломДобавления пишу в неё Истина, а в ПриОкончанииРедактирования Ложь. И в процессе прыгания по ячейкам смотрю на её. Вроде всё работает. Спасибо за пинок в нужном направлении!
#5
by drcrasher
продам СП дорого! ПередОкончаниемРедактирования (BeforeEditEnd) Синтаксис: ПередОкончаниемРедактирования(<НоваяСтрока>, <ОтменаРедактирования>, <Отказ>) Параметры: <НоваяСтрока> Тип: Булево. Установлен в Истина, если строка была добавлена или скопирована. <ОтменаРедактирования> Тип: Булево. Истина, если произошла отмена редактирования. Значение по умолчанию: Ложь <Отказ> Тип: Булево. Признак отказа от выполнения действия. Значение по умолчанию: Ложь Описание: Вызывается перед окончанием редактирования строки.
#6
by Молодой 1Снег
Мне нужно в процедуре ПриАктивизацииЯчейки узнать - я нахожусь в редактировании новой строки или уже во введенной ранее. Так что ПередОкончаниемРедактирования мне не подойдет.
#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Снег
Заказчик таким образом пытается добиться точного соответствия документов в печатном и электронном виде. Глупо конечно, но таковы его требования.
#20
by kosts
Если не ошибаюсь, то в обычных формах в процедуре при выводе строки можно установить ТолькоПросмотр для отдельных ячеек.
#22
by kosts
>пытается добиться точного соответствия документов в печатном и электронном виде. Жесткий способ. Может можно более гуманный способ сделать... Например разрешит печать только проведенного, но запретить самому сотруднику перепроводить и делать отмену проведения. Т.е. пока не провели можно всяко его редактировать...
#24
by Infsams654
повторяю - дурдом. "Заказчик таким образом пытается добиться точного соответствия документов в печатном и электронном виде" - заказчик сможет, если захочет ... Кстати, это вы такие уникальные? Отнюдь.
#25
by Зойч
1с правильно пошла в этом направлении. Запрет печати непроведенных. а провел, все поезд ушел
#26
by kosts
Это к ТС, я тут ни при чем. Кто платит тот и заказывают музыку. Но из-за драконовских мер может страдать бизнес. Когда из-за косяка в строке придется перенабирать документ, при этом возможно потеряв другого клиента. Думаю заказчик передумает.
#27
by Infsams654
- согласен. Но только после проведения документа - поезд ушел. Но при чем тут изменение в поле проведенного документа ?
#28
by Молодой 1Снег
Документ никаких проводок и движений не делает. Следовательно не проводится. Мы предлагали заказчику более адекватные пути решения. Но у него на все свой сугубо специфический
#30
by МимохожийОднако
Вероятно, заказчик бывший программист, т.к. формулирует не только задачу, но и варианты решения. Не дай Бог такого заказчика.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как в 1С 7.7 определить количество рабочих дней между заданными датами?
- Как определить что за НАСП ключ?
- Как програмно определить Роль и Интерфейс пользователя?
- Возможно ли определить количество пользователей работающих с ИБ в настоя...
- Текущая строка в ТЗ
- Как определить программно определить в какой точке завершился бизнес процесс?
- Определить активна ли текущая форма . Обычное приложение 8.2
В этой группе 1С
- Обмен из УТ в БП
- Событие при смене режима просмотра справочника (иерархия/линейный) - не УИ
- Арифметические операции в условии запроса возможны?
- Ввод начальных остатков Расчеты с поставщиками и подрядчиками (счет 60)
- как добавить колонку в "Настройка списка"
- Запись не верна! Не заполнены оба счета! Изменение документа корр.регистров.
- Запись не верна. Период не может быть пустым!
- УФ Позиционирование при открытии формы выбора справочника с отбором
- УТ 11 Во "Вводе нач.остатков" не видит номенклатуру вообще
- Форматированный документ и толстый клиент
- Контролируемые сделки и lawmonitor
- Слишком много фактических параметров (Активизировать) ?
- Регистр накопления остатки, запрос ОстаткиИОбороты, как работает период ??
- УПП расходы при УСН
- Corel X5: макросы VBA недоступен
- запрет доступа к документу РКО
- 76.АВ НДС по авансам
- СКД КонПериода как сделать на конецДня()
- УПП 8.2 В табеле учета раб.времени часовой не выход вытесняет ночные часы!?
- ЭДО тестовый режим обмена