Имя: Пароль:
1C
1С v8
Помогите с составлением условия
0 mik_mihka
 
04.04.17
16:50
Есть форма выбора составного значения (справочник.контрагенты и справочник.сотрудники) от выбранного значения я меняю запрос, так вот, как мне определить - выбран тип - контрагенты или пользователи?
В отладчике ВыбранноеЗначение имеет значение-Контрагенты,а тип-тип.
Как в условии сравнить какое значение? ВыбранноеЗначение = ТипЗнч("СправочникСсылка.Контрагенты") не правильное, так как значение МенеджерСсылка.Контрагент. Как составить правильно?
1 Волшебник
 
модератор
04.04.17
16:51
Если ТипЗнч(зн) = Тип("СправочникСсылка.Контрагенты") Тогда
3 mik_mihka
 
04.04.17
16:55
ТипЗнч(ВыбранноеЗначение) у него значение - тип, тип-тип
Не подходит
4 1dvd
 
04.04.17
16:55
(3) тип типу рознь, есичо :)
5 Naf2017
 
04.04.17
16:56
(3) так и должно быть
6 jsmith82
 
04.04.17
16:56
(0) >>МенеджерСсылка.Контрагент
Чо такое?!
7 mik_mihka
 
04.04.17
16:58
ТипЗнч(ВыбранноеЗначение) =Тип("СправочникСсылка.Контрагенты") Ложь, хотя выбран тип Контрагенты.
8 singlych
 
04.04.17
16:59
ВыбранноеЗначение = Тип("СправочникСсылка.Контрагенты")
9 mik_mihka
 
04.04.17
17:00
(8) Спасибо
Сработало!
10 Naf2017
 
04.04.17
17:01
(9) лучше бы нет, вот честно...
11 1dvd
 
04.04.17
17:01
(9) а зачем ты в выбранное значение тип запихал?
12 Волшебник
 
модератор
04.04.17
17:04
а может через Метаданные() ?
13 jsmith82
 
04.04.17
17:04
(11) А он тип выбирает
14 mik_mihka
 
04.04.17
17:04
Сначала тип в форме выбирается, а потом значение из соответствующего справочника, вот только...
15 Волшебник
 
модератор
04.04.17
17:06
(13) После выбора типа поле должно получить пустую ссылку. У него ещё какая-то хрень. Может ПВХ какой-нибудь
16 mik_mihka
 
04.04.17
17:17
Я сначала в выбранном значении сравниваю - если ВыбранноеЗначение = Тип("СправочникСсылка.Контрагенты") или ВыбранноеЗначение = Тип("СправочникСсылка.Пользователи") ,
я делаю Возврат;
А после уже в выбранном значении проверяю тип и само значение, их подставляю в запрос
17 1dvd
 
04.04.17
17:19
(15) скорее ПВА...
18 Волшебник
 
модератор
04.04.17
17:23
(16) Переименуй ВыбранноеЗначение в ВыбранныйТип, так будет логичнее.
19 mik_mihka
 
04.04.17
17:25
Процедура ПодразделениеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) , это значение и содержит , сначала тип, потом само значение
20 mik_mihka
 
04.04.17
17:30
Если ВыбранноеЗначение = Тип("СправочникСсылка.Контрагенты") Тогда
         Возврат;
     ИначеЕсли ВыбранноеЗначение = Тип("СправочникСсылка.Пользователи") Тогда
         Возврат;
     КонецЕсли;    
     Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.Контрагенты") Тогда
          СправочникСотрудников = "Справочник.Контрагенты";
     ИначеЕсли ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.Пользователи") Тогда      
          СправочникСотрудников = "Справочник.Пользователи";
     КонецЕсли;      
     Если ЭтоНовый()  Тогда
         Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
            |    Пользователи.Ссылка
            |ИЗ
            |    "+СправочникСотрудников+" КАК Пользователи
            |ГДЕ
            |    Пользователи.ПометкаУдаления = ЛОЖЬ
            |    И Пользователи.Родитель = &Родитель"
            ;

        Если ЗначениеЗаполнено(Сотрудники) Тогда
            Ответ = Вопрос("Табличная часть ФИО заполненна, удалить?",РежимДиалогаВопрос.ДаНет,0);
            Если Ответ = КодВозвратаДиалога.Нет Тогда
                Возврат;
            Иначе
                Сотрудники.Очистить();
                    Запрос.УстановитьПараметр("Родитель",ВыбранноеЗначение);
                Результат = Запрос.Выполнить().Выбрать();
                Пока Результат.Следующий()Цикл
                    НоваяСтрока = Сотрудники.Добавить();
                    НоваяСтрока.ФИО = Результат.Ссылка;
                КонецЦикла;      
            КонецЕсли;
        Иначе
            Запрос.УстановитьПараметр("Родитель",ВыбранноеЗначение);
            Результат = Запрос.Выполнить().Выбрать();
            Пока Результат.Следующий()Цикл
                НоваяСтрока = Сотрудники.Добавить();
                НоваяСтрока.ФИО = Результат.Ссылка;
            КонецЦикла;      
        КонецЕсли;
          
    КонецЕсли;
21 mik_mihka
 
04.04.17
17:31
Вот такого типа получилось, мне надо было что бы в форме табеля, заполнялись поля от выбранного значения, но тип значения может быть двух видов - Контрагенты и Пользователи
22 Волшебник
 
модератор
04.04.17
17:33
мутно как-то
23 mik_mihka
 
05.04.17
08:35
(22) Буду рад принять опыт симметричного решения задачи...
24 q10n1k
 
05.04.17
08:57
Есть "Упрощенка", но на практике с ней николгда не сталкивался и на сколько она быстрее работает  сказать трудно