за что отвечает галка использовать всегда в реквизитах формы

Как программно поставить галочку «использовать всегда»?

Конфигурация ЗУП 3.1 (3.1.14.55), хотя это не важно

Основная форма документа

ДобавляемыеРеквизиты = Новый Массив;
НовыйРеквизитВремяИтогСтарое = Новый РеквизитФормы(«ВремяИтогСтарое», Новый ОписаниеТипов(«Строка»), «Объект.ДанныеОВремени», «ВремяИтогСтарое»);

Реквизит добавляется, видно даже по отладке

Затем добавляю его на форму в элементы

НовыйЭлементВремяИтогСтарое = Элементы.Добавить(«ВремяИтогСтарое», Тип(«ПолеФормы»), Элементы.ДанныеОВремени);
НовыйЭлементВремяИтогСтарое.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлементВремяИтогСтарое.ПутьКДанным = «Объект.ДанныеОВремени.ВремяИтогСтарое»;
НовыйЭлементВремяИтогСтарое.ТолькоПросмотр = Истина;

«Ошибка при установке значения атрибута контекста (ПутьКДанным)» по причине: Недопустимое значение

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

Нужно программно установить эту галочку для этой колонки

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

Пробывал писать так:

Везде пишет «Метод объекта не обнаружен»

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

Источник

Свойство «Использовать всегда» объектов конфигурации

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

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

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

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

Другие материалы по теме:

Нас находят: 1с использовать всегда, использовать всегда управляемые формы 1с, галочка использовать всегда в реквизитах формы, 1с 8 3 реквизит использовать всегда, 1С при переходе на динамический использовать всегда что значит, Управляемая форма использовать всегда, 1с 8 3 использовать всегда, 1с83 управляемые формы учебный материал, 1с движения и галочка использовать всегда, как устанавливать свойство того или иного вещества

Источник

Реквизиты управляемой формы (1Cv8)

Содержание

Реквизиты формы

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

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

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

Расширение формы – это дополнительные свойства, методы и параметры формы объекта УправляемаяФорма, характерные для объекта, являющегося основным элементом формы.

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

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

Типы данных, доступные в управляемой форме

Управляемая форма отличается от обычной формы также и типами данных, с которыми она работает. Если обычная форма работает с большинством типов, которые предоставляет 1С:Предприятие (в том числе и вида СправочникОбъект, ДокументОбъект и т. д.), то в управляемой форме можно выделить следующие категории типов:

Преобразование прикладных объектов в данные формы

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

Используются следующие типы данных:

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

Например, документ, содержащий табличную часть, будет представлен объектом типа ДанныеФормыСтруктура (собственно документ), которому подчинен объект типа ДанныеФормыКоллекция (табличная часть документа).

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

Передача данных между клиентской и серверной частями управляемой формы

Фактически можно сказать, что данные формы – это унифицированное представление данных различных прикладных объектов, с которыми форма работает единообразно и которые присутствуют и на сервере, и на клиенте. То есть форма содержит некоторую «проекцию» данных прикладных объектов в виде своих собственных типов данных и выполняет преобразование между ними при необходимости. Однако в случае если разработчик конфигурации реализует свой алгоритм обработки данных, то преобразование данных (из специализированных типов в прикладные и обратно) он должен выполнять самостоятельно.

При редактировании реквизитов формы в специализированном редакторе (подробнее см. раздел «Реквизиты формы» главы «Редакторы») имеется возможность влиять на передачу данных между клиентом и сервером во время работы формы. Для этого служит колонка редактора реквизитов Использовать всегда. Действие этого свойства различается для трех типов реквизитов:

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

Методы для преобразования данных прикладных объектов в данные формы

Для конвертирования прикладных объектов в данные формы и обратно существует набор глобальных методов:

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

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

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

Приведем пример, как использовать преобразование данных в собственных алгоритмах.

Также у объекта УправляемаяФорма существуют методы, доступные на сервере:

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

Приведем пример использования этих методов.

Программный интерфейс

ДанныеФормыДерево (FormDataTree)

Предназначен для моделирования дерева в данных управляемой формы.

ПолучитьЭлементы (GetItems)

Получает коллекцию элементов дерева верхнего уровня.

Доступность: клиент, сервер, тонкий клиент, веб-клиент.

НайтиПоИдентификатору (FindById)

Тип: Число. Идентификатор элемента дерева.

Получает элемент коллекции по идентификатору.

Доступность: клиент, сервер, тонкий клиент, веб-клиент.

ДанныеФормыЭлементДерева (FormDataTreeItem)

Элемент дерева данных формы.

ДанныеФормыКоллекцияЭлементовДерева (FormDataTreeItemCollection)

Элементы коллекции: ДанныеФормыЭлементДерева

Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции. Возможно обращение к элементу коллекции посредством оператора [. ]. В качестве аргумента передается индекс элемента.

Коллекция элементов дерева.

Доступность: клиент, сервер, тонкий клиент, веб-клиент.

Особенности работы с деревом значений

Обновление дерева

Существует проблема падения платформы при обновлении дерева.

Если в дереве был развернут какой-либо узел и выбран подчиненный узел, то при обновлении дерева функцией ЗначениеВДанныеФормы происходит падение платформы.

Решение: перед обновлением нужно очищать дерево.

Источник

Программная модификация управляемых форм

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

Мы рассмотрим основные составляющие этой задачи: добавление реквизитов, добавление элементов формы и назначение обработчиков событий элементов формы.

Добавление реквизитов

Для добавления реквизитов используется метод объекта ФормаКлиентскогоПриложения

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

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

Данную процедуру можно заимствовать в расширение, добавить проверку имени формы и вставить код изменения реквизитов:

Для остальных конфигураций придется переопределять другие процедуры. Например

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

Изменение элементов формы

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

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

Обработка событий формы

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

Для самых простых случаев (команда или событие без параметров) можно использовать следующие комбинации обработчиков и переопределяемых процедур:

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

Либо вариант с использованием команд:

Полезные советы

Работа с динамическими списками

Переопределение открываемой формы

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

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

Источник

Форум (регистрация не требуется)

Программный изменение формы списка, Динамический список

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

p.s. Просьба задавать вопросы только по программированию. На вопросы по типовым конфигурациям обычно не отвечаю по двум причинам
1. В последнее время редко с ними работаю.
2. Чтобы ответить на вопрос требуется: установить соответствующую базу нужного релиза, смоделировать ситуацию, и только после этого возможно залезть в конфигуратор и разобраться что не так (к сожалению, у меня нет столько времени).

Программный изменение формы списка, Динамический список

Здравствуйте Сергей!
Вывожу программно новый реквизит на управляемую форму списка.
Меняю произвольный запрос из динамического списка(Добавляю в него выбор нужного мне поля).
Хочу вывести новое поле в колонке таблицы.
На строчке кода Элемент.ПутьКДанным = «Список.ВнешнийКод» выдает ошибку, и ругается на неправильный путь.
Как быть? Добавить реквизит в динамический список тоже нельзя.
Код: выделить все ЭтаФормаПерем.Список.ТекстЗапроса = СтрЗаменить(ЭтаФормаПерем.Список.ТекстЗапроса,»СправочникКонтрагенты.Ссылка,»,»СправочникКонтрагенты.Ссылка, СправочникКонтрагенты.ВнешнийКод КАК ВнешнийКод»);

Re: Программный изменение формы списка, Динамический список

НовЭлемент = ЭтаФормаПерем.Элементы.Добавить(«ПолеВнешнийКод»,Тип(«ПолеФормы»),ЭтаФормаПерем.Элементы.Список);
НовЭлемент.Вид = ВидПоляФормы.ПолеНадписи;
НовЭлемент.ПутьКДанным = «Список.ВнешнийКод»;

и у поля ВнешнийКод необходимо в реквизитах формы поставить галочку «использовать всегда»

Мне до конца не ясна задача, для чего вам все это потребовалось

Более простой вариант: вытащить все колонки и программно регулировать видимость колонок.

Re: Программный изменение формы списка, Динамический список

Re: Программный изменение формы списка, Динамический список

и у поля ВнешнийКод необходимо в реквизитах формы поставить галочку «использовать всегда»

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

Re: Программный изменение формы списка, Динамический список

Re: Программный изменение формы списка, Динамический список

Re: Программный изменение формы списка, Динамический список

У меня все работает:
ЭтаФорма.Список.ТекстЗапроса = СтрЗаменить(ЭтаФорма.Список.ТекстЗапроса,»СправочникКонтрагенты.Ссылка,»,»СправочникКонтрагенты.Ссылка, СправочникКонтрагенты.ВнешнийКод КАК ВнешнийКод,»);
НовЭлемент = ЭтаФорма.Элементы.Добавить(«ПолеВнешнийКод»,Тип(«ПолеФормы»),ЭтаФорма.Элементы.Список);
НовЭлемент.Вид = ВидПоляФормы.ПолеНадписи;
НовЭлемент.ПутьКДанным = «Список.ВнешнийКод»;

(Это при условии, что в динамическом списке установлен флаг «произвольный запрос», к сожалению под рукой у меня нет свежей БП 3.0, в старой БП 3.0 этот флаг не установлен)

Re: Программный изменение формы списка, Динамический список

Код: выделить все Форма.Список.ТекстЗапроса = СтрЗаменить(Форма.Список.ТекстЗапроса, «СостоянияЭД.СостояниеВерсииЭД», «,ДокументЗаказКлиента.ФАЙТ_ДополнительныйНомер КАК ДополнительныйНомер»);
Форма.Список.УстановитьОбязательноеИспользование(«ДополнительныйНомер», Истина);
Элемент = Форма.Элементы.Добавить(«ПолеДополнительныйНомер», Тип(«ПолеФормы»), Форма.Элементы.Список);
Элемент.Вид = ВидПоляФормы.ПолеНадписи;
Элемент.ПутьКДанным = «Список.ДополнительныйНомер»;

Re: Программный изменение формы списка, Динамический список

Re: Программный изменение формы списка, Динамический список

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *