Как обратиться к текущему элементу формы 1с
Перейти к содержимому

Как обратиться к текущему элементу формы 1с

  • автор:

Использование объекта ДанныеФормыКоллекция

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

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

2. При работе с объектами типа ДанныеФормыКоллекция , если предполагается, что объект типа ДанныеФормыКоллекция может содержать большое количество строк (нужно ориентироваться на количество от 20 строк), необходимо придерживаться следующих рекомендаций:

  • обход строк такой коллекции необходимо производить на сервере;
  • функцию НайтиСтроки вызывать только на сервере.

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

правильно выполнять один явный вызов сервера:

См. также

Как из модуля объекта обратиться к форме 1с

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

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

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

(64) А что тема клиент-серверного взаимодействия управляемых форм в 1C уже неактуальна? (5)DevilOTS
Я так понял, что ты имеешь ввиду вообще с различного рода модулей объектов?

(7) Ответ неверный. Модуль объекта и так исполняется на сервере, а директивы компиляции там не действуют.

(6) Сама Процедура в модуле объекта Экспорт ‘ная?

(9)Да, экспортная.
Все с вариантом DevilOTS получилось. Спасибо ему за это!
А то звонил франчам, по этой проблеме, но они сами не знают как решить эту проблему. Просили если найду выход позвонить им. );
Спасибо всем за участие! Если у Вас разные объект например два документа и надо в форму одного документы вызвать процедуру из другого, то в этом случаи надо процедуру помещать в модуль менеджера и вызывать ее как документы.названиедокумента.названиепроцедура. Соответственно все вызовы на сервере. Volfreel; user1027191; YanTsys; perpleks; bird21; Insanity; + 6 – Ответить

Такой же вопрос возник по Отчету (а не по документу). Выяснил что нужно параметром указывать «Отчет».

13-ый ответ используется в типовых решениях от 1С. Думаю так правильнее делать да, а как быть если это внешняя обработка?там нет такого «поставьте компиляцию процедуры модуля объекта НаСервере.» как быть?

Модуль объекта (внешняя обработка):
Процедура ЗаполнитьТЧ() Экспорт
// твой код
КонецПроцедуры

vfvava; HetLink; CratosX; METAL; tani6e4ka; vakham; divSvid; nad0_hto; wolder; iott; continental; BlackCors; jkcea; + 13 – Ответить

Сколько читаю все советуют так а вот у меня че то не выходит. В чем ошибка помогите.

Возможна ли обратная операция? Вызвать процедуру формы из модуля документа? (24) Геннадьевич, думаю что нет. И ещё раз нет.
У вас обращение к БД исполняются на сервере.
Соответственно Клиент делает запрос на Сервер и возвращает данные на клиента.
для такого дела ставят флажки в серверных модулях, где они компилируются: Сервер и ВызовСервера(Для обращения с клиентского компа)
Обратите внимание, что нет в свойствах модулей такого флага, как вызов клиента.
Поучите лекции Евгения Гилёва, даже там вам скажут что на клиенте можно использовать методы обращения на сервер, а вот с сервера вызывать метод обращения на клиент — ну никак)))) (25) Bukaska, Спасибо за развернутый ответ. Лекции обязательно посмотрю. (59)Уверены! На какой клиент должен уйти вызов с сервера? Возможен только возврат после вызова сервера с клиента. А теперь вопрос посложнее, господа эксперты: как вызвать процедуру модуля обработки из формы этой обработки из безконтекстной процедуры (чтобы не таскать на сервер всю форму)? Уверен — никак. И модуля менеджера у внешней обработки не существует. Остается только располагать процедуру в форме? Тоже некрасиво. Подскажите, как сделать красиво? (27) оказалось, что и из процедуры НаСервере в модуле формы не всегда возможно вызвать функции модуля объекта — начинает сбоить РеквизитФормыВЗначение, ошибка

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

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

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

Для внешней обработки делаю так:
1. завожу реквизит обработки «Модуль»
2. в модуле объекта определяю экспортную процедуру/функцию «Процедура ПроцЭкспорт Экспорт . »
3. в теле модуля объекта делаю присваивание: «Модуль = Объект;»
4. в модуле формы делаю вызов «Объект.Модуль.ПроцЭкспорт();»
все работает

(29) slawa, интересный способ, не знал о нем. А на производительности не сказывается?

(29) slawa, А для внешнего отчета это не работает?
В 29 написано, что делал для внеш обработки. Но у меня не получилось. Не понятно реквизит обработки «Модуль» какого типа? и п.3 не совсем понял.

Может у кого-то получилось?

Что-то с отчетом совсем печально получается. Даже если его в конфигурацию засунуть, то всё равно не работает.
С документом все прошло удачно.

Как же в отчете сделать так, что бы заработало?

Когда речь идти о ссылках (любых) — в УФ 1С всегда используется тип «Произвольный».
Либо — ставить конкретный тип документов/справочников/объектов, что неприемлемо для внешних обработок. А я вам объясню сейчас, если в 1С опять не наделали вместе с явными «перебросками» РеквизитФормыВЗначение — еще и неявное обновление/чтение объекта на форме с/через помощью обращения к этому самому объекту через реквизит (а все может быть 🙂 ).
Ведь зачем весь этот огород городить — вызывать из модуля формы функции/процедуры модуля объекта (МО)? А так мы, с помощью МО, и за отсутствием модуля менеджера (ММ) — имитируем вызов аналогичных функций из ММ.
А зачем вообще делать функции в модуле менеджера? Они позволяют работать/обращаться к с объекту из Формы, и менять данные.
Так вот, все вот эти бесконечные «РеквизитФормыВЗначение» и «ЗначениеВРеквизитФормы» — они ж не зря используются тут. Происходит чтение актуальных данных объекта, изменение через процедуру МО, а потом — загрузка измененного объекта на форму (при конвертации в реквизит формы), т.е. актуализация для формы данных объекта.
А это как раз именно, то, что и нужно — выполняется имитация функции модуля менеджера.
А вот ваш вариант — лишь получает и выполняет функции, меняя объект, а данные объекта «на форме» — не меняются в соответствии с вашими актуальными изменениями объекта, которые, вроде бы, должны последовать после вызовов и обработки объекта из модуля формы (а иначе зачем все это) — что происходит при обратном вызове «ЗначениеВРеквизитФормы».
Вы ж только один раз читаете Объект и актуализируете данные — в самом начале. И все.
Но это все верно лишь при условии — что при обращении к реквизиту, содержащему ссылку на объект, данные объекта не «обновляются» на форме.
3. в теле модуля объекта делаю присваивание: «Модуль = Объект;» Присвоение делается не в теле модуля объекта, а в модуле формы, в области автовыполнения кода (это в самом конце модуля).
Или тогда надо делать это присвоение в каждой функции, использующей реквизит «Модуль».
А для УФ в МО реквизит «Объект» формы вы не увидите никак, и, соответственно, не сможете его присвоить реквизиту обработки «Модуль» ) выглядят убого, они не могли автоматически неявно транслировать код между клиентом и сервером? Slypower; Stivens; zhivoglot; adhocprog; nnn123; Gendelf; Gang031; egorcheg1; COMPER; mad375; uri1978; —Oleg—; softgarant; An-Aleksey; pavlo; alk; + 16 – Ответить у меня тоже в модуле не видит из формы !
Уже вторые сутки ничего не могу сделать.
1С:Предприятие 8.3 (8.3.6.2152) платформа
УПП 1.3 то что вы пишете — не работает там вообще нет управляемых форм ! как быть ? Вопрос: а как обновить форму УФ из модуля объекта?
Также РеквизитФормыВЗначение() использовать, а в процеддуре формы метод Прочитать() ?? (39) Всё, что находится в модуле объекта, относится к серверу. Форму на сервере вы не обновите. (40) а надо. И форму с сервера обновить, и данные достать, которые безответственно выдавили на сервер.
А так — это вообще ни-о-чем, а не программирование.

Добрый день.
Подскажите пожалуйста, такой же вопрос:
во внешней обработке хочу вызвать экспортную процедуру с параметрами Автозаполнение(ПостроительЗапроса = Неопределено,ТабЛС = Неопределено)
из модуля формы документа КУ_НачислениеКоммунальныхУслуг.
Документы новые, только создаются. Табличная часть- заполняется с помощью процедуры Автозаполнение.
Док=Документы.КУ_НачислениеКоммунальныхУслуг.СоздатьДокумент();

ОбъектНачислениеКомУслуг =ДанныеФормыВЗначение(Док,Тип(«ДокументОбъект.КУ_НачислениеКоммунальныхУслуг»));
ОбъектНачислениеКомУслуг.Автозаполнение(ПараметрыОтбораЛицевыхСчетов,ЗаполнитьСписком);
ЗначениеВДанныеФормы(ОбъектНачислениеКомУслуг,Док);

Пока Выборка.СледующийПоЗначениюПоля(«Здание») Цикл

и как мне дальше обратиться к полученным значения этой процедуры и записать в тч документа?
строкаТч = Док.ВидыНачислений.Добавить();//
СтрокаТЧ.ЛицевойСчет = ?
строкаТч.помещение = ?
СтрокаТЧ.ВидУслуги = ?

Благодарю за помощь 🙂

Пока Выборка.СледующийПоЗначениюПоля(«Здание») Цикл

и как мне дальше обратиться к полученным значения этой процедуры и записать в тч документа?

Что-то не понял ваши намерений. Если у вас в модуле объекта всё заполняется, что вы собираетесь еще на форме заполнять?
И где у вас инициализируется переменная Выборка? Что-то не увидел.

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

Модуль объекта есть почти у всех основных прикладных объектов конфигурации в 1С.

Также модуль объекта можно открыть из контекстного меню объекта:

Или из меню Действия:

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

Вызов методов модуля объекта

В модуле объекта напишем следующий код:

Теперь создадим обработку с одной формой и в модуле обработки в событии ПриСозданииНаСервере напишем следующий код:

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; //заполняем экспортную переменную модуля объекта вызвав экспортную функцию ОбъектНоменклатура . ОбщийОстаток = ОбъектНоменклатура . ОбщийОстаток ( ) ;

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

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

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; //пытаемся заполнить переменную модуля объекта вызвав функцию модуля объекта ОбъектНоменклатура . ПолноеНаименование = ОбъектНоменклатура . ПолноеНаименованиеНоменклатуры ( ) ; Сообщить ( ОбъектНоменклатура . ПолноеНаименование ) ; //ошибка

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

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

Теперь попробуем обратиться к не экспортной функции модуля объекта. Вставим в модуль формы следующий код и откроем обработку:

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; Сообщить ( ОбъектНоменклатура . ПолноеНаименованиеНоменклатуры ( ) ) ; //опять ошибка

Теперь вставим в форму обработки такой код и откроем обработку:

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ;

Здесь мы вызываем экспорную процедуру модуля объекта, а потом встроенным методом Записать записываем объект в базу данных.

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

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

Обработчики событий

В результате откроется список возможных событий:

Рассмотрим основные события модуля объекта:

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

Откроется конструктор формы. В нем можно выбрать тип формы, указать имя и синоним:

Добавим в модуль формы код:

Директивы компиляции

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

  • &НаКлиенте
  • &НаСервере
  • &НаСервереБезКонтекста
  • &НаКлиентеНаСервереБезКонтекста

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

Добавим в модуль формы две процедуры:

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

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

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

Обработчики событий модуля формы

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

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

Рассмотрим основные из них:

Для примера добавим в модуль формы 2 обработки событий: ПриСозданииНаСервере и ПередЗакрытием и добавим туда следующий код:

Читайте также:

  • Не устанавливается adobe creative cloud
  • Вылетает 1с при вводе начальных остатков
  • Какие форматы записи числовых данных используются в excel
  • Как узнать версию visual studio
  • Как сделать найткор в fl studio

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

Q1: Как обратиться к объекту формы?
Q2: Как обратиться к объекту формы, имя которого вычисляется на лету или содержит специальные символы?
Q3: Как обратиться к объекту подчиненной формы?
Q4: Обращение к объекту формы из контекста этой формы.

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

Q1. Обращение к объекту формы

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

Обратите внимание, что операторы «!» и «.» идут через один. Чередуются имена коллекций и их элементов, причем оператор «!» означает, что справа от него указан элемент коллекции, а оператор «.» служит для обращения к свойству этого элемента (см. пп. 3.5 и 3.6).

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

Серым цветом здесь и далее выделены коллекции и свойства, используемые Access’ом по умолчанию. Их также можно опускать, если при этом не возникнет двусмысленности. То есть выражение (1) может быть записано по-другому:

Будьте внимательны, если пользуетесь подобными сокращениями. В случае, когда форма содержит одноименные элементы различных коллекций, пропуск идентификатора коллекции может повлечь за собой неверную работу вашей программы (см. п. 3.6). Хороший способ избегать подобных «совпадений» — использовать префиксы в именах, например, поле «Поле1» в форме переименовать в «пфПоле1» и т.п.

Q2. Обращение к объектам, имена которых вычисляются «на лету» или не соответствуют «соглашению об именах»

В выражении (1), разделенные оператором «.», перечисляются связки типа

Любую из этих связок можно переписать в виде

Коллекция.Item(«Строка — имя элемента»)

где в качестве аргумента может быть указано любое выражение, возвращающее значение типа String, соответствующее имени существующего элемента коллекции, а также

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

Q3. Обращение к объекту подчиненной формы

Корректная ссылка на свойство подчиненной формы или отчета требует указания полного идентификатора формы c использованием свойства Form элемента управления — подчиненная форма:

В данном примере:

является ссылкой на элемент управления, в котором выводится подчиненная форма. А

является ссылкой на саму подчиненную форму. Указание свойства Form для ссылки на подчиненную форму или на ее свойства является обязательным для MS Access версии 97 и желательным для версий 2000-2003.

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

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

Q4. Обращение к объекту формы из контекста этой формы

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

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

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

3. В Соглашении об именах полей, элементов управления и объектов сказано, что имя может включать любую комбинацию букв, цифр, пробелов и специальных символов за исключением точки (.), восклицательного знака (!), надстрочного символа (`), квадратных скобок ([ ]) и управляющих символов (с кодами ASCII от 0 до 31), а также не должно начинаться с символа пробела. Однако вы легко сможете создать объект, имя которого нарушает эти правила. Если вы решили спорить с программистами Microsoft, то следует быть готовым к тому, что, например, Пробелы в именах могут при некоторых обстоятельствах вызывать конфликты в программах Visual Basic .

4. Обратите внимание: название формы, под которым она хранится в файле базы данных, и имя (Name) объекта .Control, содержащего эту подчиненную форму, которое и следует использовать в ссылках, не одно и то же!

Из системы помощи Microsoft Access 97
Операторы ! и . (точка) в идентификаторах указывают тип элемента, стоящего справа от оператора.
Оператор ! указывает, что следующий за ним элемент является элементом, определяемым пользователем (элементом семейства). Например, с помощью оператора ! определяют ссылку на открытую форму, отчет или элемент управления в открытой форме или отчете. (Forms![Заказы]![КодЗаказа])
Оператор . (точка) обычно указывает, что следующий за ним элемент определен в Microsoft Access. Например, оператор . (точка) используется для ссылок на свойства форм, отчетов и элементов управления. Допускается также использование оператора . (точка) для ссылок на значение поля в инструкции SQL, метод Visual Basic for Application или семейство. Например, идентификатор Forms![Заказы].Controls представляет ссылку на семейство Controls формы Заказы.

6. Совпадающие наименования полей, переменных, полей данных.

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

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

7. Ускорение работы программ.

При построении выражений, определяющих ссылки на объект, следует иметь в виду, что:
программа, использующая ключевое слово Me, выполняется быстрее, чем использующая полный синтаксис имени объекта. Причем чем больше уровень вложенности подчиненной формы, тем больший выигрыш в скорости вы получите, используя слово Me.
если вам требуется обратиться к свойству .Value (значение) объекта, ключевое слово .Value лучше опустить.
выражение типа (3) выполняется медленнее, чем (2) и (4).

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

Имейте в виду, что в случае с объектной переменной после окончания использования ее следует очистить:

Set objVar = nothing

8. Вместо инструкции .Value, использованной в большинстве примеров, может быть указано любое доступное свойство или метод объекта формы, например, .Name, .Width, .Enabled, .Tag и т.д. Если требуется прочитать или изменить именно содержимое объекта, то инструкцию .Value можно не использовать.

9. Все вышесказанное в равной мере относится и к отчетам, если заменить все вхождения ключевых слов Form и Forms на Report и Reports.

Допустим, есть форма [Главная], содержащая подчиненную форму [Подчиненная]. Приведу несколько способов обращений к полям и свойствам подчиненной формы.

Еще раз напомню, что название контрола главной формы может отличаться от имени формы (которое видно в окне базы данных). Узнать название контрола можно, один раз щелкнув по нему в конструкторе главной формы правой кнопкой мыши (при этом должна выделиться вся подформа, а не какой-либо из ее элементов, как может делать Access 2000 и более поздних версий), и выбрав пункт меню свойства — имя контрола будет показано в заголовке появившегося окна свойств, а имя формы в поле «Объект-источник» вкладки «Данные». Обращаться к объектам подчиненной формы можно только по названию контрола, содержащего ее в главной форме.

1. Значение поля [Поле1]

Forms(i)(j).Form(k).Value ‘ Где i, j, k — числовые переменные типа integer с заранее известными и заполненными значениями

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

Добавлено через 6 минут
версия 1С 8.2.

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

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

Доступ к доп.реквизиту документа
8.2 Управляемое приложение Управление небольшой фирмой Опять аналогичная мини проблема с.

Форму выбора справочника с отбором по реквизиту
Документ Допуски Создан Реквизит Должность, тип Справочник Должность Создана ТЧ с реквизитом.

как можно обратиться к реквизиту справочника из модуля документа?
я пытаюсь вот таким образом: &НаКлиенте Процедура ПробегПриИзменении(Элемент).

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

теперь не работает, не заполняет поле Сумма, но ошибки не выдает

Добавлено через 17 минут
сделал вот так вот:

Создал общий модуль
ПолучениеРеквизита
вот содержимое его:
при изменении количество часов выпригивает ошибка » Метод объекта не обнаружен (ПолучитьРеквизит)» что я напортачил ? » Метод объекта не обнаружен (ПолучитьРеквизит)» что я напортачил ?

Это потому что ты галочку у модуля не поставил (вызов сервера)

Добавлено через 28 секунд

То что у вас написано вряд ли вообще работать будет.

Добавлено через 8 минут

а что делает функция Сообщить ? зачем она ? и в качестве форматного параметра можно передовать строковую константу если мне всегда необходимо для 1 сотрудника рассчитывать ?

Добавлено через 48 секунд
эти обе функции в одном модуле изменения описать ?

вот единственно: на сервере не работает. А так: сообщает. Синт.пом глядим, да?

и почему пропущено имя справочника ? при получении ссылки

Добавлено через 10 минут
все заработало, спасибо)

Как присвоить реквизиту ТЧ документа значение реквизита справочника?
Есть справочник "Номенклатура" в нем реквизит РозничнаяЦена, Документ "ПриходнаяНакладная" с.

Как присвоить реквизиту ТЧ документа значение реквизита справочника
Есть справочник Номенклатура, в котором реквизит "Дата выхода" типа Дата И документ "Прием.

Обращение к реквизиту справочника программно
Здарова. Ситуация: создал справочник, в нём реквизиты. В справочнике ФормаЭлемента создал команду.

Ошибка при обращении к реквизиту справочника.
есть справочник ЕдиницыИзмерения с реквизитом КоличествоВШтуках. В приходной накладной в табличной.

В обычном приложении у элемента формы 1С 8.3 было свойство «Значение», доступное как для чтения, так и для записи. Какой аналог в управляемом приложении?

Элементы формы 1С 8.3 могут содержать реквизиты двух видов: реквизиты объекта 1С и реквизиты формы.

Красным помечен реквизит объекта 1С Контрагент, а зеленым – реквизит формы в 1С.

Интерактивно выберем эти элементы в пользовательском режиме 1С и попробуем прочитать их «программно» кнопкой «Прочитать».

Если читать значения реквизитов в клиентской процедуре, то код для 1С Предприятия будет следующий:

Все бы хорошо: мы получили на клиенте значения реквизитов объекта 1С и формы, но – не значения элементов формы 1С. На клиенте значение элементов формы 1С получить нельзя.

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

Чтобы получить значения из элементов формы 1С, нам потребуется серверный вызов:

Именно на сервере у элемента формы 1С 8.3 становится доступно свойство ПутьКДанным, по которому его можно извлечь либо из Объекта, который имеет тип ДанныеФормыСтруктура:

…либо из Формы, которая имеет тип ФормаКлиентскогоПриложения:

Форма и ее элементы не видны на сервере без контекста. То есть код для 1С:Предприятия выдаст множество ошибок.

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

Еще хочется разобрать момент, когда нам возможно увидеть состояние различающихся значений в элементе форме 1С и в объекте. Это возможно в событии элемента ОбработкаВыбора.
Например, при значении поля Контрагент — Ассоль, мы выбрали контрагента Бакалея:

Читайте также:

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

Элементы формы

Элементы формы предназначены для отображения и редактирования данных в форме. Также как и сама форма, элементы связаны с данными при помощи реквизитов формы:

Элементы формы

Поведение элементов, определяемое данными

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

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

Элементы формы

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

Элементы формы

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

Элементы формы

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

Элементы формы

Элементы, ориентированные на бизнес-задачи

Поля ввода

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

Элементы формы

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

Элементы формы

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

Элементы формы

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

Элементы формы

Начиная с версии 8.3.23 поле ввода может отображать и редактировать множественные значения

Элементы формы

Редактирование в одном элементе любых типов данных

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

Элементы формы

Динамические списки

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

Элементы формы

Автоматическое изменение расположения и размеров элементов формы при изменении размеров окна

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

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

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