Доброго времени суток, сегодня продолжаем изучать платформу 1С.
Сегодня сделаем подсчет суммы автоматически, но уже не в модуле документа, а в общем модуле, который будет выполнять все действия и просто отправлять данные в сам документ.
Общий модуль - это модуль, предназначенный для написания в него программного кода и использования этого кода, как одновременно, так и по отдельности, разными объектами конфигурации.
То есть, один раз написав процедуру подсчета суммы, можно ее использовать везде и больше нигде ее не прописывать.
Давайте возьмем документ "Приход товара" (Рисунок 1).
В данном документе уже есть табличная часть, как раз в который будет приходить информация из общего модуля.
Перейдите на вкладку "Формы" и вы увидите, что данный документ еще не содержит форм никаких, а это значит, что не содержит в себе кода, то есть мы еще в него ничего не прописывали.
Давайте подготовим общий модуль, в котором будет происходит весь подсчет суммы для табличной части документа.
Откроем конфигуратор и раскроем ветвь "Общие" и там перейдем на строку "Общие модули" (Рисунок 2).
Создадим общий модуль под названием "Серверные процедуры" и установим галочки (Рисунок 3).
Посмотрите внимательно на рисунок 3, а конкретно на галочки, которые указаны стрелками. Галочка "Сервер" и "Вызов сервера" должны стоять обязательно, так как без них документ не сможет вызывать этот общий модуль.
Теперь в этом модуле необходимо прописать код для автоподсчета суммы (Рисунок 4).
Нужно разобрать этот программный код.
Листинг 1. Автоподсчет суммы в общем модуле
1. Процедура АвтоСумма(СтрокаТабличнойЧасти)Экспорт
2. СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
3. КонецПроцедуры
Первая строка - это название процедуры, в скобках указывается переменная, в которую помещается объект, содержащий данные текущей строки документа, которую требуется посчитать.
Так же в этой строке есть важное служебное слово "Экспорт". Данное слово обязательно нужно указывать в общих модулях, так как оно дает возможность вызывать данную процедуру.
Вторая строка - это обращение к табличной части и сам подсчет суммы.
Третья строка - это окончание процедуры.
Теперь необходимо перейти непосредственно в сам документ "Приход денег", создать форму документа (Рисунок 5).
Теперь необходимо выбрать те элементы, для которых мы будем вызывать общую процедуру. Таких элементов несколько: Количество, Цена.
Для этих элементов нам нужно создать процедуру, которая будет связана с событием. Событие - ПриИзменении. Это событие мы создавали, когда прописывали программный код при подсчете суммы в модуле документа - нужно использовать это же событие.
Создадим событие при изменении для столбца "Количество" (Рисунок 6).
И там пропишем программный код (Рисунок 7).
В итоге код должен быть следующим (Листинг 2 ):
Листинг 2. Программный код
&НаКлиенте
Процедура ПриходТовараКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.ПриходТовара.ТекущиеДанные;
СерверныеПроцедуры.АвтоСумма(СтрокаТабличнойЧасти);
КонецПроцедуры
Теперь таким же образом нужно сделать и для столбца "Цена", то есть создать событие "ПриИзменении" и в модуле прописать программный код и в итоге код будет для двух событий следующим (Рисунок 8).
Теперь осталось перейти в режим пользователя и проверить подсчет суммы для данного документа. Все работает (Рисунок 9).
Таким образом, создав один общий модуль и прописав там одну общую процедуру можно не прописывать этот код во всех документах, где необходимо делать подсчет суммы.
Данный способ работает не только для подсчета суммы, но и для всех остальных процедур, которые будут необходимы разработчику для улучшения своей программы.
На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том, что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!
Всем спасибо.
Задать вопросы, которые у вас возникли вы можете, написав комментарий или вступить в группу и задать там свой вопрос, а так же можно на канале нажать кнопку "Написать сообщение".
Ссылка для вступления телеграм-канал - t.me.Apiscourses
Подписаться в группу ВКонтакте
Или написать на электронную почту - awesome.razrab@yandex.ru
Прошлые уроки:
Введение Урок 1 Урок 2 Урок 3 Урок 4 Урок 5 Урок 6 Урок 7 Урок 8 Урок 9 Урок 10 Урок 11 Урок 12 Урок 13 Урок 14 Урок 15 Урок 16 Урок 17 Урок 18 Урок 19 Урок 20 Урок 21 Урок 22 Урок 23 Урок 24 Урок 25 Урок 26 Урок 27 Урок 28 Урок 29 Урок 30 Урок 31 Урок 32 Урок 33 Урок 34 Урок 35 Урок 36 Урок 37 Урок 38 Урок 39 Урок 40 Урок 41 Урок 42 Урок 43 Урок 44 Урок 45
На этом все. Жду Вас на следующем занятии.
P.S. Подписывайтесь на мой канал :-)
программирование программирование 1с 1с предприятие обучение онлайн обучение 1с