|   |   | 
| 
 | Выпадающий список элементов справочника по Коду | ☑ | ||
|---|---|---|---|---|
| 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) точно! спасибо!     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |