Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 14:58

Полеввода1->Полеввода2 выборка данных

Автор leftmails, 27 авг 2012, 07:53

0 Пользователей и 2 гостей просматривают эту тему.

leftmails

При выборе во втором полевыбора2 событие Обработка выбора, пытался различными способами при выборе фамилии вывести соседние записи таблицы1 (Емаил, телефон, Должность), но безрезультатно

Последний оставшийся код, много разного писал и наверное глупого...
Процедура ПолеВыбора2ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Данные=Элемент;
КолонкаНомер=Данные.Должность;
   КонецПроцедуры


PS:прошу прощение, но код выделить не могу,  как то криво получается... поэтому без обработки

Klyacksa

Нет, это совсем не то.
Элемент - это элемент формы, поле выбора 2. Никакой Должности у него нет, у него есть только Значение, и там лежит ФИО. И то, в Обработке выбора его еще нет.

Смысл такой:
1. Есть элемент справочника Инфорганизации, у него есть таб.часть.
2. В первом поле выбора выбрали организацию - теперь у нас есть ссылка на выбранную организацию
3. по выбранной организации получаем перечень ФИО из таб.части
4. Выбираем нужное ФИО - теперь у нас есть ФИО и по-прежнему осталась ссылка на выбранную организацию
5. Чтобы теперь получить значения в остальных колонках, нужно взять ссылку на выбранную организацию, взять ее таб.часть, найти там строку с нашим ФИО - и далее получить значения остальных колонок.

Вообще, по-хорошему весь этот механизм делается немного другими объектами:
1. Справочник Организации - перечень самих организаций
2. Справочник Контактные лица (или Физ.лица, не суть важно) - перечень всех контактных лиц
3. Справочник Должности - общий перечень должностей
4. Регистр сведений КонтактныеЛицаОрганизаций - связь Организация->КонтактноеЛицо, плюс данные по должности
5. Регистр сведений КонтактныеДанные - Контактное лицо плюс телефоны, адреса и т.д.

Если задача учебная, то можно упростить и до Вашего варианта, а если реальная - то лучше делать по-уму
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

leftmails

Спасибо большое, за информацию.. буду пробовать.. позже отпишусь...
пока задача учебная,  потом сделаю как вы написали во втором способе...

leftmails

Друзья Ура! Спасибо что помогли MuI_I_Ika и Klyacksa. Огромная благодарность Klyacksa за расставление все по полочкам.

А теперь непосредственно завершающий код, может кому поможет, а может есть и легче вариант


НомерЭлемент = 0;   
МасФИО = СписокСсылка.ТабличнаяЧасть1.ВыгрузитьКолонку("ФИО");  
МасДолжн = СписокСсылка.ТабличнаяЧасть1.ВыгрузитьКолонку("Должность");
МасТел = СписокСсылка.ТабличнаяЧасть1.ВыгрузитьКолонку("Телефон");
МасМаил = СписокСсылка.ТабличнаяЧасть1.ВыгрузитьКолонку("Емаил");
 
Для Каждого ТекЭлемент Из МасФИО Цикл
  //--------------
Если ТекЭлемент = ЭлементыФормы.ПолеВыбора2.значение Тогда
Должность = МасДолжн[НомерЭлемент];
Телефон = МасТел[НомерЭлемент];
Емаил = МасМаил[НомерЭлемент];
ЭлементыФормы.Надпись9.Заголовок = Должность;
ЭлементыФормы.Надпись11.Заголовок = "Email:"+Строка(Емаил)+". Тел: "+Строка(Телефон);
Иначе   
КонецЕсли;
         //--------------
        НомерЭлемент = НомерЭлемент + 1;
КонецЦикла;


Где СписокСсылка глобальная переменная, принимающая свое значение СписокСсылка=ВыбранноеЗначение;  при выборе в полевыбора1

Еще раз спасибо, буду рад выслушать замечания по коду.

Klyacksa

Что-то не очень понятно.
Зачем перебирать весь массив ради одного элемента? Можно воспользоваться функцией:
ЦитироватьМассив (Array)
Найти (Find)
Синтаксис:

Найти(<Значение>)
Параметры:

<Значение> (необязательный)

Тип: Произвольный.
Искомое значение.
Возвращаемое значение:

Тип: Число; Неопределено.
Если элемент найден, возвращается его индекс. Если элемент не найден, возвращается Неопределено.
Описание:

Выполняет поиск элемента в массиве.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск