1с как обратиться к реквизиту формы
Здравствуйте! Есть внешняя обработка , которая создает табеля(документ "Табель") Подскажите , как обратится к реквизиту формы документа (там есть 3 переключителя, реквизитами документа не являются) из этой обработки. Пробовал:
у реквизитов формы нет значения без формы, так что повторяй в обработке алгоритм получения этих значений
если 8.2, управляемые формы, выполнять на клиенте то точно есть. только форму получал как ПолучитьФорму("Документ."Имя документа".Форма.ФормаДокумента")
на панели свойств , есть группа Данные, ВыбираемоеЗначение. как программно установить это значение с обработки?
какие там значения мне известно. я хочу установить их программно и записать документ. не знаю как к ним обращаться из обработки.
правильно - объясни, зачем это нужно? Если из обработки записывать документ, то сразу все в документ-объект. Если из обработки создавать интеративно документ, то документ же все и запишет как надо.
я тебе поясню, юный падавн) создай объект: мойновыйдокумент = документы.документ.создатьдокумент; и теперь заполняй его реквизиты: мойновыйдокумент.поле_которое_я_хочу_заполнить а после: мойновыйдокумент.записать
Ржачный вопрос)))) А если по делу: "Есть внешняя обработка , которая создает табеля" - на сколько понимаю обработка все же записывает эти документы в БД, а не просто открывает их формы для последующей интерактивной записи (если это не так, то можно не читать дальше)))). "там есть 3 переключителя, реквизитами документа не являются", раз они не являются реквизитами документа, то при открытии (обновлении, изменеиии реквизитов) выставляются программно, соответственно тебе не нужно пытаться их поменять, тебе необходимо: 1. Найти алгоритм, который выставляет переключатели 2. Понять как он работает и от каких данных зависит, а может он зависеть только от данных в БД 3. Понять какое положение переключателей нужно тебе и сопоставить эти положения с данными которые надо записать в БД, чтобы при открытии формы переключатели выставлялись в нужное положение. 4. Записать необходимые данные в БД (это скорей всего будут реквизиты документа, либо реквизиты одного из ссылочных реквизитов реквизита документа, либо записи в регистр сведений), бывают конечно еще более тонкие извраты, но редко. 5. Ну собственно после этого можно наслаждаться результатом P.S. Установка реквизитов через форму скорей всего ничего не даст, необходимо смотреть обработчик ПриИзменении. Извращенцев много, поэтому есть вероятность, что изменения обрабатываются ПередЗаписью или ПриЗаписи (для изменения регистров сведений).
Доброго дня! У меня возникла проблема при программном оброщении к реквизитам формы объекта на управляемых формах! Есть конфигурация на управляемых формах(Любая конфигурация, даже пустая с одним объектом"Справочник.Номенклатура" -этого хватит для воспроизведения ошибки)! В "Справочник.Номенклатура" добавим 2 реквизита "Наименование","Наименование2"--Тип("строка") но разными способами:
"Наименование" добавлять не будем так как он есть стандарнтный (Форма)"Объект.Наименование" (Рисунок Наименование)
"Наименование2" добавляем только на Форме элемента как показано на рисунке (Рисунок Наименование2)
Вопрос: Не получается программно заполнить реквизит "Нименование2", Создал внешнюю обработку на управляемых формах а вот к реквизиту "Нименование2" не могу подобраться
Нужно различать реквизиты объекта и реквизиты формы. Вы пытаетесь присвоить значение реквизиту справочника, которого нет.
К реквизиту формы нужно просто обращаться Наименование2 = "777"; .
(1) del_del, вы хоть почитайте книжки умные что ли. Как хранятся данные, как отображаются. У вас Наименование2 - это не реквизит справочника, следовательно, у нового элемента такого реквизита не существует . Этот реквизит будет доступен не когда вы обращаетесь к конкретному элементу, а когда имеете дело с его формой отображения (чувствуете разницу? если на пальцах: есть таблица с номерами телефонов и адресами; она хранится в виде таблицы со столбцами Телефон(вместе с кодом города) и Адрес, а вы хотите отобразить их 1) по алфавиту(адреса), 2) отдельно вынести колонку код города, который "вырезается" из телефона; в этом случае КодГорода существует только тогда, когда открывается форма и программно заполняется код города). В вашем случае, необходимо прописать, например, процедуру формирования Наименование2 ПриОткрытии формы или ПриСозданииНаСервере. Либо, если оно должно вводиться/редактироваться вручную, просто сохраняйте его в хранилище при закрытии и считывайте его из хранилища при открытии формы. Если вы поясните, с какой целью нужно это Наименование2, мы сможем вам точнее подсказать, как в принципе организовать справочник. Например, если Наименование2 - это полное наименование, то почему бы его не сделать реквизитом справочника, а вот нужно обязательно сделать реквизитом формы? В общем повторюсь: почитайте сначала хотя бы того же Радченко, чтобы подобных вопросов не возникало.
(8) RocKeR_13,
Дело в том, что есть конфигурация(самописная), и нужно несколько сотен пользователей завести в Справочник.Пользователи А как программно заполнить справочник( полное наименование, доступ к базе данных, роли - одна на всех), не знаю
(10) del_del, необходимо знать, где хранятся и как заполняются интересующие реквизиты. Например, контактная информация о пользователе может храниться не в справочнике Пользователи, а в регистре сведений, но может отображаться на форме элемента конкретного пользователя. Следовательно, чтобы у нас отображалась контактная информация в форме пользователя нам необходимо заполнить регистр сведений и вывести в том или ином виде эту информацию на форму элемента справочника "Пользователи". И вот тут надо как раз смотреть реквизиты формы, которые необходимы для отображения контактной информации (данных из регистра сведений) на форме карточки пользователя.
Что то я вас не пойму, что вы имели в виду "К реквизиту формы нужно просто обращаться Наименование2 = "777";.".
Реквизит формы и реквизит объекта разные вещи, а вы пытаетесь выдать реквизит формы за реквизит объекта
ТАк в этом и вопрос, КАК програмно обратиться к реквизитам формы? Как вы посаветовали не получается
Реквизит формы и реквизит объекта это разные вещи.
Реквизит формы не записывается, а заполняется при каких-либо действиях с формой.
К реквизиту формы не получится достучаться не из формы объекта.
В обычном приложении у элемента формы 1С 8.3 было свойство "Значение", доступное как для чтения, так и для записи. Какой аналог в управляемом приложении?
Элементы формы 1С 8.3 могут содержать реквизиты двух видов: реквизиты объекта 1С и реквизиты формы.
Красным помечен реквизит объекта 1С Контрагент, а зеленым – реквизит формы в 1С.
Интерактивно выберем эти элементы в пользовательском режиме 1С и попробуем прочитать их «программно» кнопкой «Прочитать».
Если читать значения реквизитов в клиентской процедуре, то код для 1С Предприятия будет следующий:
Все бы хорошо: мы получили на клиенте значения реквизитов объекта 1С и формы, но – не значения элементов формы 1С. На клиенте значение элементов формы 1С получить нельзя.
2. Как получить значения из элементов формы 1С
Чтобы получить значения из элементов формы 1С, нам потребуется серверный вызов:
Именно на сервере у элемента формы 1С 8.3 становится доступно свойство ПутьКДанным, по которому его можно извлечь либо из Объекта, который имеет тип ДанныеФормыСтруктура:
…либо из Формы, которая имеет тип ФормаКлиентскогоПриложения:
Форма и ее элементы не видны на сервере без контекста. То есть код для 1С:Предприятия выдаст множество ошибок.
Также Форму нельзя передать как параметр в процедуру и функцию на сервер или в общий модуль.
Еще хочется разобрать момент, когда нам возможно увидеть состояние различающихся значений в элементе форме 1С и в объекте. Это возможно в событии элемента ОбработкаВыбора.
Например, при значении поля Контрагент - Ассоль, мы выбрали контрагента Бакалея:
Новое значение доступно как параметр процедуры ВыбранноеЗначение.
Система дает шанс что-то сделать в этой ситуации.
Специалист компании ООО «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Формы используются для удобного отображения данных базы пользователю. С формами можно работать как пользователь интерактивно, так и программист управляя поведением и внешним видом формы с помощью кода.
Типы форм
Формы делятся на два типа: обычные и управляемые, обычные формы это формы которые были в линейке 8 с самого начала и по текущий момент. Смысл этих форм заключается в том что форма в прямом смысле рисуется разработчиком, он указывает на то место (вплоть до пикселя)где будут располагаться элементы формы. Обычные формы работают только в толстом клиенте, в то время когда управляемые формы работают и в толстом и в тонком клиенте. Управляемые формы доступны в версии 1С начиная с 8.2 и выше и только когда конфигурация настроена как "Управляемое приложение". В тонком клиенте возможно использование только управляемых форм. Управляемую форму нельзя нарисовать мышкой. Элементы в ней не рисуются, а декларируются или объявляются, что накладывает некоторые ограничения. Вы можете указать что реквизиты будут группироваться горизонтально а не вертикально к примеру, но нельзя указать системе: "вон то поле ввода на 2пикселя выше пусть будет". В управляемых формах код делится строго на клиентский и серверный. В обычных формах можно встретить некоторые серверные ограничения только в режиме клиент-сервер и только для функций которые не расположены в модулях форм.
Программное открытие формы
Программно открыть форму можно с помощью метода "Открыть форму". Этот метод доступен в различных контекстах(форма может существовать и быть открыта только на клиенте) и отличается при использовании обычного и управляемого приложения(в толстом клиенте нельзя передать параметру в форму) но в целом имеет следующие основные параметры: ОткрытьФорму(, , , )
Имя формы: имя открываемой формы, так как для объекта метаданных могут быть не определены никакие формы, возможно указать просто тип формы который надо открыть, например "ФормаСписка" или "ФормаЭлемента".
Параметры - параметры передаваемые в форму, с их помощью можно управлять отборами, устанавливать строку в нужном месте, или просто передавать в форму нужные параметры.
Владелец – используется для организации подбора, обработкой результата выбора если форма открыта для подбора, будет заниматься форма или элемент указанные в этом параметре, так же есть возможность закрывать форму, если закрыта форма-владелец.
Уникальность – этот определенный ключ отвечающий за уникальность формы, если этот параметр указан, то при открытии формы будет произведен поиск формы открытой с этим ключом и если такая будет найдена, то будет активирована уже открытая форма.
Принадлежность форм
Формы могут общими(принадлежать к общим формам) или принадлежать определенному виду объектов, например справочнику номенклатура. Если формы принадлежат какому то виду объекта то они могут быть специального типа: например форма списка, эту форму можно использовать для того, что бы просмотреть список документов или форма документа, эту форму можно использовать для редактирования документа. Здесь мы говорим, «можно использовать» так как когда мы щелкаем по документу в списке или когда мы открываем список документов, будет открываться та форма, которая назначена основной. Если основная форма не назначена, при открытии форма будет сгенерирована, вне зависимости от того есть ли в списке форм, форма нужного вида. По сути форма это просто набор полей и кнопок, Форма выбора , форма списка и форма элемента могут отличаться друг от друга только основным реквизитом, который и служит идентификатором для платформы. Основными реквизитами у форм документа и у элемента справочника являются СправочникОбъект и ДокументОбъект . Для форм выбора и форм списка обычного приложения это СправочникСписок.ВидСправочника и ДокументСписок.ВидДокумента . У управляемого приложения у форм выбора и форм списка основной реквизит ДинамическийСписок . Форма выбора отличается от формы списка установленным свойством Режим выбора у основного реквизита. Если форма принадлежит справочнику\документу то для них доступны следующие типы:
Разница между элементами формы, и реквизитами объекта.
Для корректной работы с элементами формы, следует для себя четко разделить где нужно пользоваться элементами формы, а где реквизитами объекта. К примеру, Элементы.Организация Отвечает за поведение реквизита на форме, начиная от видимости, заканчивая цветом заголовка. В то время как Объект.Организация Предоставляет доступ непосредственно к данным.
Обращение к данным формы из модуля объекта.
Обратиться к реквизиту формы(не путайте с реквизитом документа\справочника) из модуля документа или справочника невозможно, потому, что модуль не может знать какая форма сейчас открыта(а их ведь может много) да и не факт, что при выполнении процедуры или функции модуля формы, какая то форма будет вообще открыта. Реквизиты формы существуют, только до тех пор, пока форма открыта.
"Толстые" объекты на управляемой форме.
Так как на тонком клиенте недостуны, данные базы данных, серверные объекты(например таблица значений) то на форме их как таковые разместить нельзя в то время, когда они как типы для реквизитов доступны. Здесь дело в том что, при добавлении на форму, добавляется не табличное поле, и не сам список элементов справочника номенклатура к примеру, а коллекция например типа ДанныеФормыКоллекция или ДанныеФормыСтруктура с урезанным функционалом, суть которой заключается в том, чтобы отображать данные таблицы значений которая является реквизитом формы или документа. Список методов, доступных для этих типов, позволяет вести комфортную работу, с данными тех объектов которые они отображают.
Преобразование Реквизит – Данные формы и обратно.
Несмотря на то, что типы ДанныеФормыКоллекция , имеют достаточно широкий функционал, иногда возникает необходимость на сервере получить, "оригинал" - тот объект который отображает форма. Особенно это актуально для реквизитов формы, ведь данные реквизитов объекта, можно получить из самого объекта. Для таких случаев существует метод РеквизитФормыВЗначение() , например:
Второй параметр необязательный.(и не совсем понятно зачем он нужен). Возможно и обратное преобразование, бывает необходимо когда полученный извне или сгенерированный объект "засунуть" в уже существующий реквизит формы, соответствующего типа для этого существует
Перезаполнение реквизитов формы в случае изменения объекта.
Бывают случаи когда объект изменяется не из формы а с помощью какой то процедуры, которая находится в модуле объекта или в любом другом месте. Если действие было инициализировано с помощью кнопки на форме, то после, например таких действий:
Вы не увидите изменений на форме, все дело в том, что форма не делает лишних вызовов к серверу без необходимости и как следствие не в курсе, что с объектом, что-то происходило. В этом случае надо перечитать данные объекта, следующим образом:
Добрый день)
Появился такой вопрос - в модуле формы обработки пишу запрос к документу(нахожу нужные документы по номеру).
Мне нужно получить значение реквизита "НадписьФактическаяОплата" типа ФорматированнаяСтрока, который расположен на форме найденного документа. Не пойму, как к нему обратиться ?
Реквизит "НадписьФактическаяОплата" не входит в Объект.
Как Из Документа-объекта Обратиться К Реквизиту Формы?
Здравствуйте! Подскажите, пожалуйста, как из документа объекта обратиться к реквизиту формы этого.
Как обратиться к реквизиту экранной формы в модуле документа?
Привет Всем Не подскажите как можно обратится к реквизиту многострочной части экранной формы из.
как можно обратиться к реквизиту справочника из модуля документа?
я пытаюсь вот таким образом: &НаКлиенте Процедура ПробегПриИзменении(Элемент).
Обращение к реквизиту из внешней обработки
Как обратиться к реквизиту документа из внешней обработки?
Реквизит формы нигде не хранится. Его значение придется вычислить аналогично как это делается в форме.
Всем спасибо, решил вопрос по другому.
Спрошу в этой теме, т.к. вопрос не большой: добавил на форму переключатель
Все работает, НО при выборе любого пункта из списка выбора не отображается "точка", просто обводится желтым квадратиком, типа выделен объект. И не понятно какой пункт выбран.
Никакой.
Форма обычная? Проверьте связь с данными, выбираемые значения и порядок обхода элементов управления.
Управляемая форма. Пункт ВЫБРАН, т.к. код отрабатывает при выборе разных пунктов правильно. При выборе одного из пунктов ставится точка, но тут же пропадает, хотя фактически этот пункт считается выбранным. Может в свойствах где надо галочку поставить? я не нашел(
polax, имя реквизита было "ТипРеестра", а имя поля переключателя на форме "ТипыРеестра". Видимо в этом, хотя мне не понятно какая разница как называется элемент на форме, если в нем указывается путь к данным.
Как из внешней обработки открыть печатную форму документа
Добрый день! Работаю в бухгалтерии предприятия 3.0. Во внешней обработке программно создаю и.
Создание внешней обработки документа
Добрый день! Мне необходимо создать документ КС-2 в 1С:Бухгалтерия 8.2. .
Обращение к реквизиту формы документа через внешнюю печатную форму.
Здравствуйте Есть внешняя печатная форма и документ "Договор". У документа есть на форме реквизит.
Удаление строки ТЧ документа из Внешней обработки
Доброго времени суток Разрабатываю внешнюю обработку, необходимо сравнить табличные части двух.
Читайте также: