Книга: Пример быстрой разработки мобильного приложения на платформе «1С:Предприятие 8.3»
Назад: Начнем «программировать»
Дальше: Улучшаем интерфейс

Дорабатываем функционал рабочего стола

Закрываем приложение в пользовательском режиме и возвращаемся в конфигуратор, открываем общую форму РабочийСтол.

06-48.png

Рис. 6-48. Общая форма РабочийСтол

 

Переключаемся в модуль формы. Сейчас он абсолютно пуст.

06-49.png

Рис. 6-49. Модуль формы РабочийСтол

Для каждой таблицы формы (а их у нас две) создадим по одной процедуре их заполнения.

Начнем с таблицы Остатки. По условиям задачи она должна отображать пользователю текущие (актуальные) остатки в кошельках. Назовем процедуру ЗаполнитьОстатки(). Внутри процедуры нужно будет обратиться к регистру Кошельки и получить оттуда актуальные остатки. Не вдаваясь в особенности методов регистров и синтаксиса встроенного языка, решение нашей задачи выглядит следующим образом – см. рис. 6-50:

НаСервере 

Процедура ЗаполнитьОстатки() Остатки.Загрузить(РегистрыНакопления.Кошельки.Остатки()); 

КонецПроцедуры

Рис. 6-50. Процедура ЗаполнитьОстатки()

Метод «РегистрыНакопления.Кошельки.Остатки()» обращается к регистру Кошельки и получает оттуда актуальные остатки.

Метод «Остатки.Загрузить()» помещает полученные из регистра данные в таблицу Остатки.

При желании можно более подробно изучить особенности использованных в процедуре методов, обратившись к встроенному в платформу 1С:Предприятие синтаксис-помощнику. Для этого достаточно установить курсор на интересующий метод и нажать Ctrl+F1.

Для второй таблицы Затраты пишем похожий код, только получать будем не остатки, а обороты, и не из регистра Кошельки, а из регистра Затраты. Процедуру назовем ЗаполнитьЗатраты() – см. рис. 6-51:

НаСервере 

Процедура ЗаполнитьЗатраты() Затраты.Загрузить(РегистрыНакопления.Затраты.Обороты());

 КонецПроцедуры

Рис. 6-51. Процедура ЗаполнитьЗатраты()

Здесь метод «РегистрыНакопления.Затраты.Обороты()» обращается к регистру Затраты и получает оттуда текущие обороты по использованным статьям.

Метод «Затраты.Загрузить()» помещает полученные из регистра данные в таблицу Затраты.

Осталась самая малость – как-то инициировать выполнение только что созданных процедур. Для этого воспользуемся предопределенной для формы процедурой, срабатывающей на ее открытие - ПриОткрытии(). Здесь писать придется еще меньше – воспользуемся встроенным механизмом активации таких процедур. Нажимаем кнопку Процедуры и функции (Ctrl+Alt+P).

06-52.png

Рис. 6-52. Процедуры и функции

К слову, этот механизм позволяет быстро найти и пользовательские процедуры или функции – на рис. 6-52 как раз видны в самом верху две наши.

В списке ниже находим процедуру <ПриОткрытии> и дважды кликаем по ней мышью или жмем кнопку Перейти.

06-53.png

Рис. 6-53. Выбор ПриОткрытии

В появившемся диалоге создания процедуры выбираем вариант Создать на клиенте и нажимаем ОК.

06-54.png

Рис. 6-54. Варианты создания процедуры

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

06-55.png

Рис. 6-55. ПриОткрытии

Осталось только добавить в эту процедуру вызов двух, созданных ранее для обновления табличек. Имена процедур можно просто скопировать, не забывая скобки после них и завершающий строку символ «точка с запятой» («;»).

А можно воспользоваться встроенный в текстовый редактор конфигуратора механизм автозаполнения, набрав первые буквы нужной нам процедуры, нажав на клавиатуре комбинацию Ctrl+Пробел, выбрав в появившемся списке нужную и нажав Enter.

В итоге код процедуры ПриОткрытии() должен выглядеть аналогично изображенному на рис. 6-56.

НаКлиенте 

Процедура ПриОткрытии(Отказ) 

ЗаполнитьОстатки(); ЗаполнитьЗатраты();

 КонецПроцедуры

Рис. 6-56. Заполненная процедура ПриОткрытии()

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

06-57.png

Рис. 6-57. Заполнение таблиц

После запуска видно, таблица остатков по кошелькам заполнилась и отражает корректные данные. Таблица оборотов пока пуста. Зафиксируем еще одну трату – например, обед на сумму 300 рублей.

Создаем новый документ Расход.

06-58.png

Рис. 6-58. Создание нового документа Расход

В открывшемся окне нового документа заполняем поле Сумма и переходим к полю Кошелек.

06-59.png

Рис. 6-59. Заполнили сумму, перешли к кошельку

Будем считать, что за обед расплачивались наличными. В поле Кошелек выбираем уже существующий элемент Наличные. Можно просто начать набирать нужное слово, можно воспользоваться кнопкой быстрого выбора.

06-60.png

Рис. 6-60. Выбор кошелька

В поле Цель при попытке выбора нам будет предложено выбрать тип значения – Кошелек или Статья. Так как мы фиксируем расход – выбираем Статья.

06-61.png

Рис. 6-61. Выбор типа цели

В открывшемся списке кошельков добавляем в группу Затраты новый элемент – Обед. И после сохранения, выбираем его.

06-62.png

Рис. 6-62. Статья цели

По желанию заполняем поле Комментарий и сохраняем созданный документ в системе с регистрацией записей в регистрах – кнопка Провести и закрыть.

06-63.png

Рис. 6-63. Сохранение и проведение документа

Возвращаемся на рабочий стол и обнаруживаем, что таблица оборотов по прежнему пуста.

06-64.png

Рис. 6-64. Рабочий стол

При этом, если проверить список записей регистра Затраты (через системное меню Все функции…) – там будет все заполнено.

06-65.png

Рис. 6-65. Регистр Затраты

Это ошибка? Нет. Дело в том, что обновление таблиц рабочего стола мы привязали к событию «при открытии» – т.е. таблицы будут обновляться момент открытия формы рабочего стола. А в данный момент времени открытия как такового не случилось – мы просто вернулись после создания документа к уже открытой форме.

Чтобы инициировать обновление табличек можно перезапустить пользовательский режим – закрыть приложение и запустить его заново. Либо закрыть форму рабочего стола и тут же открыть ее заново.

06-66.png

Рис. 6-66. Закрыть рабочий стол

06-67.png

Рис. 6-67. Открыть рабочий стол

Вот, теперь все отображается как надо – все данные в табличках актуальны. Можно считать, что поставленная в начале мастер-класса задача реализована.

Но согласитесь, требовать от пользователя перезапуска приложения только ради обновления данных в табличках – это слишком. Кроме этого, набор доступных пользователю средств сейчас довольно примитивен. А к таблицам регистров и вовсе нужно лазить через системное меню. Юзабилити нашего решения хромает на обе ноги. Тем более, на мобильном устройстве вряд ли у пользователя возникнет желание постоянно что-то перезапускать и копаться в дебрях системных настроек.

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

 

Назад: Начнем «программировать»
Дальше: Улучшаем интерфейс

Удивленный пользователь
Спасибо огромное за такой развернутый и полный мануал !!!!!
Антон
Перезвоните мне пожалуйста по номеру. 8 (904) 555-73-24 Антон