1с тонкий клиент как открыть форму

Как программно открыть форму документа тонкого клиента?

Почему этот код работает только в толстом клиенте?
Как заставить его работать на тонком клиенте?
В чем разница?

&НаКлиенте
Процедура OpenDocument(Command)

&НаСервере
Процедура GetDocumentForm_()

FormDoc = Documents. TestDoc.GetForm(«Форма документа»);
FormDoc.Open();

P.S. Как открыть конкретную форму документа?

Открыть форму и активировать ее окно.

Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение (клиент).
Примечание:

В управляемом приложении нельзя программно открывать и закрывать одну и ту же форму в одном и том же вызове 1С:1. (3)

Тип: Строка.
Имя формы. Создается как полный путь к объекту метаданных формы (например, «Directory.Accounts.Form.ObjectForm», «CommonForm.FileSaveForm») или как полный путь к объекту приложения с именем формы по умолчанию (например, «Directory.Assets.ChoiceForm» ).
Имена форм по умолчанию:
В этом случае сообщение или внешняя обработка должны быть предварительно зарегистрированы в системе методом Подключить или Подключить. и являются именами, под которыми записывается отчетность или внешняя обработка.
Тип: Структура.
Параметры формы. Ключ структуры — это имя параметра, а значение — значение параметра формы. Имя элемента должно совпадать с именем параметра структуры.
Тип: Пользовательский.
В этом параметре можно установить какой-либо ключ, значение которого будет использоваться для поиск уже открытых форм. Если найдена форма с таким же уникальным ключом, вместо открытия новой формы будет запущена найденная форма.
False — находит форму с уникальным ключом по умолчанию, True — форму не находит вообще, любое другое значение задает уникальный ключ, который необходимо найти.
Значение по умолчанию: False.
Тип: окно клиентского приложения; Возможность открыть окно.
Окно приложения, в котором будет открыта форма.
Применяется только к управляемой форме. Окно может быть только главным окном приложения или окном вспомогательной формы.
Если указан тип WindowOpenVariant, окно формы создается по выбранному варианту.
Тип: Строка, Не определено.
Если он содержит значение, отличное от Undefined, это значение присваивается свойству NavigationLink формы, полученной в результате вызова этого метода, а свойству AutoNavigationLink этой формы присваивается значение False.
Значение по умолчанию: Не определено.
Тип: ОписаниеПредупреждение.
Содержит описание процедуры, которая будет вызываться после закрытия формы со следующими параметрами:
— значение, переданное при вызове метода Close открытой формы,
— значение, введенное при создании объекта описания оповещения.
Если параметр не указан, после завершения не будет вызываться никакая процедура.
Задает режим открытия окна управляемой формы.
Игнорируется на мобильной платформе.
По умолчанию: Не определено.

Тип: Форма; Контролируемая форма.
Окно приложения, в котором будет открыта форма.
Применяется только к управляемой форме. Окно может быть только главным окном приложения или окном вспомогательной формы.
Если используется Вариант открытого окна, окно формы будет создано в соответствии с выбранным вариантом.
Возвращаемое значение:

Тип: Форма; ManagedForm.

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

Читайте также:  Spore как открыть все этапы код

Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение ( клиент).
Примечание:

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

Ресурс

Открытие форм для нескольких новых документов в толстом и тонком клиенте, UV

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

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

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

Однако мне нужно было несколько документов.

Это решение. Для толстого клиента все более-менее понятно:

1. На сервере создаем массив новых объектов типа документа «Доходы по товарам и услугам» с разными смещения.

2. На клиенте зацикливаем это поле, попутно создавая новые формы документов и заполняя их значениями ранее созданных объектов.

Для тонкий клиент все сложнее. На тонкий клиент 1С начинает ругаться: «Ошибка передачи данных между клиентом и сервером. Недопустимое значение типа». Это в момент передачи серии новых документов с сервера на клиент.

Как пришлось закончить:

1. Аналогично создадим серию новых документов.

2. Сохраним этот массив во временном хранилище. Мы передаем клиенту только адрес этого репозитория.

3. В клиенте создаем цикл из такого количества итераций, сколько элементов в массиве.

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

Источник

Программное открытие форм в управляемом приложении 1С

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

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

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

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

Читайте также:  Как легко получить робуксы без доната на телефоне

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

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

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

Для этого есть функция EnterValue(). Функция имеет 3 параметра:

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

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

Значение переменной;
Массив = новый массив; поле
. Добавить(Тип(«DirectoryReference.Nomenclature» )​​​​​​​​​); поле
. Добавить (Тип («DirectoryReference.Contractors» )) ;

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

Res = EnterValue (Значение, «Подсказка», Тип Описание);

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

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

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

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

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

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

&OnClient
Процедура Команда 1 (Команда)
Параметр = новая структура;
Параметр. Вставить(«Ключ», FindC());
OpenForm(«Directory.Accounts.ObjectForm», Параметр);
Завершить процедуру

&OnServer
Function FindC ( ) ;
Назад Справочники. Поставщики. FindByAttribute(«ИНН», «745107734623»)
EndFunction

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

Простая функция OpenForm() без здесь подойдут любые параметры

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

Вам нужно передать параметр Base , значение которого будет быть ссылкой на базу заполнить объект. Это запустит процедуру FillProcessing().

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

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

Выборка в формах 1С может быть простой и сложной. Простой выбор включает такие термины, как Organization = Horns and Hooves LLC. Сложный выбор предполагает другие типы сравнений, например В списке . В этой статье мы разберемся с обустройством простого выделения, а сложному будет посвящена отдельная статья.

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

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

Выбор = новая Структура;
Выбор. Insert(«Владелец», Справочник по именованию);

Параметр. Insert(«Выделение», Selection);

OpenForm(«Directory.GTENumbers.ListForm», Parameter );
Завершение процедуры

7. Как открыть форму записи журнала информации

Для этого вам понадобится ключ ввода журнала информации.

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

Читайте также:  Ruru займ на билайн как получить

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

  1. Введите ключ регистра данных, используя необходимое значение в структуре.
  2. Поместите полученную структуру в поле.
  3. Создайте раздел реестра из массива.
  4. Параметр Ключ с ключом реестра из пункта 3 в качестве значения передаем форме для открытия.

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

KeyArray = New Array;
Массив ключей. Добавить(ключевые параметры);

RecordKey = New(«RegistrarRecordRecordKey.NomenclaturePrices» ,KeyArray ) ;

Параметр. Insert(«Ключ», RecordKey);

OpenForm(«Информационная запись.Номенклатурные цены.Форма записи», Параметр) ;
Выполните процедуру

Источник

Открытие форм

Область применения: управляемое приложение, мобильное приложение.

1. Для открытия форм используйте метод глобального контекста OpenForm (также OpenFormModally при использовании платформы 1С:Предприятие 8.2 и более ранних версий). Использовать альтернативный метод получения формы и затем открывать ее методом GetForm не рекомендуется.

Рекомендация, основанная на рассуждениях

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

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

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

Параметры формы в этом наборе можно указать в вызывающем коде при открытии формы (OpenForm).

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

FormGuide = Form.OpenForm(«GeneralForm.System Guide»);
FormGuide.Elements.GroupStep.CurrentPage = FormGuide.Elements.GroupPageStep.Welcome;

по той же причине следует использовать параметры формы:

OpenForm(«GeneralForm.System Guide», New Structure(«OpenMode», «Welcome»));

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

QuestionForm = GetForm( «GeneralForm .ФормаВопроса»);
Форма Вопроса.OpenModal();
IfQuestionForm.Don’tShowReminderMore Then
// …

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

Alert = New AlertDescription(» Больше не показывать уведомлениеFinish», ThisObject);
OpenForm(«ОбщаяФорма.ФормаВопроса».Alert,FormWindowOpenMode.LockAllInterface);
.

&OnClient
ПроцедураDo Not ShowReminderReminderCompletion(Do notShowMoreReminder, Parameters) Export

If NotShowMoreReminder = Undefined Then
Return;
EndIf;

Если moreShowReminder недоступен, то
//…

При этом возвращаемое значение формы создается в коде модуля с использованием Метод Close.

5. Другие ограничения:

  • Обработчик события OnOpen формы не должен содержать код для открытия другой формы, так как это может привести к нарушению правил окна. Отобразить заказ. В этом случае рекомендуется использовать обработчик ожидания на короткий интервал или открывать другие формы в интерактивном режиме, например, по нажатию кнопки.
  • Программное открытие и закрытие формы в одном и том же контроллере не рекомендуется. Такие действия должны быть растянуты во времени. Например, форма может быть закрыта в обработчике ожидания.
  • При использовании стандартных подсистем в конфигурации библиотеки и разработке форм (рабочих станций), предназначенных только для внешних пользователей, необходимо явно блокировать открытие таких форм в «обычных» пользовательских сессиях. Для этого установите опцию Запретить при создании формы на сервере с помощью функции ThisExternalUserSession общего модуля Users или UsersClient:

&OnServer
CreateProcedureOnServer(Failure, StandardProcessing)

If Not UsersClientServer.This IsExternalUserSession() Then
Ошибка = Истина;
Возврат;
КонецЕсли;

Завершение процедуры

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

Источник

Поделиться с друзьями
Решатор