Тринадцатый |
Создание нескольких табличных частей (часть 1)При программировании на платформе V7 достаточно часто возникает задача создать несколько табличных частей документа (или справочника). Традиционно эта задача имеет несколько решений:
Итак, рассмотрим технологию организации второй табличной части документа (пример в виде маленькой конфигурации приложен к статье, ссылка внизу страницы). Первый шаг – создание служебного документа. Он не должен проводится, не должен задействовать компоненты платформы и, лучше всего, не должен принадлежать никакому журналу. Далее, в табличной части этого документа создаем необходимые реквизиты. Даже те, которые не должны отображаться. В поле "Синоним" указываем то название, которое должно отображаться в колонке. На рисунке 1 имеется реквизит табличной части "ОбъемПриДаннойТемп", который в колонке таблицы будет отображаться как "V при tc". В поле "Комментарий" можно указывать команды
форматирования таблицы (необычная фича, да?
После этих операций можно смело утверждать, что с форматированием отображаемой таблицы мы справились. Добавляем в родительский документ реквизит типа "Документ", и связываем его с только что созданным служебным документом. Через этот реквизит впоследствии мы сможем работать с дополнительной табличной частью.
В форму "главного" документа добавляем таблицу значений, при помощи которой будем отображать дополнительную табличную часть, и три кнопки – стандартные "добавить-редактировать-удалить". При желании можно определить и другие операции со строками дополнительной табличной части – копировать строку, и т.д.
Теперь нужно вставить необходимый код в глобальный модуль (см. конфигурацию-пример). Для манипуляций с табличной частью в родительский документ необходимо добавить всго лишь три (!) строки:
В процедуру передаются три параметра – Контекст, реквизит родительского документа, в котором содержится ссылка на служебный документ, и таблица значений на форме, которая отображает табличную часть. При открытии происходит форматирование таблицы и заполнение её данными. При закрытии происходит попытка удаления служебного документа (при необходимости). Второй параметр такой же, как и в первой функции:
Ну и собственно сохранение табличной части. Параметры такие же как и в первой процедуре:
Готово. Ну, за исключением ввода данных в таблицу. Для этого я позаимствовал из типовой конфигурации ИТРП универсальную процедуру ввода в таблицу значений (см. пример). Можно взять какую-нибудь другую универсальную процедуру ввода данных в ТЗ, или написать свою собственную – кому как больше нравится. Вот и все… Восьмерка лишается одного из своих
основных козырей? |
|