В режиме «1С:Предприятие». Одна процедура. для обработки нескольких событий. В режиме «Конфигуратор». Общий модуль
В режиме «1С: Предприятие» Теперь посмотрим, как это работает. Запустим «1С: Предприятие» в режиме отладки, откроем список документов Приходные накладные и откроем любой из двух созданных нами документов. Если теперь вы поменяете количество в любой строке документа, то сумма в строке будет пересчитана автоматически.
Одна процедура для обработки нескольких событий Итак, мы убедились, что при изменении количества в любой строке документа Приходная накладная сумма в этой строке пересчитывается автоматически. Замечательно. Но теперь хотелось бы и для поля Цена сделать то же самое. А если заглянуть вперед, то мы увидим, что подобное автома- тическое заполнение поля Сумма может нам понадобиться и в других документах. Поэтому лучше будет поместить расчет суммы в некоторое «обще- доступное» место, чтобы разные документы, имеющие аналогичные реквизиты табличной части, могли использовать этот алгоритм. Для описания таких «общедоступных» мест служат объекты конфи- гурации Общий модуль, расположенные в ветке Общие } Общие модули. Процедуры и функции, содержащиеся в этих модулях, могут быть доступны для любых объектов конфигурации. Поэтому создадим общий модуль и перенесем в него нашу процедуру расчета суммы. А в документе просто оставим вызовы этой процедуры из общего модуля.
В режиме «Конфигуратор» Общий модуль Добавим объект конфигурации Общий модуль. Для этого раскроем ветвь Общие в дереве объектов конфигурации, нажав на + слева от нее. Затем выделим ветвь Общие модули и нажмем кнопку Добавить в командной панели окна конфигурации (рис. 4. 24).
Рис. 4. 24. Создание общего модуля в дереве объектов конфигурации
Откроется окно для ввода текста модуля и окно палитры его свойств. Дадим имя модулю – РаботаСДокументами и установим в его свойствах флажок Клиент (управляемое приложение), а флажок Сервер снимем. Это означает, что экземпляры этого модуля будут скомпилированы в контексте тонкого клиента и в контексте веб-клиента (рис. 4. 25).
Внесем в модуль следующий текст (листинг 4. 2). листинг 4. 2. Процедура «РассчитатьСумму()» Прокомментируем этот код. В процедуру РассчитатьСумму() мы передаем переменную СтрокаТабличнойЧасти, которую мы опре- делили в обработчике события ПриИзменении поля Количество. Она содержит данные редактируемой строки табличной части документа ПриходнаяНакладная. Теперь, используя эту переменную, мы можем получить доступ к данным колонок табличной части и рассчитать сумму как произ- ведение цены на количество. Ключевое слово Экспорт в заголовке процедуры указывает на то, что эта процедура может быть доступна из других программных модулей. Теперь в модуле нашей формы изменим текст обработчика Материа- лыКоличествоПриИзменении (листинг 4. 3). листинг 4. 3. Процедура «МатериалыКоличествоПриИзменении()» Мы видим, что первая строка процедуры осталась без изменений. А во второй строке вместо непосредственного расчета суммы мы вызываем процедуру РассчитатьСумму() из общего модуля РаботаСДокументами и передаем ей в качестве параметра текущую строку табличной части. Проверим, как это работает, и убедимся, что ничего не изменилось. Теперь осталось и для поля Цена установить такой же обработчик. Так как однажды мы уже написали в модуле формы нужную нам процедуру, то мы просто могли бы сопоставить ее также и другому событию другого элемента управления, расположенного в форме. Однако стандарты разработки конфигураций фирмы «1С» не допускают такого решения.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|