KoderLine
KoderLine
Обслуговування i продаж
програмного забезпечення

Статті експертів

Корисна інформація

Як змінити табличну частину документа з форми зовнішньої обробки для керованого застосування (на прикладі програми «Управління торгівлею»)

0
251
05.10.2018 Ігор Торба

Зміст:

1. Створення зовнішньої обробки

2. Опис модуля форми

3. Перенесення змін в документ


На практиці часто виникає потреба реалізувати інструмент, за допомогою якого можна було б коригувати табличну частину документа з допоміжної форми, користуючись функціоналом додаткових зовнішніх обробок. Наприклад, для програми «Управління торгівлею» розробити аналог обробки табличної частини, що використовується в конфігурації «Управління торгівлею» (див. Рис.). При цьому конфігурація повинна знаходитися на підтримці без можливості зміни.




В інтернеті можна знайти багато прикладів розробки зовнішніх друкованих форм, обробок, звітів. Але опис реалізації схожою завдання знайти не так просто. По суті, необхідно виконати відкриття додаткової форми, встановити в ній показники, виконати розрахунки і результат перенести в документ. Всі зміни потрібно виконати тільки в формі без збереження в інформаційну базу, що дозволило б користувачеві відмовитися від запису.


У цій статті я опишу спрощений приклад розробки подібного функціоналу, що дозволяє змінити ціну товару на певний відсоток в документі реалізація товарів і послуг.


 


1. Створення зовнішньої обробки


Створюємо зовнішню обробку. У модулі зовнішньої обробки створюємо експортну процедуру «СведенияОВнешнейОбработке». У параметр «Вид» встановлюємо значення «ЗаполнениеОбъекта», настройку команди «Использование» встановлюємо «ОткрытиеФормы».



Створюємо форму обробки з необхідними елементами управління. У нашому випадку це - поле для введення відсотка і таблиця, в якій будуть відображені рядки табличній частини документа. Створюємо дві команди «Розрахувати» і «Перенести в документ». За кнопці «Розрахувати» ми будемо обчислювати в таблиці форми обробки нове значення ціни з урахуванням відсотка, а по кнопці «Перенести в документ» - заповнювати табличну частину документа новими значеннями.


 


   



2. Опис модуля форми



Перейдемо до опису модуля форми. Перш за все при відкритті форми нам необхідно заповнити таблицю даними табличній частині. Для цього ми використовуємо серверну процедуру «ПриСозданииНаСервере» в якій отримаємо посилання на документ і заповнимо реквізит «Товары» результатом запиту до табличній частині документа.


Посилання на документ можна отримати з параметра форми «ОбъектыНазначения». Цей параметр доступний зовнішнім обробкам в режимі «ОткритиеФормы». Параметр «ОбъектыНазначения» являє собою масив посилань обраних документів. У нашому випадку ми будемо запускати обробку тільки з форми документа, отже, масив об'єктів призначення буде містити тільки один елемент з індексом 0.

    

 




Ми описали заповнення форми вихідними даними і переходимо до опису функціоналу зміни значень табличній частині. На даному етапі ми реалізуємо завдання нашої обробки. Тут можна змінити кількість, ціну, ставку податку і т.д. Не забуваємо, що склад колонок реквізиту форми Товари теж повинен відповідати поставленому завданню. Я вибрав найпростіший варіант - зміна ціни.


 


 

3. Перенесення змін в документ



Переходимо до завершального етапу - перенесення змін в документ. Ось на цьому етапі і виникає питання: «Як це зробити?». Традиційно перенесення даних в документ здійснюється механізмом сповіщень, але в нашому випадку конфігурація повністю на підтримці з забороною змін, і немає можливості обробити нетипову ситуацію. Для вирішення цього завдання використовуємо властивість керованої форми «ВладелецФормы». Власником форми є форма нашого документа і встановлюється системою автоматично в режимі «ОткритиеФормы». Через властивість власник форми може отримати доступ до її основного реквізиту «Об'єкт», до складу якого входить колекція рядків табличної частини «Товары». Важливо пам'ятати, що властивість «ВладелецФормы» завжди доступно на клієнті відкритої форми.


З огляду на цю можливість, опрацюємо в циклі рядки документа і встановимо нові значення. Для пошуку відповідного рядка використовуємо реквізит «НомерСтроки».


Якщо ми змінюємо якесь числове значення, то частіше за все необхідно виконати перерахунок пов'язаних значень в рядку. Наприклад, змінюючи ціну необхідно перерахувати суму, суму ПДВ і щось ще. Для цього краще використовувати типові процедури перерахунку табличній частині. Перенесемо з документа в нашу форму типової обробник події зміни ціни - «ТоварыЦенаПриИзменении».



В даному прикладі ми використовували метод пошуку рядка з реквізиту «НомерСтроки». Але може виникнути ситуація, коли в процесі виконання обробки користувач випадково змінить порядок рядків у документі, тим самим порушивши відповідність рядків табличної частини документа номеру рядків таблиці форми нашої обробки. Для забезпечення гарантованого відповідності заблокуємо вікно документа на час проведення змін. Для цього в формі обробки встановимо для властивості «РежимОткрытияОкна» значення «Блокировать окно владельца».




Спеціаліст компанії ТОВ «Кодерлайн» 

Ігор Торба.


Добавить комментарий
Message Text*
Spam bot protection (CAPTCHA)
Load image