|
Выпадающий список элементов справочника по Коду | ☑ | ||
---|---|---|---|---|
0
Iater
21.06.15
✎
21:15
|
Всем привет!
В справочнике есть стандартные реквизиты Код и Наименование. В документе я хочу выбрать в поле ФИО сотрудника, для этого ставлю тип поля ссылку на справочник Сотрудники. Пользователь видит список фамилий, выбирает и в поле ФИО, допустим, появляется "Иванов". А как сделать так, чтобы можно было выбирать в этом же справочнике не Наименование, а Код? Я хочу сделать поле ИД тоже с типом ссылка, из которого тоже можно будет выбрать сотрудника. Но мне, конечно, нужен КОД, а не Наименование. Как это сделать? Пока получается вот так: http://i.imgur.com/kWQ1ExE.png Как это сделать? |
|||
1
Iater
22.06.15
✎
14:56
|
подниму тему
|
|||
2
butterbean
22.06.15
✎
14:59
|
непонятно нифига, но если нужно чтоб отображался код, то можно изменить представление справочника
|
|||
3
Iater
22.06.15
✎
15:24
|
Если изменить представление, то тогда в поле ФИО будет отображаться Код? Это мне тоже не подходит...
А что непонятного? Могу ещё пояснить |
|||
4
vicof
22.06.15
✎
15:30
|
(3) При изменении и открытии формы заполняй текстовое поле рядом с ФИО
|
|||
5
butterbean
22.06.15
✎
15:32
|
(3) если нужно чтобы просто отображался код, то можно добавить декорацию надпись и в ПутьКДанным прописать Сотрудник.Код
|
|||
6
palpetrovich
22.06.15
✎
15:38
|
дык, если в ПутьКДанным будет Объект.Сотрудник - то в списке будет и код и наименование
|
|||
7
Iater
22.06.15
✎
15:42
|
Пояснение:
Я хочу чтобы юзер мог выбрать по фамилии, тогда ИД подставится автоматом. А если фамилия трудная (какая-нибудь китайская к примеру), то проще выбрать по ИД. Тогда юзер выбирает код из справочника, а поле ФИО заполняется автоматически. Поэтому мне важно, чтобы в поле ФИО были фамилии. А поле ИД - код. |
|||
8
hhhh
22.06.15
✎
15:54
|
(7) там то и другое действует. Юзер может фамилию вводить, а может и код. НЕ нужно 2 поля заводить.
|
|||
9
Iater
22.06.15
✎
15:57
|
(8) я не понял, где там?
Два поля нужно, чтобы документ был информативным |
|||
10
butterbean
22.06.15
✎
15:59
|
(9) сделай 1 поле с выбором, в него можно и код и наименование писать, в нем будет отображаться ФИО, а поле с кодом добавь в виде надписи рядом
|
|||
11
vicof
22.06.15
✎
15:59
|
(9) "проще выбрать" и "документ был информативным" две совершенно разные проблемы. Ты уж определись.
|
|||
12
Mirnin
22.06.15
✎
16:00
|
Обработчики событий ПриИзменении для каждого поля.
При изменении фамилии - заполнение поля с кодом. И наоборот. |
|||
13
Iater
22.06.15
✎
16:01
|
(10) да так можно, но тогда если набирать ИД, то придется руками вводить - можно допустить ошибку или вовсе неверно указать. Короче я бы хотел, чтобы именно был выбор из справочника, а не строка
|
|||
14
Iater
22.06.15
✎
16:02
|
(12) так и делаю, но хочу, чтобы оба поля и ФИО и ИД давали выбор из справочника. При этом в ФИО - фамилии подставлялись, а в ИД - код.
Сейчас у меня в оба поля попадают фамилии |
|||
15
vicof
22.06.15
✎
16:08
|
(13) так тебе система и ругнется, что нет такого кода
|
|||
16
vicof
22.06.15
✎
16:09
|
(14) Меняй НачалоВыбора
|
|||
17
hhhh
22.06.15
✎
16:11
|
(14) так там когда выбираешь, там есть и то и другое в форме выбора. Колонка фамилия и колонка Код.
|
|||
18
Mirnin
22.06.15
✎
16:13
|
(14)
НачалоВыбора() ОбработкаВыбора() т.е. для кода тип значения должен быть строкой, с прикрученным открытием формы выбора сотрудников. Затем код выбранного сотрудника прописывается в поле "Код", а в поле "Фамилия" обработчиком ПриИзменении() (либо всё той же обработкой выбора) вносится фамилия. |
|||
19
Iater
22.06.15
✎
17:09
|
(18) я видимо что-то не понимаю
&НаКлиенте Процедура ИДНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; //Отключаем стандартный вызов выбора ФормаВыбора = Справочники.Сотрудники.ПолучитьФормуВыбора(); // Получить форму выбора справочника ВыбранныйЭлемент = ФормаВыбора.ОткрытьМодально(); // Открываем форму выбора КонецПроцедуры Ошибка: Переменная не определена (Справочники) |
|||
20
Lexey_
22.06.15
✎
17:18
|
(19) используй ОткрытьФорму()
|
|||
21
vicof
22.06.15
✎
17:22
|
(19) ОФ иУФ несколько разные вещи
|
|||
22
Iater
22.06.15
✎
17:24
|
Дело в том что я просто не знаю )) Попробовал вот так:
&НаКлиенте Процедура ИДНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; //Отключаем стандартный вызов выбора ФормаВыбора = Справочники.Стадо.ПолучитьФормуВыбора(); // Получить форму выбора справочника ОткрытьФорму(ФормаВыбора); // Открываем форму выбора КонецПроцедуры Все равно ругается на Справочники |
|||
23
VikingKosmo
22.06.15
✎
17:25
|
(22) попробуй все же прочесть справку про ОктрытьФорму()
|
|||
24
Mirnin
22.06.15
✎
17:30
|
ФормаВыбора.ОткрытьФорму();
Но дело не в этом, он же не доходит до туда всё равно. Дело скорее всего в этом: Справочники (Catalogs) Использование: Только чтение. Описание: Тип: СправочникиМенеджер. Используется для доступа к определенным в конфигурации справочникам. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
25
Iater
22.06.15
✎
17:35
|
(24) Mirnin, я пробовал затолкать это в функцию, ошибка пропадает, но не происходит ровным счетом ничего
как должно быть? |
|||
26
Фокусник
22.06.15
✎
17:35
|
(9) "Два поля нужно, чтобы документ был информативным"
А что неинформативного, если пользователь будет вводить код прямо в поле с выбором сотрудника? Так любой выбор любого справочника работает: можно ввести наименование или код. Это штатное поведение платформы, зачем добавлять "лишнюю информативность". Пользователи ЗНАЮТ, что в ЛЮБОЕ поле выбора справочника можно ввести КОД. Должны знать :) |
|||
27
hhhh
22.06.15
✎
17:38
|
(25) это же у вас адская смесь из обычных и управляемых форм. То есть абсолютное незнание 1с. Зачем тогда беретесь за задачу?
|
|||
28
Iater
22.06.15
✎
17:39
|
(27) к сожалению когда рождался, мне забыли закачать знанеие 1с, пытаюсь наверстать ;)
|
|||
29
Mirnin
22.06.15
✎
17:50
|
(25) ОткрытьФорму("Справочник.Сотрудники.ФормаВыбора");
Выше, кстати, был абсолютно правильный совет про "почитать справку об ОткрытьФорму" :) |
|||
30
Iater
22.06.15
✎
18:08
|
(29) Mirnin, спасибо! Про справку, к сожалению, моего градиента знаний в большинстве случаев не хватает, чтобы разобраться что там написано, очень не хватает простых примеров.
Вот что у меня получилось в итоге: &НаКлиенте Процедура ИДНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; // вот это обязательно указывать? ОткрытьФорму("Справочник.Сотрудники.ФормаВыбора",, Элемент); КонецПроцедуры &НаКлиенте Процедура ИДОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; // чтобы не подставляло ВыбранногоЗначение раньше времени Код = ВыборИДИзСправочника(ВыбранноеЗначение); Объект.ИД = Код; КонецПроцедуры Функция ВыборИДИзСправочника(ФИО) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Сотрудники.Код |ИЗ | Справочник.Сотрудники КАК Сотрудники |ГДЕ | Сотрудники.Ссылка = &ФИО"; Запрос.УстановитьПараметр("ФИО", ФИО); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Код = ВыборкаДетальныеЗаписи.Код; КонецЦикла; Возврат Код; КонецФункции Всем спасибо! Особенно Mirnin! Может где-то я в этом лохонулся и можно было сделать лучше? |
|||
31
Mirnin
22.06.15
✎
18:55
|
ВыбранноеЗначение - ссылка на элемент справочника. Ссылка уже содержит в себе код.
Код = ВыбранноеЗначение.Код; И.. всё. Никаких функций городить не нужно. |
|||
32
Iater
22.06.15
✎
19:26
|
(31) точно! спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |