1с свернуть группу программно

«1С:Деньги 8» – это программа домашнего назначения для учета, анализа и управления личными или семейными финансами.

Мы не требуем от наших пользователей знаний бухгалтерского учета или каких-то специальных методик. Предполагается, что всему этому они научатся в процессе использования программы. Поэтому к юзабилити и простоте освоения программы предъявляются особые требования.

И хотя у нас нет таких сложных форм, как в конфигурациях для регламентированного или производственного учета, иногда и над простой формой приходится потрудиться, чтобы она стала действительно простой.

В этой статье мы покажем пример разработки одной из таких форм – формы документа «Мы вернули долг».

Разработка конфигурации «1С:Деньги 8» ред. 2.0 ведется на платформе 8.3 в интерфейсе Такси.

Причины изменений

В редакции 1.0 был один документ для возврата частных долгов, он реализовывал простой сценарий – вернуть часть долга, без процентов, комиссий и пр.

Но пользователей это не устраивало, так как кроме простого сценария часто бывают и более сложные: одновременно с возвратом долга необходимо заплатить комиссию или почтовые сборы; иногда для частных долгов начисляются проценты. Для таких случаев приходилось вводить несколько разных документов.

Еще один случай возврата долга – это погашение банковского кредита. В 1-й редакции для этого существовал отдельный сложный механизм из нескольких документов, который вызывал много затруднений. Здесь мы его рассматривать не будем. Скажу лишь, что этот механизм полностью исключен, т.к. в новой реализации работы с долгами необходимость в нем отпала.

Новая форма возврата долга

В редакции 2.0 частные долги и банковские кредиты мы объединили в одну сущность. Ведь отличаются они только тем, что по частным долгам чаще всего (но не всегда) отсутствуют проценты, комиссии и график платежей.

Новый документ «Мы вернули долг» реализует следующие сценарии (по убыванию частотности):

  1. Погашение простого долга. Необходимо ввести контакт, иногда указать конкретный долг, из какого кошелька заплатили, и сумму погашения;
  2. Погашение долга с процентами, комиссией. Кроме суммы основного долга надо указать проценты и/или комиссию и статьи расходов для них;
  3. Учет дополнительных расходов, например, комиссии платежной системы, через которую проводится платеж. Необходимо заполнить табличную часть «Дополнительные расходы».

На первое юзабилити-тестирование форма была представлена в следующем виде:

Вид формы при погашении простого долга:

Вид формы при погашении кредита с доп. расходами:

Пользователи легко справлялись с простым сценарием, но для более сложных обнаружились следующие проблемы:

  • Как бы мы не называли поле «Сумма основного долга» пользователи считают, что это общая сумма платежа. Вообще, пользователи обычно хотят ввести общую сумму платежа, а потом расшифровать ее: в том числе сумма основного долга, проценты и т.д.
  • Для пользователей неочевидно, что, если взвести флаг «Проценты, комиссия», то появятся скрытые до этого поля ввода;
  • Пользователи не догадываются перейти на вкладку «Дополнительные расходы» для ввода дополнительных комиссий и сборов, связанных с платежом. Вместо этого вводят дополнительные расходы с помощью других документов.

Чтобы решить эти проблемы, мы сделали следующее:

  • Добавили поле «Сумма платежа»;
  • Под суммой платежа разместили 3 свертываемые группы «В том числе». В заголовке групп отображается ключевая информация – суммы основного долга, процентов, комиссии, дополнительных расходов. Развернув группы, можно посмотреть или изменить суммы, статьи расходов, аналитику статей;
  • Информацию об остатке долга также разместили в свертываемой группе. В свернутом состоянии выводится остаток долга после проведения документа. Если же группу развернуть, то можно увидеть остаток до и после операции, и списать остаток долга.

После этих изменений форма стала нагляднее и компактнее, а количество кликов не увеличилось.

Благодаря свертываемым группам, всю ключевую информацию можно охватить одним взглядом, ничего не переключая и не прокручивая, а при необходимости можно углубиться в детали.

Мы снова провели юзабилити-тестирование.

Теперь пользователи не ошибаются при вводе сумм, легко находят таблицу «Дополнительные расходы».

Не оправдались наши опасения, что могут возникнуть трудности со свертываемыми группами.

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

Аналогично был изменен и похожий документ «Нам вернули долг». Новые формы документов включены в ознакомительную версию конфигурации 1С:Деньги 2.0.13.1.

На форме есть обычная группа с видом поведения «Свертываемая».
Есть галка «Свернута».
Хотелось при открытии формы, в зависимости от определенных условий, устанавливать соответствующий флаг «Свернута».

но среди свойств объекта нет ни свойств ни методов…

Оказывается «это сознательное решение».
это осознанное! РЕШЕНИЕ .

При разработке форм подборов и организации отборов для удобства работы может возникнуть задача по автоматическому раскрытию текущей группы.

  • упростить работу пользователю, выполнять 1 клик вместо 2;
  • явно дать понять ему, что есть вложенные группы.

В такой простой задаче может возникнуть стопор из-за особенностей динамического списка:

  • в метод Развернуть() таблицы формы следует передать идентификатор текущей строки (численное значение, согласно описанию в синтаксис-помощнике);
  • в динамическом списке, когда источник и основная таблица есть справочник, метод ТекущаяСтрока() возвращает ссылку этого справочника, к которому не применим метод ПолучитьИдентификатор().

Решение проблемы:

Первое что необходимо сделать: проверить или установить свойство «Отображение» у таблице в значение «Дерево»

Оказывается в метод Развернуть() в данном случае можно передавать эту ссылку, т.к. источник справочник, в котором нет дублей, следовательно система однозначно идентифицирует данную строку и сможет ее развернуть или свернуть. Аналогично работает и метод Развернут().

Код события при «АктивизацииСтроки»

тд = Элементы . Дерево . ТекущиеДанные ;
Если Не тд = Неопределено Тогда
Если Элементы . Дерево . Развернут ( Элементы . Дерево . ТекущаяСтрока ) = Ложь Тогда
Элементы . Дерево . Развернуть ( Элементы . Дерево . ТекущаяСтрока , Ложь ) ;
КонецЕсли ;
КонецЕсли ;

Для удобства пользователя добавим, авто раскрытие/сокрытие при выборе(двойном клике, по уже активной строке):

Код события «Выбор»

Процедура ДеревоВыбор ( Элемент , ВыбраннаяСтрока , Поле , СтандартнаяОбработка )

ТС = Элементы . Дерево . ТекущаяСтрока ;
Если Элементы . Дерево . Развернут ( ТС ) = Истина Тогда
Элементы . Дерево . Свернуть ( ТС ) ;
Иначе
Элементы . Дерево . Развернуть ( ТС , Ложь ) ;
КонецЕсли ;

Данная статья также применима к плану счетов, планам видов характеристик и расчетов (которые имеют иерархическую структуру).

Реклама — величайшее искусство XX века.

Оцените статью