Имя: Пароль:
1C
1C 7.7
v7: предустановленный реквизит при открытии диалога
0 maestro-72
 
07.12.11
09:36
Имею на форме текстовое поле и поле для выбора элемента справочника, условие такое, если введенная информация найдена в реквизитах справочника то в поле выбора подставляется этот элемент, если не найдена то открывается форма выбора элемента. Как правило если информация не найдена то оператор добавляет новый элемент в справочник, при этом ему приходится вводить информацию из текстового поля и нередко ошибается. Хотел сделать чтобы при открытии диалога инфа из текстового поля уже ставилась в новый элемент справочника. Ничего не получилось. Не знаю как передать информацию. Форма для подбора открывается безо всякого дополнительного кода если информация в справочнике не найдена. Может кто уже использовал такое, поделитесь мыслью...
1 povar
 
07.12.11
09:38
"Хотел сделать чтобы при открытии диалога инфа из текстового поля уже ставилась в новый элемент справочника. Ничего не получилось"
покажи как хотел
2 ДенисЧ
 
07.12.11
09:38
Капитан Очевидность подсказывает, что нужно программно открывать форму подбора с передачей нужных параметров...
3 maestro-72
 
07.12.11
09:49
Да я пробовал программно, всё там здорово, только она не закрывается при достижении и вводе последней колонки вводом. Форму открывать программно нет события которое ее закрывало бы при нажатии в последней колонке ввода. Как то коряво объяснил...
4 ДенисЧ
 
07.12.11
09:51
да уж... Нормальным объяснением тут и не пахнет...
5 Песец
 
07.12.11
09:51
(0) В ПриНачалеВыбораЗначения поискать что тебе надо, если не нашел открывать форму выбора.
6 Rie
 
07.12.11
09:57
(3) Угу, коряво. У тебя редактирование - в форме списка справочника?
7 maestro-72
 
07.12.11
09:57
Оператор при открытии диалога выбора элемента справочника понимает что искомая информация не была найдена и создает новый элемент. При вводе очередного реквизита в форме списка курсор перескакивает на следующую колонку, это очень удобно, по достижении последней колонки и вводе значения форма закрывается и этот элемент справочника появляется в реквизите вызывающей формы
8 maestro-72
 
07.12.11
09:58
В случае программного открытия формы с передачей параметра так не получается
9 maestro-72
 
07.12.11
09:59
Форма выбора почемуто не закрывается при нажатии ввода в последней колонке
10 Rie
 
07.12.11
10:04
(8) Покажи, как делаешь.
11 maestro-72
 
07.12.11
10:07
в текстовом поле прописана процедура которая находит элемент справочника
Если нашла - подставляет значение в поле выбора элемента и диалог не открывается. если не нашла, то процедура завершается, следующим просто открывается диалог для выбора... Как при нажатии на педалку срабатывает
12 maestro-72
 
07.12.11
10:08
В модуле формы из которой элемент выбирается ничего не прописано
13 Rie
 
07.12.11
10:12
(11) Так а как передаёшь информацию в форму выбора? (или что имелось в виду под "не получается"?).
Может, имеет смысл обратить внимание на методы формы РежимВыбора, ОбработкаВыбораСтроки и ВыполнитьВыбор?
14 maestro-72
 
07.12.11
10:15
В ощем надо закрыть эту форму при окончании ввода последней колонки если вводится новый элемент справочника с передачей этого элемента в диалог выбора. Это и не получается.
15 Rie
 
07.12.11
10:18
(14) Форма.Закрыть() - не поможет?
Ну и так, для профилактики - покажи код. А то постов уже много, а что обсуждаем-то - до сих пор непонятно.
16 maestro-72
 
07.12.11
10:18
Когда я открываю форму для выбора сам программно, и передаю ей параметр, всё хорошо но она не закрывается и элемент не выбирается, а на эти процедуры внимание действительно надо обратить и я уже эксперементировал с ними, но чтото ничего не получилось из желаемого. как отловить событие что последняя колонка заполнена?
17 Ёпрст
 
07.12.11
10:19
ёпта, открытьФорму, через контекст открытой формы нового элемента справочника передать всё что угодно
18 Rie
 
07.12.11
10:20
(16) Тут дело не в бобине...
Форма с переданным параметром ведёт себя точно также, как и форма без передачи ей параметра - если потом с этим параметром ничего не делать.
А код ты почему-то прячешь.
19 maestro-72
 
07.12.11
10:24
А какой код показать?
Процедура ПриОткрытии()
  Если ТипЗначенияСтр(форма.Параметр) = "СписокЗначений" Тогда
Серт = Форма.Параметр.Получить("Серт");
Если ПустоеЗначение(Серт) = 0 Тогда
Новый();
Сертификат = Серт;
Активизировать("Наименование",1);
КонецЕсли;
КонецЕсли;
КонецПроцедуры

Вот примерно так, базы под рукой нет. Но больше там ничего не прописано... никаких процедур. При открытии это я прописал, а то и этого небыло... и все работало как описано выше...
20 maestro-72
 
07.12.11
10:26
Можно при закрытии записать - Записать(). А как она закроется?
21 Rie
 
07.12.11
10:28
(20) Форма.Закрыть() её закроет.
22 maestro-72
 
07.12.11
10:30
Ладно, еще попробую, Если не будет получаться напишу что делал, может еще мысли появятся...
23 maestro-72
 
07.12.11
10:31
Пока мне понравилось - "ведет себя точно также" Это и будем исследовать.
24 maestro-72
 
08.12.11
15:23
В общем кому интересно, решение проблемы вылилось в это:
Перем СерияФ;  
Перем Параметры;
Процедура ПриОткрытии()
   Параметры = Форма.Параметр;
   Если ТипЗначенияСтр(Параметры) = "СписокЗначений" Тогда
       СерияФ = Параметры.Получить("Серия");
       ВладелецФ = Параметры.Получить("Владелец");
       ИспользоватьВладельца(ВладелецФ);
   КонецЕсли;
КонецПроцедуры  

Процедура ПриРедактированииНовойСтроки()
   Серия = СерияФ;
   Активизировать("Наименование", 1);
КонецПроцедуры  

Процедура ПриЗаписи()    
   Форма.Закрыть();
КонецПроцедуры

Процедура ПриЗакрытии()
   Если ПустоеЗначение(Параметры) = 0 Тогда
       Форма.Параметр.Установить("Сертификат",ТекущийЭлемент());
   КонецЕсли;
КонецПроцедуры
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.