Редагування табличної частини об’єкта за допомогою СКД

Опис проблеми та передумови

Періодично доводиться вирішувати завдання зручного введення інформації користувачем за образом Excel, наприклад, найпростіший "План продажів" по місяцях, у якому горизонтально колонками розташовані місяці, а вертикально - якась аналітика. Раніше в типових конфігураціях 1С це завдання не було вирішено взагалі ніяк. Користувачеві пропонувалося заповнити звичайну табличну частину вручну, додаючи рядки та заповнюючи їх датами та необхідною аналітикою. Весь жах такого введення пояснювати не потрібно. Потім розробники галузевих рішень у "доескадешну" епоху здогадалися використати всю міць макета табличного документа і в "Підрядник будівництва" від "Імпульс ІВЦ" вже можна було спостерігати досить непогане рішення в блоці Бюджетування. Але код був неуніверсальний, складний і украй важко переносився інші схожі завдання. У цій статті я постараюся показати, як вирішити це завдання швидко, красиво та з мінімальними витратами за часом. Також код, який ви напишете за допомогою цього прикладу, ви зможете легко переносити на інші свої рішення.

Реалізація задачі

Нам знадобиться: сам об'єкт редагування (в даному випадку таблична частина), макет СКД, компонувальник налаштувань компонування даних, елемент управління "поле табличного документа", обробник "Обробка розшифрування".

Макет СКД є з'єднанням двох наборів даних, кожен з яких має тип "Наборданих-об'єкт":

допомогою

частини

Налаштування виводу прості та примітивні – це звичайна таблиця з підсумками:

єкта

У формі необхідно розмістити такі реквізити:

єкта
В

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

Даний код дозволяє визначити по якому саме осередку клікнув користувач. Далі, знаючи значення Номенклатури та Періоду можна знайти відповідний рядок у табличній частині та присвоїти у ньому реквізиту "Сума" потрібне значення, після чого можна програмно натиснути на кнопку "Оновити".

Продуктивність

Існує 2 способи безпосереднього введення значення при подвійному кліку по комірки:

1) Через діалогове вікно методами ВвестиЗначення() або ВвестиКількість()

- цей спосіб застосований у цьому прикладі.

Переваги не ускладнює код, висока продуктивність.

Недоліки: Вилітає додаткове вікно введення.

При такому способі введення в кожному осередку, як і при формуванні звичайного звіту на СКД, міститься лише якийсь об'єкт типу "ІдентифікаторРозшифровкиКомпонівкиДаних", який по суті є числом.

2) Безпосередньо в комірку, як у Excel.

Даний спосіб із застосуванням СКД можна побачити в ERP 2.0.

Переваги: ​​дуже красиво, у недосвідчених викликає миттєвий вау-ефект, вікон не вилітає.

Недоліки: низька продуктивність ускладнює код. Потрібно розуміти, що при такому способі введення в кожен осередок доведеться поміщати елемент управління "Поле введення". Осередків у полі табличного документа може бути кілька тисяч, тобто. кілька тисяч полів уведення. Висновок цього в полі табличного документа не буде швидким навіть у товстому клієнті.

1) Ніхто не забороняє розміщувати на формі стандартні налаштування компонувальника налаштувань.

2) Можна додавати до схеми СКД будь-яку іншуінформацію (за допомогою інших наборів даних), яка не міститься в табличній частині об'єкта, що редагується, але яка необхідна для прийняття рішення при введенні даних (наприклад властивості номенклатури).

3) Угруповання даних у таблиці також може бути як завгодно складним, залежно від розв'язуваного завдання.

4) Можна і треба використовувати всю міць СКД та можливостей умовного оформлення.