Я только начал проходить обучение, где и что создавать я понимаю. Но совсем не понимаю код, где и что означает, по какой последовательности его писать. Пример приведен ниже. Буду рад какой-либо информации))
Ну ок, сам не знаю, нафига я на это трачу время, ну да ладно)
Процедура - блок кода, который может вызываться как вручную, если прописать соответствующее название процедуры, так и автоматически при выполнении каких либо действий, в данном случае при изменении таблицы Товары.
ЗначениеТекущегоЭлемента - просто переменная, ее название может быть любым, как придумает программист. В эту переменную записывают значения текущей строки таблицы Товары, чтобы в дальнейшем этим значением пользоваться. Можно этого было бы и не делать, а в дальшейшем просто так и писать вместо ЗначениеТекущегоЭлемента - Элемент.ТекущиеДанные.
Далее идет условный оператор "Если". Если условие выполняется, в данном случае - если в изменяемой строке указана номенклатура, то выполнится код после слова "Тогда", если номенклатура будет пустая, то код после слова "Иначе".
При выполнении условия получаем цену номенклатуры. Цена у нас является реквизитом справочника "Номенклатура", но просто так мы к нему обратиться не можем, так как код выполняется на клиенте*. Поэтому вызываем функцию, которая на сервере эту самую цену получит и вернет обратно. Функция так же как и процедура может быть вызвана через указание ее имени, только в отличие от процедуры она еще возвращает какое-либо значение. В данном случае мы ей передали номенклатуру, она вернула цену.
Ну а дальше полученная цена подставляется в реквизит текущей строки, затем пересчитывается общая сумма.
Если Номенклатура была не заполнена, цена с суммой обнуляются.
*Перед каждой процедурой и функцией указывается, где она будет выполнятся (&НаКлиенте, &НаСервере, ...). Это довольно сложный вопрос, но есть отличная статья, где максимально понятно про это рассказываается:
Ну ок, сам не знаю, нафига я на это трачу время, ну да ладно)
Процедура - блок кода, который может вызываться как вручную, если прописать соответствующее название процедуры, так и автоматически при выполнении каких либо действий, в данном случае при изменении таблицы Товары.
ЗначениеТекущегоЭлемента - просто переменная, ее название может быть любым, как придумает программист. В эту переменную записывают значения текущей строки таблицы Товары, чтобы в дальнейшем этим значением пользоваться. Можно этого было бы и не делать, а в дальшейшем просто так и писать вместо ЗначениеТекущегоЭлемента - Элемент.ТекущиеДанные.
Далее идет условный оператор "Если". Если условие выполняется, в данном случае - если в изменяемой строке указана номенклатура, то выполнится код после слова "Тогда", если номенклатура будет пустая, то код после слова "Иначе".
При выполнении условия получаем цену номенклатуры. Цена у нас является реквизитом справочника "Номенклатура", но просто так мы к нему обратиться не можем, так как код выполняется на клиенте*. Поэтому вызываем функцию, которая на сервере эту самую цену получит и вернет обратно. Функция так же как и процедура может быть вызвана через указание ее имени, только в отличие от процедуры она еще возвращает какое-либо значение. В данном случае мы ей передали номенклатуру, она вернула цену.
Ну а дальше полученная цена подставляется в реквизит текущей строки, затем пересчитывается общая сумма.
Если Номенклатура была не заполнена, цена с суммой обнуляются.
*Перед каждой процедурой и функцией указывается, где она будет выполнятся (&НаКлиенте, &НаСервере, ...). Это довольно сложный вопрос, но есть отличная статья, где максимально понятно про это рассказываается:
https://курсы-по-1с.рф/news/2017-03-09-how-server-call-works...