Имя: Пароль:
1C
 
Программно открыть форму для выбора...
0 Atlant
 
31.01.08
19:26
Доброго всем времени суток!

Вопрос: как ПРОГРАММНО, открыть ПОЛНОЦЕННУЮ форму справочника, но использовать её как для выбора?!

Дело плевое, а вспомнить не могу КАК это делается:
- открыть форму справочника ДЛЯ ВЫБОРА...
- НЕ ИСПОЛЬЗУЯ реквизит типа справочник...
- чтобы у ней было все как ОБЫЧНО (а не модульный диалог)...
- и при этом ПО ДВОЙНОМУ ЩЕЛЧКУ происходил - выбор (форма закрывается и значение заносится в переменную)?!

У меня там выбор по КНОПКЕ (если ставлю на морду реквизит типа справочник, выбирает - короткое наименование контрагента, а бухерам нужно длинное, полное, они видишь ли - не видят важной информации, мать их), после чего все в шоколаде. Но выбор такой сделать не помню как.
Самое противное, что смутно помню, что видел такое в какой то типовой конфе и был крайне удивлен красотой того, что это вообще сделали, т.к. все время пользовал "ОткрытьФормуМодально()" и "СпрКонтры.Выбрать()" в которых формы куцые и на лету ничего не сделаешь.

Вижу два варианта:
1. программировать действие формы справочника при получении Форма.Параметр (ну там воткнул СЗ с настройками и вернул через них выбранный элемент, а двойной щелчок запрещать ПриНачалеРедактирования и т.п. - муторно и может быть вообще гоню я тут :( и это вообще не требуется)
2. СпрКонтр.Выбрать("", "ФормаСписка"), но он - куцый!! :(

Кто нить сталкивался?
1 Atlant
 
31.01.08
19:29
Ну или использовать подбор и обрабатывать его. Но это как то - лево?! Или можно только так?! :-/
2 у лю 427
 
31.01.08
19:32
пометь имя нужной формы ДЛЯ ВЫБОРА - и все....
3 Морозов Александр
 
31.01.08
19:33
я чего то не понял... ну нарисуй себе форму какую хош. что мешает то?
4 КонецЦикла
 
31.01.08
19:36
Открытьподбор()?
5 Atlant
 
31.01.08
19:43
(2) и чего? чем её такую помеченную открывать ПРОГРАММНО так, чтобы она работала, как при выборе из реквизита типа справочник. у меня по кнопке - не пашет: открывается прекрасно, а при двойном щелчке - просто дает элемент справочника для редактирования! а мне надо, чтобы произошел ВЫБОР! т.е. закрытие формы, с возвратом выбранного элемента!

(3) нафига? кнопочки стандартные рисовать что ли? они ж есть уже?

(4) см. (1) - думал уже и так... подходит конечно, но неужели - это единственная возможность (такая левая)???! :((
6 у лю 427
 
31.01.08
19:46
дятел.... она и будет использоваться при выборе, как при выборе из справчника...
7 Atlant
 
31.01.08
19:54
(6) удод, ты бы побробовал сначала! ещё раз для особо внимательных:
- у тебя кнопка (НЕ реквизит типа справочник, а кнопка типа "Закрыть", "ОК" и тп.)
- нажимаешь её - открывается НОРМАЛЬНАЯ форма справочника, (да, в конфигураторе, для этого справочника, помеченная - "для выбора"),
- щелкаешь два раза нужный элемент... ОПППАА! открывается ЭЛЕМЕНТ СПРАВОЧНИКА ДЛЯ РЕДАКТИРОВАНИЯ! выбора в исходную форму НЕ ПРОИСХОДИТ.
- особо одаренным код:

Процедура ПриНажатииКнопки_1()
    Конт = "";
    ОткрытьФормуМодально("Справочник.Контрагенты.ФормаДляВыбора", Конт);
    Контрагент = Конт; (???)
КонецПроцедуры
8 trdm
 
31.01.08
20:04
(7) я знаю, но не скажу, ибо грубиян ты и тупица.
9 Atlant
 
31.01.08
20:08
(8) :D чтобы филонщик типа "trdm", что то знал???!! :))) эт вряд ли. тем более, что знаток бы сразу понял, что проблема муторная - и только кажется простой. но ты - не напрягаяйся даже!
10 Vippi
 
31.01.08
20:12
Стаж 3 года 7 мес.
Мда...
11 Atlant
 
31.01.08
20:17
(10) Стыдно мне, но день был тяжелый, вспомнить как решалось не могу, а дятлы так и летают так и летают! :D
12 у лю 427
 
31.01.08
20:18
миздец.... Дятел то один - а звону сколько....
13 Atlant
 
31.01.08
20:21
(12) самокритично! :)
Что, так и не вспомнил ничего кроме ОткрытьПодбор() под эту фичу?! вот и я тоже!
14 у лю 427
 
31.01.08
20:29
это?

//=========================================
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//\\\\\\\   ИпатьДятлаВЖПО
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//=========================================
procedure ИпатьДятлаВЖПО()
   к=CreateObject("Reference.Контрагенты");
   if к.Choose("Выбор дятла (одного дебила)", "ИмяФормыДляВыбора") <> 1 then
       DoMessageBox(    "Юзер послал дятла нах");
       return;        
   endIf;
   Контрагент = к.CurrentItem();
EndProcedure  //ИпатьДятлаВЖПО

//*******************************************
15 Atlant
 
31.01.08
21:04
(14) нет. Это:

Procedure U_LyuFuccccker(Count=1001)
  naX = CreateObject("Referens.U_Lyu_Body_Part");
  naX.SelectItems();
  While naX.GetItem() = 1 Do
       if naX.IsGroup() = 1 Then
           Continue;
       EndIf;
       For cnt = 1 to Count
          glU_lyu.Fucccck_In(naX.CurrentItem());
          doMessageBox("Yyyyyyeeeeeesss! This is for upstart & udod program!", 15);
       EndDo;
  EndDo;
EndProcedure //U_LyuFuccccker()
16 Atlant
 
31.01.08
21:08
Тема закрыта! всем (ну кроме удодов) - удачи, и хорошей памяти!! А то вот так запаришься и - удоды летят тока так!
Спасибо, всем кто реально помогает на форуме!
17 zzzzz
 
31.01.08
21:43
(0) Открой тайну золотого ключика - ты таким образом пытался вспомнить функцию
ВыполнитьВыбор ?
18 Vippi
 
31.01.08
21:53
(17) Нет, это он пытался
СпрКонтр.Выбрать("", "ФормаДляВыбора")
19 zzzzz
 
31.01.08
22:09
Так он же эту функцию в сабже привел 8)! Мдаааа...........
20 trdm
 
31.01.08
22:29
это не атлант а какой-то мудаковатый мутант.
хочет решить проблему и серет.
типа не понятно дураку, что пчелы летят на мед, и только мухи на г-но...
21 у лю 427
 
31.01.08
22:50
логика дятлов непостижима.....
22 AeDen
 
31.01.08
23:33
А переменная count неопределена... двоешник...
23 AeDen
 
31.01.08
23:35
и цикл непонятный... писалась видать процедурка в глубокой обиде и сквозь слезы...
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.