Имя: Пароль:
1C
1С v8
Вычисляемое поле в скд
, ,
0 13spartak13
 
18.07.17
09:36
Здравствуйте! В СКД в вычисляемое поле нужно вставить функцию

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

Но дело в том что я не могу залазить в конфигурацию и хранить ее в общем модуле, это внешняя обработка, как можно впихнуть данную функцию в вычисляемое поле и возможно ли вообще
1 Лефмихалыч
 
18.07.17
10:03
не возможно вообще
4 dnab
 
18.07.17
10:27
(2) не нужен тебе общий модуль. Сделай все в запросе, ничего тут сложного.
Вывод списка сотрудников с разделителями тоже можно в вычисляемом поле, читай язык выражений СКД
6 DexterMorgan
 
18.07.17
10:53
(0) Переделай основной запрос в скд, добавив эту часть из (0), тут и не нужны никакие вычисляемые поля, только производительность пострадает
7 DexterMorgan
 
18.07.17
10:57
(0) А чтобы вывести сотрудников через запятую есть например соединитьстроки или массив
8 13spartak13
 
18.07.17
11:01
(7) Подскажите запросом выбираю нужных сотрудников, но выводить их могу только ресурсом, как в поле вывести всех а не только МАКСИМУМ или МИНИМУМ
9 DexterMorgan
 
18.07.17
11:04
(8) Пиши вместо максимум - СоединитьСтроки("ТвоеПоле", ",")
10 DexterMorgan
 
18.07.17
11:05
Или Массив(твое поле)
11 13spartak13
 
18.07.17
11:11
(10) Это нужно сначала вычисляемое поле создать?
12 DexterMorgan
 
18.07.17
11:15
(11) Не нужно, ты выбираешь сотрудников запросом, делаешь ресурсом и пишешь как (9)
2 + 2 = 3.9999999999999999999999999999999...