Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
10 мая 2024, 16:44

Процедуры

Автор Domra, 22 апр 2013, 13:33

0 Пользователей и 1 гость просматривают эту тему.

Domra

У меня совсем чайницкий вопрос, для новичков. Возможно задам его косноязычно, но попробую
Скажите, пожалуйста, в теле кода такие записи:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
   ТабДок = Новый ТабличныйДокумент;
   ПечатьТорг12(ПараметрКоманды, ТабДок);
   ТабДок.Показать();
КонецПроцедуры

&НаСервере
Процедура ПечатьТорг12(ПараметрыВыполнения, ТабДок)
      .....
               Запрос.УстановитьПараметр("Ссылка", ПараметрыВыполнения);
                .....
КонецПроцедуры

В процедуре ПечатьТорг12 что означают ПараметрыВыполнения, ТабДок? Для чего они? Ведь не только они объявляются и вычисляются в этой процедуре?
В процедуре ОбработкаКоманды что означают ПараметрКоманды, ПараметрыВыполненияКоманды?
Почему в процедуре ОбработкаКоманды идет вызов процедуры ПечатьТорг12 с параметрами (ПараметрКоманды, ТабДок), а не (ПараметрыВыполнения, ТабДок)??? Для чего эта замена имен параметров?
Я правильно понимаю, что параметры ПараметрыВыполнения и ТабДок должны где-то как-то объявляться/вычисляться? Почему если ТабДок  объявляется в процедуре ОбработкаКоманды, то он пишется в скобках у процедуры ПечатьТорг12? По логике он, как и параметр ПараметрыВыполнения должен объявляться/вычисляться в этой же процедуре, ПечатьТорг12

MuI_I_Ika

Цитата: Domra от 22 апр 2013, 13:33В процедуре ПечатьТорг12 что означают ПараметрыВыполнения, ТабДок?

ТабДок - это табличный документ, который будет заполнен данными после выполнения процедуры.

ПараметрыВыполнения - очевидно, параметры, которые нужны при выполнении процедуры

Цитата: Domra от 22 апр 2013, 13:33Почему в процедуре ОбработкаКоманды идет вызов процедуры ПечатьТорг12 с параметрами (ПараметрКоманды, ТабДок), а не (ПараметрыВыполнения, ТабДок)??

Потому что эта переменная в процедуре ОбработкаКоманды объявлена как ПараметрКоманды.


Domra

Цитата: MuI_I_Ika от 22 апр 2013, 14:14
Цитата: Domra от 22 апр 2013, 13:33В процедуре ПечатьТорг12 что означают ПараметрыВыполнения, ТабДок?

ТабДок - это табличный документ, который будет заполнен данными после выполнения процедуры.

ПараметрыВыполнения - очевидно, параметры, которые нужны при выполнении процедуры

Цитата: Domra от 22 апр 2013, 13:33Почему в процедуре ОбработкаКоманды идет вызов процедуры ПечатьТорг12 с параметрами (ПараметрКоманды, ТабДок), а не (ПараметрыВыполнения, ТабДок)??

Потому что эта переменная в процедуре ОбработкаКоманды объявлена как ПараметрКоманды.

Переменная и параметр - это одно и то же?
Иными словами я могу в процедуре Траляля(Параметр1, Параметр2) вызвать процедуру ПечатьТорг12 и обозвать ее параметры так, как мне удобно: допустим, ПечатьТорг12(Вася1, Вася2)? При этом параметр Вася1 будет равен ПараметрыВыполнения, а Вася2 - ТабДок?

MuI_I_Ika

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

Это вопрос контекста видимости переменных. Одна процедура не видит переменные, используемые в другой процедуре, если они не используют общий контекст. Так что передавать можно переменные с любым названием.

Domra

Цитата: MuI_I_Ika от 22 апр 2013, 14:49
Это вопрос контекста видимости переменных. Одна процедура не видит переменные, используемые в другой процедуре, если они не используют общий контекст. Так что передавать можно переменные с любым названием.
А где задается такой контекст?
Спасибо большое за ответы!

Dethmontt

Есть Формальные параметры, а есть фактические!

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
   ТабДок = Новый ТабличныйДокумент;
   ПечатьТорг12(ПараметрКоманды, ТабДок); //Передача в процедуру "ПечатьТорг12" фактических параметров
   ТабДок.Показать();
КонецПроцедуры

&НаСервере
Процедура ПечатьТорг12(ПараметрыВыполнения, ТабДок) //Прием в процедуре формальных параметров
                                                    //Т.е. переменная ПараметрыВыполнения в процедуре "ПечатьТорг12" = переменной ПараметрКоманды в процедуре "ОбработкаКоманды"
      .....
               Запрос.УстановитьПараметр("Ссылка", ПараметрыВыполнения);
                .....
КонецПроцедуры

Добавлено: 22 апр 2013, 15:08


в данном случае передача таких параметров выполняется по ссылке (передается не значение, а область памяти переменной) т.е. изменение формальных Параметров приведет к изменению фактических параметров
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Domra

Цитата: Dethmontt от 22 апр 2013, 15:06

в данном случае передача таких параметров выполняется по ссылке (передается не значение, а область памяти переменной) т.е. изменение формальных Параметров приведет к изменению фактических параметров
А если передавать не по ссылке, то изменение формльных параметров к изменению фактических не приведет?
А каким образом можно изменить в данном случае формальный параметр?
Я понимаю, что вопросы примитивные, поэтому благодарю за терпение.

Dethmontt

Процедура ПечатьТорг12(Знач ПараметрыВыполнения, Знач ТабДок) //Вот так
//Причем теперь значение будет копироваться и занимать отдельную память


Вообще это все описано в документации к встроенному языку 1С
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Domra

Цитата: Dethmontt от 22 апр 2013, 15:42
Процедура ПечатьТорг12(Знач ПараметрыВыполнения, Знач ТабДок) //Вот так
//Причем теперь значение будет копироваться и занимать отдельную память


Вообще это все описано в документации к встроенному языку 1С
Спасибо. Я думаю, что абсолютно все описывается в руководствах, справочниках и документациях, да.

Dethmontt

Практически
Жмем в конфигураторе Ctrl+F1 - пишем на закладке Индекс - Процедура щелкаем два раза и читаем
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск