Имя: Пароль:
1C
1С v8
Выбор записи справочника
,
0 Andrey2C
 
26.03.15
14:08
Добрый день. Нужно сделать так: На форме есть поле с типом данных строка. На нее добавлена кнопка выбора. Необходимо по этой кнопке открыть справочник, выбрать в нем запись и записать Наименование в строку. Подскажите как это можно реализовать? Заранее благодарен.
1 Ненавижу 1С
 
гуру
26.03.15
14:09
(0) а зачем? ну интересно просто
2 Naumov
 
26.03.15
14:10
(0) А почему нельзя сделать реквизит с типом СправочникСсылкаНоменклатура?
3 DirecTwiX
 
26.03.15
14:11
Если ВвестиЗначение(<Значение>, <Подсказка>, <Тип>) Тогда
    РеквизитСтрока = <Значение>.Наименование;
КонецЕсли;

Развлекайся
4 anatoly
 
26.03.15
14:11
(0) открыть форму выбора - если выбран - записать наименование.
в чем проблема?
5 butterbean
 
26.03.15
14:14
(1) у нас, например, в договорах есть поле "Предмет договора", туда можно писать что угодно, но есть часто используемые одни и те же значения
6 Andrey2C
 
26.03.15
14:27
(4) Проблема в "Не знаю как это сделать" Иначе бы не спрашивал.
У меня есть поле на форме комментарий. Мне необходимо чтобы в этом поле было и Выбор и Выбор из списка. Выбором из списка я отбираю из справочника нужных мне сотрудников и в коментарии отображаю их вместе с табельными номерами. Это сделал.
СтруктЕд = СтрЗаменить(ПараметрыСеанса.ТекущаяСтруктурнаяЕдиница.Наименование,"№","");
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |Сотрудники.Наименование КАК Сотр,
    |Сотрудники.ТабельныйНомер КАК Тб
    |ИЗ Справочник.ФизическиеЛица КАК Сотрудники
    |ГДЕ Сотрудники.Родитель.Наименование = &Группа";
    
    Запрос.УстановитьПараметр("Группа",СокрЛП(СтруктЕд));
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
        ЭлементыФормы.Комментарий.СписокВыбора.Добавить(Выборка.Сотр+ " ТН: "+Выборка.Тб,Выборка.Сотр+ " ТН: "+Выборка.Тб);
    КонецЦикла;
А при выборе мне нужны все сотрудники из справочника. Но при этом чтобы это поле было доступно для редактирования и впихивания туда любого мусора. Объясните более подробно с функцией "ВвестиЗначение" в каком модуле писать то ее?
7 DirecTwiX
 
26.03.15
14:29
В ОбработкеВыбора
8 Andrey2C
 
26.03.15
14:42
(7) Не пойму как это должно работать то?
9 Andrey2C
 
26.03.15
14:43
Открываю форму:
Процедура КомментарийНачалоВыбора(Элемент, СтандартнаяОбработка)
    ФормаВыбора = Справочники.ФизическиеЛица.ПолучитьФорму("ФормаВыбора");
    ФормаВыбора.Открыть();
КонецПроцедуры

А дальше че?
10 butterbean
 
26.03.15
14:46
(9) ФормаВыбора.ВладелецФормы = Элемент;
СтандартнаяОбработка = ложь;
11 butterbean
 
26.03.15
14:46
(10)+ а потом уже  ФормаВыбора.Открыть();
12 butterbean
 
26.03.15
14:47
(10)+ и еще :-)
ФормаВыбора = Справочники.ФизическиеЛица.ПолучитьФормуВыбора();
13 pessok
 
26.03.15
14:49
в (9) НачалоВыбора, в (7) *не* НачалоВыбора
14 crotnn
 
26.03.15
14:51
(9) Лучше так
&НаКлиенте
Процедура Поставщик1НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    ОткрытьФорму("Справочник.Контрагенты.ФормаВыбора", Новый Структура("РежимВыбора", Истина), Элемент);
КонецПроцедуры

&НаКлиенте
Процедура Поставщик1ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Поставщик1 = ВыбранноеЗначение;
КонецПроцедуры
15 pessok
 
26.03.15
14:52
(14) там обычные формы
16 crotnn
 
26.03.15
15:03
(15) Да почти также:
Процедура Поставщик1НачалоВыбора(Элемент, СтандартнаяОбработка)    
    ФормаВыбора = Справочники.Контрагенты.ПолучитьФормуВыбора(, Элемент);
    ФормаВыбора.РежимВыбора = Истина;
    ФормаВыбора.Открыть();    
КонецПроцедуры

Процедура Поставщик1ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Поставщик1 = ВыбранноеЗначение;
КонецПроцедуры
17 Andrey2C
 
26.03.15
15:08
(16) Да и так и так работает. Спасибо
18 ssh2006
 
26.03.15
15:19
Кстати в обработку выбора прописывать не обязательно должно быть. Система и так поместит в поле представление выбранного элемента.
19 Andrey2C
 
26.03.15
16:16
(18) Спасибо. Это я тоже понял) Каким то волшебным образом она это делает) А как работать с этой строкой интересно?
Программист всегда исправляет последнюю ошибку.