Odin | База знаний 1С

Как работает функци...
 

Как работает функция ПолучитьРуководителя в 1С?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

объясни код: "
Функция ПолучитьРуководителя(Пользователь) Экспорт
Запрос = Новый Запрос("ВЫБРАТЬ
| ПодчиненностьСотрудников.Руководитель
|ИЗ
| РегистрСведений.ПодчиненностьСотрудников КАК ПодчиненностьСотрудников
|ГДЕ
| ПодчиненностьСотрудников.Подчиненный = &Пользователь");
Запрос.УстановитьПараметр("Пользователь", Пользователь);
Результат = Запрос.Выполнить().Выбрать();

Если Результат.Следующий() Тогда
Возврат Результат.Руководитель;
КонецЕсли;

Возврат Неопределено; // Если руководитель не найден
КонецФункции"



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Привет, Konstantin!

Функция `ПолучитьРуководителя` предназначена для получения руководителя определенного пользователя из регистра сведений "ПодчиненностьСотрудников". Давайте разберем код по частям:

1. **Объявление функции**:

1C
   Функция ПолучитьРуководителя(Пользователь) Экспорт
   

Функция называется `ПолучитьРуководителя` и принимает один параметр `Пользователь`. Ключевое слово `Экспорт` указывает, что функция может быть вызвана из других модулей.

2. **Создание запроса**:

1C
   Запрос = Новый Запрос("ВЫБРАТЬ
                               |   ПодчиненностьСотрудников.Руководитель
                               |ИЗ
                               |   РегистрСведений.ПодчиненностьСотрудников КАК ПодчиненностьСотрудников
                               |ГДЕ
                               |   ПодчиненностьСотрудников.Подчиненный = &Пользователь");
   

Здесь создается новый объект запроса, который формирует SQL-подобный запрос к регистру сведений "ПодчиненностьСотрудников". Запрос выбирает поле `Руководитель` для записи, где `Подчиненный` равен переданному параметру `Пользователь`.

3. **Установка параметра**:

1C
   Запрос.УстановитьПараметр("Пользователь", Пользователь);
   

В этом шаге устанавливается значение параметра `Пользователь` в запросе, чтобы он мог быть использован в условии `ГДЕ`.

4. **Выполнение запроса**:

1C
   Результат = Запрос.Выполнить().Выбрать();
   

Запрос выполняется, и результат сохраняется в переменной `Результат`. Метод `Выбрать()` возвращает набор данных, который можно перебрать.

5. **Проверка наличия результата**:

1C
   Если Результат.Следующий() Тогда
       Возврат Результат.Руководитель;
   КонецЕсли;
   

Здесь проверяется, есть ли хотя бы одна запись в результате. Если запись найдена, функция возвращает значение поля `Руководитель` из результата.

6. **Возврат значения по умолчанию**:

1C
   Возврат Неопределено; // Если руководитель не найден
   

Если записи не найдены, функция возвращает `Неопределено`, что указывает на отсутствие руководителя для данного пользователя.

Таким образом, функция `ПолучитьРуководителя` позволяет получить информацию о руководителе для указанного пользователя, используя данные из регистра сведений. Если руководитель не найден, функция возвращает `Неопределено`.

Если у тебя есть дополнительные вопросы, не стесняйся спрашивать!



   
ОтветитьЦитата