Имя: Пароль:
1C
1С v8
В списокначений одно представление, выбирающее разные значения ?
0 mailwood
 
27.04.12
12:38
СтандартнаяОбработка = Ложь;
Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    Сотрудники.Ссылка КАК Ссылка
   |ИЗ
   |    Справочник.Сотрудники КАК Сотрудники
   |
   |УПОРЯДОЧИТЬ ПО
   |    Сотрудники.Наименование";
   Выборка = Запрос.Выполнить().Выбрать();
   Список = Новый СписокЗначений;
   Пока Выборка.Следующий() Цикл
       Список.Добавить(Выборка.Ссылка);
   КонецЦикла;
   РезультатВыбора = ВыбратьИзСписка(Список, Элемент);
   
   Если РезультатВыбора <> Неопределено Тогда
   Элемент.Значение = РезультатВыбора.Значение;
   КонецЕсли;
   
Допустим, если одно физлицо работает дворником и грузчиком - это разные сотрудники, имеющие одно представление "Иванов Иван Иванович". Хочу сделать, чтобы в списке было один вариант "Ивановича", а при выборе выбирались оба варианта работника. Кто подскажет ?
1 acsent
 
27.04.12
12:39
как ты в реквизит запишешь 2х работников?
2 Господин ПЖ
 
27.04.12
12:39
>Кто подскажет ?

хорошего нарколога?
3 Axel2009
 
27.04.12
12:43
а если вдруг попадутся 2 однофамильца?
4 mailwood
 
27.04.12
12:52
(3) Это да, но можно по физлицу формировать группу. Вопрос, реально ли со списком такое сделать.
5 х86
 
27.04.12
12:55
(0)в элемент.значение ложи Сруктуру, в представление "ВанВаныч"
6 Лоботряс
 
27.04.12
12:56
(5) клади
7 mailwood
 
27.04.12
16:30
Сделал так:

Запрос = Новый Запрос;
   Если ОрганизацияДолжностьСотрудник = "Организация" Тогда
   Запрос.Текст =
   "ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    ФизическиеЛицаСписокСотрудников.Организация.Представление КАК ПредставлениеОрганизации
   |ИЗ
   |    Справочник.ФизическиеЛица.СписокСотрудников КАК ФизическиеЛицаСписокСотрудников
   |ГДЕ
   |    ФизическиеЛицаСписокСотрудников.Ссылка = &ЭтоФизлицо";
   ИначеЕсли ОрганизацияДолжностьСотрудник = "Должность" Тогда
   Запрос.Текст =
   "ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    ФизическиеЛицаСписокСотрудников.Должность.Представление КАК ПредставлениеДолжности
   |ИЗ
   |    Справочник.ФизическиеЛица.СписокСотрудников КАК ФизическиеЛицаСписокСотрудников
   |ГДЕ
   |    ФизическиеЛицаСписокСотрудников.Ссылка = &ЭтоФизлицо";
   Иначе
   Запрос.Текст =
   "ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    ФизическиеЛицаСписокСотрудников.Сотрудник КАК Сотрудник,
   |    ФизическиеЛицаСписокСотрудников.Сотрудник.Представление КАК ПредставлениеСотрудника,
   |    ФизическиеЛицаСписокСотрудников.Организация.Представление КАК ПредставлениеОрганизации,
   |    ФизическиеЛицаСписокСотрудников.Должность.Представление КАК ПредставлениеДолжности
   |ИЗ
   |    Справочник.ФизическиеЛица.СписокСотрудников КАК ФизическиеЛицаСписокСотрудников
   |ГДЕ
   |    ФизическиеЛицаСписокСотрудников.Ссылка = &ЭтоФизлицо";
   КонецЕсли;
   Запрос.УстановитьПараметр("ЭтоФизлицо", ПараметрыСеанса.Физлицо);
     Выборка = Запрос.Выполнить().Выбрать();
   Список = Новый СписокЗначений;
   Пока Выборка.Следующий() Цикл
       Если ОрганизацияДолжностьСотрудник = "Сотрудник" Тогда
       Представление = Выборка.ПредставлениеСотрудника + ", " + Выборка.ПредставлениеОрганизации + ", " + Выборка.ПредставлениеДолжности;
       Список.Добавить(Выборка[ОрганизацияДолжностьСотрудник],Представление);
       ИначеЕсли ОрганизацияДолжностьСотрудник = "Организация" Тогда
       Представление = Выборка.ПредставлениеОрганизации;
       Список.Добавить(Представление);
       ИначеЕсли ОрганизацияДолжностьСотрудник = "Должность" Тогда
       Представление = Выборка.ПредставлениеДолжности;
       Список.Добавить(Представление);
       КонецЕсли;
       Список.СортироватьПоПредставлению();
   КонецЦикла;
   РезультатВыбора = ВыбратьИзСписка(Список, Элемент, НомерОргДолжСотр[ОрганизацияДолжностьСотрудник]);
   Если РезультатВыбора <> Неопределено И ОрганизацияДолжностьСотрудник = "Сотрудник" Тогда
   Элемент.Значение = РезультатВыбора.Значение;
   НомерОргДолжСотр[ОрганизацияДолжностьСотрудник] = Список.Индекс(РезультатВыбора);
   ИначеЕсли РезультатВыбора <> Неопределено И ОрганизацияДолжностьСотрудник = "Организация" Тогда
   Элемент.Значение = Справочники.Организации.НайтиПоНаименованию(РезультатВыбора.Значение);
   НомерОргДолжСотр[ОрганизацияДолжностьСотрудник] = Список.Индекс(РезультатВыбора);
   ИначеЕсли РезультатВыбора <> Неопределено И ОрганизацияДолжностьСотрудник = "Должность" Тогда
   Элемент.Значение = Справочники.Должности.НайтиПоНаименованию(РезультатВыбора.Значение);
   НомерОргДолжСотр[ОрганизацияДолжностьСотрудник] = Список.Индекс(РезультатВыбора);
   КонецЕсли;
2 + 2 = 3.9999999999999999999999999999999...