Додаємо додаткове поле до документ-список

Залишки у списку документів

Вирішимо таке завдання: у списку документів "Замовлення постачальнику" нам необхідно додати нову колонку "Залишок на замовлення", яка відображатиме залишок для документа в регістрі накопичення "Замовлення постачальнику" на поточну дату.

поле

Реалізувати це необхідно у конфігурації "Управління виробничим підприємством" версії 1.3.

Неправильний шлях

Розглянемо "очевидний" шлях, він же найпростіший. Більшість програмістів-початківців роблять саме так. У табличного поля форми, яке прив'язане до реквізиту форми з типом "ДокументСписок" є подія "При ВиводіРядки". У ньому напишемо Запит до залишків на замовлення для рядка, що виводиться, і отриманий результат присвоїмо осередку поточного рядка в колонці "Залишок". Ось так буде виглядати код оброблювача події "ПриВиводіРядки":

Справу зроблено! Завдання вирішено! Але! Подія "ПриВиводеРядки" викликається для кожного рядка окремо. Тобто, якщо в список виводиться 30 рядків, запит буде формуватися стільки ж разів! Може, є інший шлях?

Оптимальне вирішення

Інший шлях є. Оптимальне рішення криється у використанні події "При отриманні даних". Ця подія викликається один раз, коли відбувається отримання порції даних списком документів. У контексті цієї події доступні дані, які отримала платформа. Тому ми можемо їх опрацювати одним запитом. Ось програмний код обробника "При отриманні даних" для вирішення цього завдання:

Результат роботи такий самий, як і для варіанта з використанням події "ПриВиводеРядки", але є одне АЛЕ.

Звертайте увагу

Найголовніша відмінність полягає у швидкості роботи. Ось порівняння часу виконання для обох варіантів розв'язання задачі:

додаємо

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