Имя: Пароль:
1C
 
Автоматический выбор сотрудника при выборе подразделения
0 Филипп Остырко
 
10.04.19
13:15
Функция мСотрудник(мПодразделение);
    
В независимый РС в форму набора записи записал данные с измерениями Подразделение(спр), Сотрудник(спр), ОтветственноеЛицо (перечисление, где список должностей).В Ответственноелицо выбрал "Руководитель" из перечисления.
Написал что написал ,опыта мало, ничего не возвращается.  

&НаКлиенте
Процедура ПодрПолучательПриИзменении(Элемент)

   Объект.ОтветственноеЛицоПолуч = мСотрудник(Объект.ПодрПолучатель);
КонецПроцедуры
    
&НаСервереБезКонтекста
Функция мСотрудник(мПодразделение);

        
        Результат = Новый Структура("РуководительФИО");
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ОтветственныеЛицаСрезПоследних.Сотрудник,
        |    ОтветственныеЛицаСрезПоследних.Подразделение,
        |    ОтветственныеЛицаСрезПоследних.ОтветственноеЛицо
        |ИЗ
        |    РегистрСведений.ип_ДРГОтветственныеЛица.СрезПоследних КАК ОтветственныеЛицаСрезПоследних";
        
        Запрос.УстановитьПараметр("ОтветственноеЛицо", Перечисления.ОтветственныеЛица.Руководитель);
        
        Руководители = Запрос.Выполнить().Выбрать();
        Если Руководители.ОтветственноеЛицо      = Перечисления.ОтветственныеЛица.Руководитель Тогда
            
            Результат.РуководительФИО        = Руководители.Сотрудник;
        КонецЕсли;
    
    Возврат Результат;
    
КонецФункции
1 RomaH
 
naïve
10.04.19
13:17
про типы переменных почитай
2 RomaH
 
naïve
10.04.19
13:17
ничего не возвращается - врешь ведь
3 catena
 
10.04.19
13:18
А зачем в физлицо структуру пихать?
4 RomaH
 
naïve
10.04.19
13:18
ОтветственноеЛицо  -  у тебя ссылка на перечисление
а возвращаешь ты структуру
5 catena
 
10.04.19
13:19
Код не рабочий вообще. Где перебор выборки? Зачем условие не в запросе?
6 Darych
 
10.04.19
13:19
+ Руководители.Следующий() - у тебя выборка в вакууме
7 piter3
 
10.04.19
13:20
а зачем параметр если по нему ничего не отбирается)
8 Филипп Остырко
 
10.04.19
13:20
(2) в отладчике посмотрел , возвращается "Структура" , но поле сотрудника пусто выходит
9 Zmich
 
10.04.19
13:21
(0).  Руководители = Запрос.Выполнить().Выбрать();
        Если Руководители.ОтветственноеЛицо      = Перечисления.ОтветственныеЛица.Руководитель Тогда
==>
Руководители = Запрос.Выполнить().Выбрать();
Если Руководители.Следующий() Тогда
        Если Руководители.ОтветственноеЛицо      = Перечисления.ОтветственныеЛица.Руководитель Тогда
10 Temai
 
10.04.19
13:32
Никого не смутило что он устанавливает параметр запроса которого нет в запросе..
11 piter3
 
10.04.19
13:37
(10) А что думаешь написали в (7) и (8) :)
12 Temai
 
10.04.19
13:38
(11) Сорян, не увидел)
13 piter3
 
10.04.19
13:39
Может проще будет поиском пройтись по конфе и скопировать код чем мучатся
14 Филипп Остырко
 
10.04.19
13:49
переделал так :
Функция мСотрудник(мПодразделение);
    
    Если мПодразделение <> Неопределено тогда
        
        Результат = Новый Структура();
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ип_ДРГОтветственныеЛицаСрезПоследних.Сотрудник,
        |    ип_ДРГОтветственныеЛицаСрезПоследних.Подразделение,
        |    ип_ДРГОтветственныеЛицаСрезПоследних.ОтветственноеЛицо,
        |    ип_ДРГОтветственныеЛицаСрезПоследних.Должность
        |ИЗ
        |    РегистрСведений.ип_ДРГОтветственныеЛица.СрезПоследних(&Дата, ) КАК ип_ДРГОтветственныеЛицаСрезПоследних";
        
        Запрос.УстановитьПараметр("ОтветственноеЛицо", Перечисления.ип_ДРГОтветственныеЛица.Руководитель);
        Запрос.УстановитьПараметр("Дата",Объект.Дата);                                          
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() цикл
            Результат.Вставить("Сотрудник", Выборка.Сотрудник);
        
        КонецЦикла;
        
    КонецЕсли;
    Возврат Результат;
    
КонецФункции
15 catena
 
10.04.19
13:53
(14)Молодец. Осталось разобраться с параметром ОтветственноеЛицо и присвоением.
16 Darych
 
10.04.19
14:21
Результат.Вставить("Сотрудник", Выборка.Сотрудник);  в цикле...
смотри в сторону массива

ну и (15) тебе намекает, что если ты параметр устанавливаешь, то он где-то должен иметь место быть в запросе)
17 Филипп Остырко
 
10.04.19
14:26
Спасибо за подсказки