Здравствуйте!
Такая проблема: есть вызов процедуры в другой процедуре

```1c
    ...
    ПроверкаИДЗадачи(ИД);
    ...
```

переменную ИД передать в процедуру я сумел, а процедура такая:

```1c
    Процедура ПроверкаИДЗадачи(ИД)

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

    РезультатЗапроса = Запрос.Выполнить();
    Таб = РезультатЗапроса.Выгрузить();
    КоличествоЧасов = Таб.Итог("КоличествоЧасов");

    Сообщить(КоличествоЧасов);

    КонецПроцедуры
```

Как получить это КоличествоЧасов с процедуры?
---
пользуйтесь не процедурой, а функцией с возвратом значения.
---
пользуйтесь не процедурой, а функцией с возвратом значения.
---
не обязательно

```1c
    этоПараметр = 1;

    ВотНашаПроцедура(этоПараметр);

    //тут этоПараметр уже 2

    Процедура ВотНашаПроцедура(этоПараметр)

    этоПараметр = 2;

    КонецПроцедуры
```
---
Если вам необходимо вернуть одно значение , то проще функцией, а если у вас несколько значений требуется вернуть , то так как написал (4)
---
А если вам необходимо получить некую информацию, например, о товаре? Вроде тоже несколько значений. Если будете использовать процедуру, то вам перед каждым вызовом процедуры потребуется проинициализировать необходимые данные и передать их в процедуру в качестве параметров, а там уже заполнять. Куда проще вызвать функцию, внутри которой уже подготовить, например, структуру, заполнить и вернуть ее в качестве результата выполнения функции. В отношении (4) процедуру удобно использовать в качестве именно "заполнятеля". Например, часто используется в процедурах параметр "ОписаниеОшибки", в которую пишут подробности ошибки, которая может произойти в процессе вызова данной процедуры
---
На самом деле все эти удобства не больше чем "Удобства", ибо абсолютно все можно выполнить либо Процедурой либо Функцией.

И все будет прекрасно работать, отличаться же будет только внешним видом...
Поэтому кому что и как нравится тот так и делает... Просто нравится и не более того!

https://infostart.ru/public/17097/
---
Ну зря вы так.
Как минимум функцию можно вызывать при отладке в Табло и получать результат.
С процедурой так не получится.

В том числе можно сделать функцию для сохранения данных в файл, и при отладке вызывать ее при необходимости в табло, передавая нужные данные.

Да и много где еще удобно использовать функции и нельзя использовать процедуры.
В СКД там, в Вычислить - из очевидного.
---
Табло в отладке - это совершенно не доводы )))))
Неужели вы думаете что функцию сделали чтобы отладка была проще ;-)))
ясно что вы сторонник функций;-) И кстати вы сходили по предложенной ссылке - там такие горячие споры... ))))))))))
Тогда можете пояснить а Зачем тогда нам вообще процедуры?
чего нельзя сделать функцией?
---
Вы говорите, что функция и процедура одно и тоже, я говорю, что нет.
Привел примеры отличий.
По моему мнению, это вполне себе доводы, что иногда функции использовать удобнее.
Собственно, ничего более.

Тогда можете пояснить а Зачем тогда нам вообще процедуры?
Нет смысла это обсуждать "Зачем", повлиять на это мы не можем никак.
Это уже есть.
А вот использовать можем.

И кстати вы сходили по предложенной ссылке - там такие горячие споры... ))))))))))
Да, открыл. Но в холивар ударяться не хочется))

(9) чего нельзя сделать функцией?
Обработчики событий.
---
чего нельзя сделать функцией?

Обработчики событий.
Можно, почему ж нельзя.
---
С методической точки зрения это дичь))
Но да, извратиться так и правда можно О_о
---
КоличествоЧасов = 0;
ПроверкаИДЗадачи(ИД, КоличествоЧасов)
Сообщить(КоличествоЧасов);
---
Очень грамотный ответ!
Все разложили по полочкам... Я не углублялся в анализ до таких глубин на самом деле ибо лень видимо родилась раньше... )))
Спасибо