1с программное управление интерфейсом управляемое приложение. Управляемое приложение. Как открыть форму и задать на ней отбор

И Data Transfer Object к структуризации кода, управляемой формы в среде 1С 8.2.

Введение

Начнем с небольшого описания понятия «управляемая форма» и связанных концепций платформы 1С. Знатоки платформы могут пропустить этот раздел.

В 2008 году стала доступна новая версия платформы 1С: Предприятие 8.2 (далее Управляемое приложение), которая полностью меняет весь слой работы с интерфейсом. Сюда относится и командный интерфейс, и формы, и оконная система. При этом не только меняется модель разработки пользовательского интерфейса в конфигурации, но и предлагается новая архитектура разделения функциональности между клиентским приложением и сервером.
Управляемое приложение поддерживает следующие типы клиентов:

  • Толстый клиент (обычный и управляемый режим запуска)
  • Тонкий клиент
  • Веб-клиент
В управляемом приложении используются формы, построенные на новой технологии. Они называются Управляемые формы . Для облегчения перехода прежние формы (т.н. Обычные формы) также поддерживаются, но их функциональность не развивается и они доступны только в режиме запуска толстого клиента.
Основные отличия управляемых форм для разработчика:
  • Декларативное, а не «по пикселям» описание структуры. Конкретное размещение элементов выполняется системой автоматически при отображении формы.
  • Вся функциональность формы описывается в виде реквизитов и команд . Реквизиты – это данные, с которыми работает форма, а команды – выполняемые действия.
  • Форма выполняется и на сервере и на клиенте.
  • В контексте клиента, недоступны практически все прикладные типы, и соответственно невозможно изменить данные в информационной базе.
  • Для каждого метода или переменной формы обязательно должна быть указана директива компиляции , определяющая, место выполнения (клиент или сервер) и доступ к контексту формы.
Перечислим директивы компиляции методов формы:
  • &НаКлиенте
  • &НаСервере
  • &НаСервереБезКонтекста
  • &НаКлиентеНаСервереБезКонтекста
Проиллюстрируем перечисленное. На скриншоте пример управляемой формы и ее модуля в режиме разработки. Найдите декларативное описание, реквизиты, директивы компиляции и т.д.

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

Обозначим проблему

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

Рассмотрим структуру кода (модуль формы) в нескольких формах одной типовой конфигурации и попробуем найти закономерности.
Под структурой будем понимать секции кода (чаще всего это блоки комментариев) выделенные разработчиком для группировки методов и директивы компиляции этих методов.
Пример 1:
Секция обработчиков событий Метод – наклиенте Метод – насервере Метод - наклиенте Секция служебных процедур и функций Вспомогательные функции управления вводом
Пример 2:
Служебные процедуры и функции Документы оплаты Ценности Обработчики событий
Пример 3:
Служебные процедуры на сервере Служебные процедуры на клиенте Служебные процедуры на сервере без контекста Обработчики событий шапки Обработчики событий команд
Пример 4:
Процедуры общего назначения Обработчики событий формы Процедуры подсистемы «контактная информация»
По сути, структура кода отсутствует, или мягче говоря, она аналогична тому, что было в формах 8.1:

  • Неинформативные слова «Общие, Служебные, Вспомогательные».
  • Робкие попытки разделить клиентские и серверные методы.
  • Часто методы группируются по интерфейсным элементам «Работа с табличной частью Товары, Контактной информацией».
  • Произвольное расположение методов и групп кода. Например, Обработчики событий могут быть в одной форме вверху, в другой внизу, в третьей вообще не выделены и т.д.
  • И не будем забывать, что это все в рамках одной конфигурации.
  • Да бывают конфигурации, в которых слова «Общие, Служебные, Вспомогательные» всегда находятся на одних и тех же местах но…
Зачем нужна структура кода?
  • Упрощение сопровождения.
  • Упрощение обучения.
  • Фиксация общих/важных/удачных принципов.
  • …ваш вариант
Почему существующий стандарт разработки от фирмы 1С не помогает?
Посмотрим опубликованные на дисках ИТС и в различных «Пособиях разработчика…» принципы, рекомендуемые при написании управляемой формы.
  • Минимизируйте число серверных вызовов.
  • Максимум вычислений на сервере.
  • Неконтекстные вызовы сервера быстрее контекстных.
  • Программируйте с учетом клиент-серверного взаимодействия.
  • и т.п.
Это лозунги, абсолютно верные, но как их реализовать? Как минимизировать число вызовов, что значит программировать в клиент-серверном режиме?

Шаблоны проектирования или мудрость поколений

Клиент-серверное взаимодействие используется в различных программных технологиях не один десяток лет. Ответ на обозначенные в предыдущем разделе вопросы давно известен и суммирован в двух базовых принципах. Слово Мартину Фаулеру , его описание данных принципов:
  • каждый объект, потенциально предназначенный для удаленного доступа, должен иметь интерфейс с низкой степенью детализации , что позволит максимально уменьшить количество вызовов, необходимых для выполнения определенной процедуры. … Вместо того, чтобы запрашивать счёт и все его пункты отдельно, надо считать и обновить все пункты счёта за одно обращение. Это влияет на всю структуру объекта.…Запомните: интерфейс удаленного доступа не содержит логики домена .
  • …если бы я был заботливой мамой, то обязательно сказал бы своему ребенку: «Никогда не пиши объекты переноса данных!» В большинстве случаев объекты переноса данных представляют собой не более чем раздутый набор полей … Ценность этого омерзительного монстра состоит исключительно в возможности передавать по сети несколько элементов информации за один вызов - прием, который имеет большое значение для распределенных систем.
Примеры шаблонов в платформе 1С
Прикладной программный интерфейс доступный разработчику при разработке управляемой формы, содержит много примеров данных принципов.
Например метод ОткрытьФорму(), типичный «огрубленный» интерфейс.
ПараметрыОткрытия = Новый Структура("Параметр1, Параметр2, Параметр3", Значение1, Значение2, Значение3); Форма = ОткрытьФорму(ИмяФормы, ПараметрыОткрытия);
Сравните с принятым в v8.1 стилем.
Форма = ПолучитьФорму(ИмяФормы); Форма.Параметр1 = Значение1; Форма.Параметр2 = Значение2; Форма.Открыть();

В контексте управляемой формы множество «Объектов переноса данных». Можно выделить системные и определяемые разработчиком .
Системные моделируют на клиенте прикладной объект, в виде одного или несколько элементов данных формы. Создать их вне привязки к реквизитам формы нельзя.

  • ДанныеФормыСтруктура
  • ДанныеФормыКоллекция
  • ДанныеФормыСтруктураСКоллекцией
  • ДанныеФормыДерево
Преобразование системных объектов переноса данных в прикладные типы и обратно выполняется методами:
  • ЗначениеВДанныеФормы()
  • ДанныеФормыВЗначение()
  • КопироватьДанныеФормы()
  • ЗначениеВРеквизитФормы()
  • РеквизитФормыВЗначение()
Часто явное преобразование используется при адаптации существующего решения. Методы могут ожидать (использовать особенности) входные параметры, например ТаблицаЗначений, а не ДанныеФормыКоллекция, или метод был определен в контексте прикладного объекта и стал недоступен для прямого вызова из формы.
Пример 1С v8.1:
// на клиенте в контексте формы ЗаполнитьКэшПользователей(ПодразделениеСсылка)
Пример 1С v8.2:
// на сервере в контексте формы ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ЗаполнитьКэшПользователей(ПодразделениеСсылка); ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");

Объекты переноса данных, структура которых определяется разработчиком это небольшое подмножество типов доступных и на клиенте и на сервере. Наиболее часто в качестве параметров и результатов методов «огрубленного» интерфейса используются:

  • Примитивные типы (строка, число, булево)
  • Структура
  • Соответствие
  • Массив
  • Ссылки на прикладные объекты (уникальный идентификатор и текстовое представление)
Пример: метод принимает список заказов для изменения статуса и возвращает клиенту описание ошибок.
&НаСервереБезКонтекста Функция СерверИзменитьСтатусЗаказов(Заказы, НовыйСтатус) Ошибки = Новый Соответствие(); // [заказ][описание ошибки] Для Каждого Заказ Из Заказы Цикл НачатьТранзакцию(); Попытка ДокОб = Заказ.ПолучитьОбъект(); …. другие действия, возможно не только с заказом… Исключение ОтменитьТранзакцию(); Ошибки.Вставить(Заказ, ОписаниеОшибки()); КонецПопытки; КонецЦикла; Возврат Ошибки; КонецФункции // СерверИзменитьСтатусЗаказов()

Структурируем код

Главные цели, которые должен отражать модуль управляемой формы и подходы к решению.
  • Четкое разделение клиентского и серверного кода. Не будем забывать, в момент выполнения это два взаимодействующих процесса, в каждом из которых существенно отличается доступный функционал.
  • Четкое выделение интерфейса удаленного доступа, какие методы сервера можно вызывать с клиента, а какие нельзя? Названия методов удаленного интерфейса начинаются с префикса «Сервер». Это позволяет, читая код сразу видеть переход управления на сервер, и упрощает использование контекстной подсказки. Отметим, что официальная рекомендация (ИТС) предлагает именовать методы с постфиксами, например, так ИзменитьСтатусЗаказовНаСервере(). Однако повторим не все серверные методы можно вызывать с клиента, и поэтому более важна логическая доступность, а не место компиляции. Поэтому префиксом «Сервер» отмечаем только методы доступные для клиента, метод-пример назовем СерверИзменитьСтатусЗаказов().
  • Удобочитаемость. Дело вкуса, принимаем порядок, когда модуль начинается с процедур создания формы на сервере и методов удаленного доступа.
  • Сопровождаемость. Должно быть однозначно определено место для добавления нового кода. Важный момент, автоматически создаваемые конфигуратором заготовки методов добавляются в конец модуля. Т.к чаще всего автоматически создаются обработчики событий элементов формы, то соответствующий блок расположен последним, чтобы не перетаскивать каждый обработчик в другое место модуля.
Ниже приведена базовая структура модуля, реализующая перечисленные цели.
  • Графический вариант – наглядно показывает основной поток выполнения.
  • Текстовый вариант - это пример оформления шаблона для быстрой вставки структуры в новый модуль формы.

//////////////////////////////////////////////////////////////////////////////// // <(c) Автор="" Дата=""/> // <Описание> // // //////////////////////////////////////////////////////////////////////////////// // ПЕРЕМЕННЫЕ МОДУЛЯ //////////////////////////////////////////////////////////////////////////////// // НА СЕРВЕРЕ //******* СОБЫТИЯ НА СЕРВЕРЕ ******* &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //Вставить содержимое обработчика КонецПроцедуры //******* ИНТЕРФЕЙС УДАЛЕННОГО ДОСТУПА ******* //******* БИЗНЕС-ЛОГИКА НА СЕРВЕРЕ ******* //////////////////////////////////////////////////////////////////////////////// // ОБЩИЕ МЕТОДЫ КЛИЕНТА И СЕРВЕРА //////////////////////////////////////////////////////////////////////////////// // НА КЛИЕНТЕ //******* БИЗНЕС-ЛОГИКА НА КЛИЕНТЕ ******* //******* КОМАНДЫ ******* //******* СОБЫТИЯ НА КЛИЕНТЕ ******* //////////////////////////////////////////////////////////////////////////////// // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ

Связанные вопросы
В заключение обозначим несколько направлений, о которых полезно подумать при программировании клиент-серверного взаимодействия.
  • Варианты реализации интерфейса удаленного доступа . Асинхронность, степень детализации...
  • Кэширование. В 1С приняли неудачное архитектурное решение, введя кэширование только на уровне вызова методов общих модулей и не предоставив возможности управления (время актуальности, сброс по требованию).
  • Неявные серверные вызовы . Не забывайте о технологических особенностях, многие «безобидные» операции на клиенте провоцируют платформу на обращение к серверу.

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

Система представляет собой технологическую платформу и прикладные решения (конфигурации), разработанные на базе этой платформы.

Платформа «1С:Предприятие» – это предметно-ориентированная среда разработки (также и среда работы с базой) для решения задач, связанных с автоматизацией предприятий.

Конфигурация 1C – прикладное решение, созданное с помощью 1С платформы, которое содержит описание структуры таблиц базы данных и алгоритмы работы с этими данными.

Интеграция системы СБИС поддерживается практически со всеми версиями технологической платформы 1С (за исключением самых ранних): 7.7, 8.1, 8.2 и 8.3. Основной особенностью системы 1С:Предприятие является ее конфигурируемость. Каждая конфигурация ориентирована на определенные типы предприятий и классы решаемых задач («Бухгалтерия предприятия», «Управление производственным предприятием», «Управление торговлей» и др.).

Конфигурации часто делятся на две группы - «типовые» и «нетиповые». «Типовая» конфигурация - это тиражное решение, которое распространяется «в коробке». Для типовых конфигураций интеграция со СБИС обычно происходит без каких-либо дополнительных настроек.

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

«Самописная» конфигурация, или конфигурация «с нуля» - конфигурация, разработанная независимо от фирмы 1С, обычно под нужды конкретного заказчика. Для таких конфигураций обычно требуются значительные доработки для интеграции со СБИС.

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

Существует два основных режима запуска 1С - режим предприятия и режим конфигуратора (в этом режиме также имеется режим отладки).

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

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

Режим Конфигуратор

В режиме конфигуратора мы можем ознакомиться с конфигурацией, которая описывает структуру хранения данных в базе. Для открытия конфигурации в меню выбираем в меню «Конфигурация/Открыть конфигурацию».

По значку рядом с именем конфигурации мы можем понять, является ли она типовой (неизмененной):

Есть три варианта:

  • Объект не редактируется – типовая конфигурация, в которую нельзя вносить какие-либо изменения.
  • Объект редактируется с сохранением поддержки – в конфигурацию внесены определенные изменения, но она остается на поддержке, то есть может обновляться при выходе новой версии.
  • Объект снят с поддержки – конфигурация сильно изменена или написана с нуля, она не обновляется при выходе новых версий.

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

Объекты конфигурации

Объект конфигурации в системе 1С:Предприятие - это описание группы понятий со сходными характеристиками и одинаковым предназначением. Например, объект конфигурации Справочник предназначен для ведения списков однородных элементов данных – справочников, картотек, классификаторов.

Объект конфигурации описывает не конкретное значение, а только его вид. Например, справочник Контрагенты описывает не конкретную организацию ООО «Солнышко», а содержит перечень реквизитов (ИНН, КПП, ПолноеНаименование и др.), а также формы для ввода их значений, формы просмотра списков и макеты для печати информации.

Объекты конфигурации объединяются в виды в дереве конфигурации. Названия видов пользователь видит на первом уровне дерева конфигурации, когда открывает окно Конфигурация:

Ниже приведена краткая характеристика видов объектов, которые используются при настройке интеграции со СБИС.

Константы

Для работы с постоянной и редко меняющейся информацией в системе используются объекты типа Константа. Например, в константах хранится валюта учета.

Справочники

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

Перечисления

Перечисления используются для описания постоянных наборов значений. Типичным примером перечисления являются ставки НДС (0%, 10%, 18%, 10/110, 18/118, Без НДС).

Документы

Документы предназначены для отражения хозяйственных событий предприятия. Это могут быть, например, накладные, счета-фактуры, приказы о приеме на работу, счета на оплату, платежные поручения и т.д. Можно сказать, что это главный объект для интеграции со СБИС, т.к. именно документы мы отправляем в электронном виде. Каждый вид документа предназначен для отражения своего типа событий. Это определяет его структуру и свойства. Каждый вид документа может иметь неограниченное количество реквизитов и табличных частей.

При настройке отправки или загрузки документов нас больше всего будут интересовать именно эти реквизиты и табличные части.

Регистры сведений

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

В большинстве конфигураций есть регистры сведений, предназначенные для хранения любых дополнительных сведений по документам и записям справочников (ЗначенияСвойствОбъектов или ДополнительныеСведения в зависимости от конфигурации). Например, если нужно на документе записать какую-то информацию, но для этого нет подходящего реквизита в конфигурации, то эту информацию можно сохранить в регистре. При интеграции со СБИС именно в этих регистрах сведений хранится «связь» документов 1С и соответствующих им документов СБИС. В регистр сведений мы записываем идентификаторы пакета, вложения и статус электронного документа.

Виды клиентских приложений

До версии 1С 8.2 существовал только один вид клиентского приложения (тогда он никак не назывался, так как был один, а сейчас – это «толстый» клиент). Сейчас под «толстым» подразумевается обычная работа за счёт средств и мощностей локального компьютера. Новые технологии экономного использования аппаратных ресурсов сказались и на доработке программ, использующих клиент-серверный вариант работы. Выход платформы 8.2 дал новые понятия в сфере 1С - тонкий клиент, веб-приложение, в которых основная нагрузка ложится на сервер. Вся работа с базой данных, объектными данными, исполнение запросов – выполняется на стороне сервера. Клиент только получает готовые данные, подготовленные для отображения.

Толстый клиент

Клиентское приложение, работающее как в режиме 1С:Предприятие, так и в режиме Конфигуратор.

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

Тонкий клиент

Одно из клиентских приложений, позволяющих подключаться к информационным базам как по локальной сети, так и через Интернет (обеспечивает подключение к информационной базе по протоколам http и https через веб-сервер). Работает только в режиме 1С:Предприятие. В отличие от веб-клиента требует предварительной установки на компьютер пользователя.

И тонкий, и толстый клиент умеют работать с прикладным решением, запущенным в режиме управляемого приложения.

Веб-клиент

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

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

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

Варианты работы клиентских приложений

Существует два варианта работы клиентских приложений.

Файловый вариант работы

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

В этом варианте все данные информационной базы (конфигурация, база данных, административная информация) располагаются в одном файле - файловой базе данных. Работу с этой базой данных осуществляет файловая СУБД, разработанная фирмой "1С" и являющаяся частью платформы.

Клиент-серверный вариант работы

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

Представляет собой совокупность трех взаимодействующих частей:

  • клиентское приложение (1С:Предприятие)
  • кластер серверов (1С:Предприятие)
  • СУБД стороннего производителя (например, Microsoft SQL Server, PostgreSQL)

Режимы запуска 1С:Предприятие

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

Режим обычного приложения

Режим, в котором для работы с прикладным решением используется интерфейс ранних версий 1С:Предприятия, ориентированный на работу только в толстом клиенте. Этот интерфейс не может изменяться автоматически на основе прав и функциональных опций.

Пример интерфейса:

Режим управляемого приложения

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

Управляемое приложение полностью меняет работу с интерфейсом. Меняется модель разработки пользовательского интерфейса в конфигурации - интерфейс не «рисуется», а «описывается». Разработчик определяет только общую схему командного интерфейса и форм.

Архитектура управляемого приложения ориентирована на максимальный перенос выполнения всей функциональности на сервер и максимальное «облегчение» клиента.

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

Все новые конфигурации 1С (начиная с «Управления торговлей, версии 11», «Бухгалтерии предприятия, версии 3» и др.) ориентированы на работу только в управляемом режиме.

Пример интерфейса:

И пример более нового интерфейса:

Как работать в 1С:Предприятии

Больше всего нас интересует оформление сделок продажи и покупки, так как именно эти документы чаще всего отправляют и получают в электронном виде.

Рассмотрим, где находятся соответствующие документы в программе, как их посмотреть и распечатать.

В большинстве конфигураций в главном меню присутствуют разделы «Продажа» и «Покупка» (или «Продажи» и «Закупки»):

Здесь и «живут», интересующие нас документы. Например, документы реализации. В интерфейсе их названия могут отличаться в разных конфигурациях («Реализация товаров и услуг» или «Реализация (акты, накладные)»). Для открытия реестра документов выбираем соответствующий пункт в меню продажи. В окне реестра обычно присутствует панель инструментов для создания нового документа, печати, установки фильтра и др.:

При создании нового документа или при открытии существующего открывается карточка документа:

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

По кнопке Печать предлагается список печатных форм документа:

Печатные формы могут быть типовыми, то есть те, которые заложены в конфигурации, и нетиповые, то есть внешние печатные формы, либо печатные формы, добавленные в конфигурацию специально под нужды данного клиента. Если клиент при печати использует нетиповую форму, то это надо учитывать и при интеграции со СБИС, т.к. печатная форма электронного документа должна соответствовать печатной форме клиента.

Также из карточки мы можем посмотреть структуру подчиненности документа:

В структуре подчиненности отображаются все связанные документы. При интеграции со СБИС документы из 1С обычно отправляются не по одному, а комплектами из двух или трех связанных документов (накладная+фактура или накладная+фактура+счет).

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

Внешние обработки

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

Внешняя обработка – это, по сути, внешний модуль, который также разрабатывается на языке программирования 1С в Конфигураторе, но не вносит изменений в типовую конфигурацию. Он существует независимо от самой конфигурации и хранится отдельно в файле с расширением "epf".

Поэтому при интеграции 1С со СБИС мы используем внешнюю обработку и не вносим никаких изменений в конфигурацию клиента.

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

Что же изменилось в управляемом приложении, по сравнению с обычным?

Интерфейс

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

Повышение масштабируемости

Масштабируемость - это способность системы адаптироваться к расширению предъявляемых требований и возрастанию объёмов решаемых задач. Управляемое приложение увеличивает масштабируемость системы за счет нескольких пунктов:

  • За счет переноса нагрузки с клиентской части на серверную. В обычном приложении вся работа с объектами информационной базы, расчётами, выполнением обработок, формированием отчётов выполнялась на компьютере пользователя, лишь некоторые общие модули работали на сервере. В управляемом приложении на клиенте выполняются только такие действия, как:
    • получение, открытие и отображение форм,
    • интерактивный диалог с пользователем,
    • небольшие расчёты,
    • работа с локальными файлами и торговым оборудованием;
  • Если для работы программного продукта 1С: Предприятие используется кластер серверов, то включается динамическое распределение нагрузки на сервера, чего нет при работе в обычном приложении;
  • Сервер 1С переработан в сторону повышения надежности и устойчивости.

Удалённая работа (онлайн)

Удалённая работа с информационной базой в управляемом приложении представлена в двух режимах:

Тонкий клиент клиент установлен на компьютере пользователя, и поддерживает связь с базой с помощью интернет-протоколов передачи данных. В параметрах информационной базы присутствуют настройки, позволяющие адаптировать работу тонкого клиента под канал связи с низкой скоростью; Веб-клиент клиент не требующий установки на компьютер пользователя. Вся работа с информационной базой производится через интернет-браузер . Для использования веб-клиента обязательна дополнительная установка и настройка веб-сервера и дополнительная надстройка веб-сервиса для сервера 1С (выбирается при установке платформы 1С: Предприятие).

Быстрая настройка системы при внедрении

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

Снижение трудоёмкости описания интерфейсов и отчетов

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

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

Возможность централизованного управления интерфейсом

Управление командным интерфейсом и формами осуществляется настройками ролей пользователя , составом функциональных опций и персональными настройками пользователя.

Развитие системы разграничения прав доступа

Помимо того, что в управляемом приложении реализована возможность настройки доступа и редактирования отдельных полей объектов конфигурации для каждой роли, архитектура тонкого клиента построена так, что на него не передаются заблокированные данные. Это обеспечивает более эффективную работу с правами доступа. Существенно снижается нагрузка на систему - все массированные операции могут выполняться без проверки прав доступа (в привилегированном режиме).

Пользовательские настройки

В управляемом приложении 1С: Предприятие реализована возможность настройки интерфейса пользователем под себя . Пользователю также предоставляется возможность настроить интерфейс системы в соответствии со своими личными предпочтениями. Он может управлять видимостью команд в командном интерфейсе, их порядком и группировкой. Также он может изменять видимость, расположение и группировку элементов формы, может настраивать некоторые свойства элементов формы, влияющие на отображение и редактирование.

Программное открытие форм в управляемом приложении 1С значительно отличается от их открытия в обычном приложении. Рассмотрим для начала старый метод. Он заключается в получении формы и ее последующем открытии в обычном или модальном режиме (при открытии в модальном режиме форма блокирует работу программы).

ПолучитьФорму() . Открыть()

Это самый медленный метод открытия форм. Тем не менее, он позволяет программно обработать форму перед открытием. Для обработки код нужно немного изменить:

Форма= ПолучитьФорму("Документ.ПоступлениеТоваровУслуг.ФормаДокумента" ) ;
//Тут выполняем действия с формой
Форма. Открыть() ;

Надо учитывать, что при получении формы будет выполняться еще процедура события ПриСозданииНаСервере.

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

1. Как открыть форму объекта в управляемом приложении, если есть ссылка на него.

В этом случае все предельно просто.

СпрСсылка= Справочники. Номенклатура. НайтиПоКоду("000000001" ) ;
ОткрытьЗначение(СпрСсылка) ;

2. Как открыть форму выбора и получить потом выбранное значение.

Для этого существует функция ВвестиЗначение(). У функции 3 параметра:

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

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

Перем Значение;
Массив= новый массив;
Массив. Добавить(Тип("СправочникСсылка.Номенклатура" ) ) ;
Массив. Добавить(Тип("СправочникСсылка.Контрагенты" ) ) ;

ОписаниеТипов= новый ОписаниеТипов(Массив) ;

Рез= ВвестиЗначение(Значение, "Подсказка" , ОписаниеТипов) ;

Предыдущие способы позволяли открывать только формы, установленные для объектов по умолчанию (форму объекта или форму выбора). Если нужно открыть произвольную форму, то можно воспользоваться функцией ОткрытьФорму().

Эта функция имеет довольно много параметров. Рассмотрим некоторые из них:

  • Имя формы — тут можно выбрать либо одну из стандартных форм объекта, например, ФормаВыбора или ФормаСписка . Или конкретную, созданную разработчиками форму.
  • Параметры — позволяет передать в форму в виде структуры некоторые параметры перед ее открытием, тем самым определив выводимые данные. Параметры могут представлять собой любые данные, которые можно передавать с клиента на сервер. Переданные при открытии формы параметры можно обработать в процедуре ПриСозданииНаСервере() у открываемой формы.
  • Режим открытия формы — имеет 3 варианта: независимый, блокировать весь интерфейс, блокировать форму владельца.

Рассмотрим, как применяется функция ОткрытьФорму() в различных ситуациях.

3. Как открыть форму существующего объекта

У каждой формы есть один ключевой реквизит. Он выделен жирным в списке реквизитов формы и обычно называется Объект у форм элементов справочников, документов. У других объектов название может быть другим. Для открытия формы существующего объекта нужно передать в открываемую форму параметр Ключ со значением в виде ссылки на объект.

&НаКлиенте
Процедура Команда1 (Команда)
Параметр= новый структура;
Параметр. Вставить("Ключ" , НайтиС() ) ;
ОткрытьФорму(, Параметр) ;
КонецПроцедуры

&НаСервере
Функция НайтиС() ;
Возврат Справочники. Контрагенты. НайтиПоРеквизиту ("ИНН" , "745107734623" )
КонецФункции

4. Как открыть форму нового объекта

Тут подойдет просто функция ОткрытьФорму() без всяких параметров.

&НаКлиенте
Процедура Команда1 (Команда)
ОткрытьФорму("Справочник.Контрагенты.ФормаОбъекта" ) ;
КонецПроцедуры

5. Как открыть форму нового объекта и заполнить ее на основании чего-либо

Нужно передать параметр Основание , значением которого будет являться ссылка на объект-основание заполнения. При этом будет запущена процедура ОбработкаЗаполнения().

&НаКлиенте
Процедура Команда1 (Команда)
Параметр= новый структура;
Параметр. Вставить("Основание" , СсылкаНаСчетПокупателю) ;
ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта" , Параметр) ;
КонецПроцедуры

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

6. Как открыть форму и задать на ней отбор

Отбор на формах 1С может быть простым и сложным. Простой отбор предусматривает выражения типа Организация = ООО «Рога и копыта». Сложный отбор предполагает и другие типы сравнения, например, В списке . В данной статье рассмотрим организацию простого отбора, а сложному будет посвящена отдельная статья.

Чтобы организовать простой отбор, нужно передать в открываемую форму параметр с ключом Отбор , значением будет являться структура, в которой ключ — имя поля динамического списка, а значение — искомые данные.

Например, откроем форму списка справочника НомераГТД и сделаем там отбор по владельцу — элементу справочника Номенклатура .

&НаКлиенте
Процедура Команда1 (Команда)
Параметр= новый структура;

Отбор= новый Структура;
Отбор. Вставить("Владелец" , СсылкаНаНоменклатуру) ;

Параметр. Вставить("Отбор" , Отбор) ;

ОткрытьФорму("Справочник.НомераГТД.ФормаСписка" , Параметр) ;
КонецПроцедуры

7. Как открыть форму записи регистра сведений

Для этого понадобится ключ записи регистра сведений.

Ключ записи — это значения всех измерений и период (если регистр периодический). То есть ключ записи — это параметры, по которым можно однозначно идентифицировать запись.

Алгоритм открытия следующий:

  1. Заносим в структуру данные ключа записи с необходимыми значениями.
  2. Помещаем полученную структуру в массив.
  3. Из массива создаем ключ записи.
  4. Передаем в открываемую форму параметр Ключ с ключом записи из п.3 в качестве значения.

&НаКлиенте
Процедура Команда1 (Команда)
Параметр= новый структура;

ПараметрыКлюча= новый Структура;
ПараметрыКлюча. Вставить("Номенклатура" , СсылкаНаНоменклатуру) ;
ПараметрыКлюча. Вставить("ТипЦены" , СсылкаНаТипЦен) ;
ПараметрыКлюча. Вставить("Период" , Дата) ;

МассивКлюча = Новый Массив;
МассивКлюча. Добавить(ПараметрыКлюча) ;

КлючЗаписи = Новый("РегистрСведенийКлючЗаписи.ЦеныНоменклатуры" , МассивКлюча) ;

Параметр. Вставить("Ключ" , КлючЗаписи) ;

ОткрытьФорму("РегистрСведений.ЦеныНоменклатуры.ФормаЗаписи" , Параметр) ;
КонецПроцедуры

Эта статья продолжает цикл статей «Первые шаги в разработке на 1С». Материал предполагает, что вы уже ознакомились с предыдущими нашими статьями, посвященными интерфейсу. В это же статье мы продолжим знакомство с новыми возможностями интерфейса «Такси» и рассмотрим, какие интересные новшества получили управляемые формы в этом интерфейсе.

Применимость

В статье рассматривается интерфейс «Такси» конфигурации, разработанной на платформе 1C 8.3.5.1098. Дополнения к текущим релизам платформы (8.3.11) приведены в заключении. Поэтому вся представленная информация актуальна.

Новое в управляемых формах в «1С:Предприятие 8.3»

Разработчики платформы «1С:Предприятие 8.3» в очередной раз основательно поработали над удобством работы пользователей с управляемыми формами.

Ввод по строке

Ранее, в полях ввода, при вводе с клавиатуры начальных символов, система искала подходящие элементы.

Однако зачастую пользователям необходимо осуществлять поиск не только по первым символам наименования, но и в произвольном месте названия.

В конфигураторе у ссылочных объектов метаданных для настройки ввода по строке, была создана отдельная закладка “Поле ввода”:

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

  • использование полнотекстового поиска;
  • поиск по вхождению подстроки или по началу строки;
  • выполнение поиска непосредственно или в фоновом режиме.

В свойстве “Способ поиска строки при вводе по подстроке” можно выбрать – следует ли искать только по первым символам строки или в любой ее части.

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

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

Естественно, использование поиска по любой части строки может привести к ухудшению производительности системы, особенно при большом объеме данных.

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

Если установлена соответствующая настройка, то при вводе данных в поле ввода может быть использован полнотекстовый поиск.

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

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

Результаты полнотекстового поиска, соответствующего введенной поисковой строке, приведены на рисунке:

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

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

Указанные выше обработчики не влияют на представление значений в списке выбора – в списке отражается основное представление объекта.

Однако после выбора в поле отображается ожидаемое переопределенное представление объекта.

Для увеличения нажмите на изображение.

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

Рассмотренные выше свойства ввода по строке задавались на уровне всего объекта метаданных.

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

Например, при помощи обработчиков событий АвтоПодбор и ОкончаниеВводаТекста конкретного поля ввода или при помощи обработчика события ОбработкаПолученияДанныхВыбора в модуле менеджера объекта.

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

Для увеличения нажмите на изображение.

Выпадающий список для поля ввода

В платформе 8.3 выпадающий список для поля ввода получил дополнительную функциональность для повышения удобства работы с системой.

Теперь этот список может отображать историю выбранных ранее значений. Список с историей показывается на экране при установке курсора в поле, при нажатии кнопки Выбрать из списка, или кнопки на клавиатуре со Стрелкой вниз.

Включить отображение истории можно у полей ввода, связанных с данными типа справочник, документ, бизнес-процесс, задача, план видов характеристик, план видов расчета, план счетов и план обмена. В конфигураторе для этого предусмотрено свойство, расположенное на закладке “Поле ввода”:

Для увеличения нажмите на изображение.

Использование истории можно переопределить для конкретного реквизита объекта или элемента формы.

Кроме этого, если в списке поля ввода пользователь не нашел интересующего элемента, он может нажать кнопку “Показать все” для открытия формы списка, чтобы выбрать элемент из всего справочника.

Также в списке поля ввода есть команда “Создать новый объект”. При этом будет открыта форма нового элемента.

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

Типовой шаблон использования команды “Создать новый элемент” выглядит следующим образом. Пользователь вводит название нужного элемента в поле ввода.

Если такого элемента в базе данных система не обнаружит – будет выведено сообщение об этом. После нажатия кнопки в списке, на экране откроется форма нового элемента с заполненным наименованием.

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

Сохранение настроек динамических списков

В платформе 8.3 настройки динамического списка можно сохранять автоматически. Для этого в конфигураторе, для нужного реквизита формы, необходимо установить свойство “Автоматическое сохранение пользовательских настроек”. По умолчанию, при создании списка эта настройка включена.

У корневого элемента конфигурации появилось новое свойство – Хранилище пользовательских настроек динамических списков.

Это свойство выбирается из списка хранилищ настроек, определенных в конфигурации.

Для увеличения нажмите на изображение.

Настройка списков в пользовательском режиме вызывается при помощи соответствующего пункта меню:

Внешний вид формы похож на настройку отчетов.

Для увеличения нажмите на изображение.

Условия, по которым выполнен отбор списка, автоматически отображаются в нижней части настроек. Эти настройки будут включены в форму списка.

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

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

При такой настройке форма будет иметь поля в виде “быстрых отборов”.

Для увеличения нажмите на изображение.

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

Режим просмотра динамического списка (список, дерево, иерархический список) сохраняется вместе с настройками элементов формы.

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

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

Для увеличения нажмите на изображение.

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

Для этого была создана стандартная команда СоздатьПоПараметру. Если эта команда назначена кнопке на форме, то становится доступным свойство Параметр, в котором можно выбрать тип создаваемого документа при нажатии на эту кнопку.

Для увеличения нажмите на изображение.

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

Для увеличения нажмите на изображение.

Т.к. материал в статье описан для платформы 8.3.5, то актуализируем его.

  • До версии 8.3.7 ввод по строке работал недостаточно быстро, поэтому в этом релизе была изменена структура данных индекса полнотекстового поиска, что привело к повышению скорости при работе системы в тех местах, где используется данный механизм. Отметим, что новый формат полнотекстового поиска используется в том случае, если режим совместимости установлен в значение «Не использовать». В режиме совместимости с с версией 8.3.6 поведение не изменилось. Также отметим, что в следующем релизе платформы 1С (8.3.8) механизм ввода по строке и при использовании строки поиска динамического списка был также улучшен, и теперь он обеспечивает поиск данных, которые еще не попали в полнотекстовый поиск. Ранее такого поведения не наблюдалось.
  • Выпадающий список поля ввода управляемой формы также претерпел некоторые улучшения. В версии 8.3.8 он стал автоматически подстраивать свою ширину под ширину отображаемых в нем данных, плюс клавиши Home и End стали обрабатываться прямо в поле ввода. Благодаря этим улучшениям стало удобнее использовать поле ввода с выпадающим списком.
  • Механизм сохранения настроек динамических списков также был улучшен, и в версии 8.3.6 свойства расширения таблицы формы для динамического списка Период и Отображение стали храниться в тех же разрезах, что и другие настройки динамического списка, что сильно упростило работу с ними разработчику. Теперь они стали доступны в обработчике управляемой формы ПриЗагрузкеПользовательскихНастроекНаСервере() , чего ранее не было.

На этом знакомство с управляемыми формами в интерфейсе «Такси» мы завершим, но в следующей статье познакомимся с новыми возможностями, которые представила платформа «1С:Предприятие» редакции 8.3.