Глюк 1С 7.7 - цикл вызова ввода строки. помогите. #141637


#0 by Dorian
Итак ситуация. Для заполнения строк документа используется дополнительная форма, которая вызывается модально при начале редактирования строки документа. Дополнительная форма является неким "калькулятором", в нем задаются некоторые расчетные данные на основании которых форма делает расчеты, а при ее закрытии результаты расчетов прописываются в строке документа, из которой она была вызвана, более детально углублятся не буду, потому как проблема не здесь.Дело в том что вызов этой доп.формы происходит автоматически как только пользователь пытается начать редакцию или ввод новой строки документа.вызов формы происходит в процедуре ПриНачалеВыбораЗначения. Это сделано так потому что форма приминима не для всех случаев, в с троке для этого есть отдельная колонка, где прописывается флаг использования дополнительной формы, грубя говоря: если в ней прописанио "1", то форма используеся. Это поле текстовое с запретом на редактирование и имеет кнопку вызова . Поэтому если у строки признак не стоит = "1", то при начале ее редактирования форма не появится, но если нам все таки надо ее применить к этой строке, то нажимается кнопка в поле с признаком, что в свою очередь обрабатывается в процедуру ПРиНачалеВыбораЗначения, где стоит обычное условие: "Если вызывается это поле, то открываем модально доп.фому и передаем ее параметры строки". Когда форма закрывается, проверем если выходные параметры (грубо: были ли сделана расчеты с помощью формы), тогда ставим признак "1", и все следующие попытки редактирования строки документа сразу начинаются с открытия доп.формы.Проблема сдесь в следующем. Редактирование каждой новой строки происходит с открытия этой доп.формы. Если пользователю она не нужна то он может ее просто закрыть без сохранения, тогда новая строка не будет добавлена, либо сохранить ее пустой (без расчетов), тогда форма закроется и пользователь просто сможет работать со строкой документа (признак <> "1"), либо может ее заполнить и сохранить(признак = "1"). Так вот когда пользователь добавляет первую строчку, после чего он решает закрыть форму без сохранения, то в документе должна остаться пустая табличная часть. Дело в том что при попадании фокуса в пустую таблицу происходит автоматическое добавление строки, а она нам не нужна (пользователь не сохранил форму). Для этого я увожу фокус формы на реквизит шапки документа (Активизировать).Вот немного кода:КонецПроцедуры//ПриВводеСтрокиТак вот когда вызов этой процедуры происходит не по нажатию insert, а нажатие Tab, то происходит цикл выхова этой процедуры. т.е. пользователь щелкал TAb, пока не дощелкал до таблицы, что вызвало ввод новой строки, что вызывает открытие формы. Пользователь ее закрывает без сохранения, расчитывая что новая строка не будет добавлена, но 1С по каким то непонятным мне причинам повторяет вызов процедуры ПриВводеСтроки. Так происходит ровно четыре раза. После четвертого отказа сохранять форму, вызов процедуры прекращается.откуда этот цикл я немогу понять. но проблема сдезь в фокусах. при отказе сохранять форму, я увожу фокус шапку, но этого не происхоит, он по прежднему остается в строке, а по скольку строки нет, то 1С инициализирует ее ввод, что вызывает вызов процедуры ПриВводеСтроки.Как увести фокс, чтоб он наверняка ушел из колонки документа.
#1 by banda
ну забабахал... даже читать влом...
#2 by Старче
Ниасилил.
#3 by Dorian
Старался покороче и попонятней, чтоб в одном сообщении как можно большим будущих вопросов пресечь.
#4 by VZ
И нафига так? В форму надо передавать строку, например, в виде СпискаЗначений. В случае новой строки, например, все элементы списка пустые (или как-то шаблонно заполнены). По окончанию работы форма передает взад опять СписокЗначений, но среди них есть элемент, рассказывающий, чем кончилось дело, когда юзер развлекался с модальной формой. Вот от этого элемента-ключа и принимается решение: всавить строку, не вставить (если ее не было), изменить текущую, не изменять...
#5 by Dorian
UP
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям