Передача переменной из модуля формы, в модуль объекта |
Я |
12.12.21 — 17:17
Здравствуйте, есть обработка, в модуле формы переменная НачДата, заполняется значением на форме, как можно передать это значение в модуль объекта?
1 — 12.12.21 — 17:19
Параметром функции, например.
2 — 12.12.21 — 17:24
(1) Гении обычно передают через справочник дор_ЗПСлужебный
3 — 12.12.21 — 17:26
(2) Тут не геня, не надо плохого…
4 — 12.12.21 — 17:35
А можно пример кода?
5 — 12.12.21 — 17:41
(0) только не в модуль объекта, а в объект:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ТекущийОбъект.ДополнительныеСвойства.Вставить(«НеобходимаяНачДата»,НачДата);
КонецПроцедуры
6 — 12.12.21 — 17:41
(5) естественно этот метод должен быть соответствующим событием формы
7 — 12.12.21 — 17:46
А без использования процедуры ПередЗаписью?
В обработке поле ввода типа Дата, вводится дата и выполняется запрос, который лежит в модуле объекта, вот туда нужно передать эту дату для фильтра запроса и всё
8 — 12.12.21 — 17:56
(7) Где хранятся данные, которые вводятся через это @поле типа Дата»? В реквизитах объекта или реквизитах формы?
9 — 12.12.21 — 18:00
Реквизит объекта
10 — 12.12.21 — 18:02
(9) > Реквизит объекта
В этом случае эта дата доступна в том же самом реквизите объекта при работе метода внутри контекста объекта.
11 — 12.12.21 — 18:10
(9) люди на пустом месте себе проблемы создают
12 — 12.12.21 — 18:28
Как это в коде написать?
13 — 12.12.21 — 19:40
(12) что это? Если это реквизит объекта, то вынеси его на форму. Всё будет сохраняться в объекте «само»
14 — 12.12.21 — 20:30
(13) ты мне уже раз в 7 помогаешь, спасибо.)
15 — 12.12.21 — 21:33
(14) Максим, а ты когда (9) писал, что в виду-то имел?
16 — 12.12.21 — 21:39
Нет, не помогло, он уже на форме, но запрос всё равно не выполняется по дате
17 — 12.12.21 — 21:41
Если указать дату строкой в модуле объекта, то всё работает, а перенести значение с формы не получается
18 — 12.12.21 — 21:46
(17) в процедуре ПередЗаписью реквизит еще не записан. Поэтому запросом не вариант.
19 — 12.12.21 — 21:50
(18) Откуда вы взяли, что это все происходит прт записи?
20 — 12.12.21 — 22:34
(19) да, ошибся. Но если как в (7), то у него вообще ничего в базу не пишется, а он пробует запросом прочитать дату из базы.
21 — 12.12.21 — 22:43
Нет, у меня на форме реквизит Дата, и кнопка, кнопка выполняет запрос который в модуле объекта, в запросе есть фильтр по дате и мне нужно передать из формы реквизит Дата в модуль объекта
22 — 12.12.21 — 23:30
(21) тогда (1)
23 — 13.12.21 — 04:36
(0)Завести реквизит объекта не предлагать?
24 — 13.12.21 — 07:54
(0), (21)
Модуль формы:
&НаСервере
Процедура МояКнопкаНаСервере()
ОбъектОбработки = РеквизитФормыВЗначение(«Объект»);
ОбъектОбработки.ВыполнитьМоюОбработку(Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура МояКнопка(Команда)
МояКнопкаНаСервере();
КонецПроцедуры
Модуль объекта:
Процедура ВыполнитьМоюОбработку(Дата = Неопределено) Экспорт
Сообщить(Дата);
КонецПроцедуры
Это решение. Но судя по тому, что ты пишешь, это будет решением на неправильно поставленную задачу. Если ты что-то проверяешь запросом, то логичнее всего, что это должно происходить при записи, и скорее всего, в подписке на событие. Если же это проверка интерактивных действий пользователя, то вряд ли тут нужен модуль объекта вообще, и все проверки следует делать на форме.
25 — 13.12.21 — 15:45
(24) При таком раскладе параметр Дата вообще не нужен, т.к. судя Дата это реквизит объекта!
26 — 13.12.21 — 16:13
(25) Речь идёт не про модуль обработки как я пони
27 — 13.12.21 — 16:18
(26) > не про модуль обработки
Каким органом вы все читаете?
В (0) прямым текстом же указано «есть обработка, в модуле формы переменная заполняется значением на форме, как можно передать это значение в модуль объекта»
Вы вот, т-щи 1Сники, и с ТЗ же так поступаете.
28 — 13.12.21 — 16:19
(27)
не сказано какого объекта
29 — 13.12.21 — 16:22
(28) Тогда предлагаю модуль менеджера перечисления, как самый часто используемый =)
30 — 13.12.21 — 16:24
Я так понимаю ТС не может в процедуру/функцию модуля объекта параметр передать из формы? Что мешает ВашаПроцедура(НужнаяДата) использовать?
Kassern
31 — 13.12.21 — 16:25
Так же есть ДополнительныеСвойства, для этого дела, а если еще и БСП есть в конфе и речь о внешней обработке встроенной, то можно воспользоваться хранилищем настроек
Содержание
1. Задача передачи параметров 1С
2. Реализация с модулем объекта документа 1С
Иногда возникает необходимость передачи параметров 1С, установленных в определенной управляемой форме документа 1С, в модуль объекта 1С 8.3. При этом крайне нежелательно создавать отдельные реквизиты для этого документа. Поэтому в данной ситуации можно пользоваться глобальными переменными 1С. В дальнейшем они могут быть использованы в процедурах и функциях этого модуля. Если переменная определена с ключевым словом «экспорт», то она будет доступна вне данного модуля.
1. Задача передачи параметров 1С
Предположим, есть некий документ, на основной форме документа которого располагается гиперссылка в 1С, вызывающая другую форму с вводом определенных настроек. Необходимо чтобы после выбора настроек они были переданы в модуль объекта 1С 8.3 документа для последующей обработки в процедуре проведения.
2. Реализация с модулем объекта документа 1С
В самом начале модуля объекта документа 1С необходимо определить переменную, в которую будут передаваться выбранные настройки. Также необходимо ей присвоить признак «экспорт», чтобы переменная была доступна в любом месте документа.
В модуле основной формы документа в обработчике события 1С кнопки, открывающей форму с выбором настроек, необходимо указать процедуру Новый ОписаниеОповещения(). Это определяет результат после закрытия формы настроек в 1С 8.3.
В форме настроек для сохранении и передачи параметров 1С (в нашем случаи это структура) необходимо указывать процедуру ОповеститьОВыборе()
Далее нужно создать саму процедуру оповещения, в которой будем обрабатывать в результате закрытия формы настроек. В качестве приемника создаем реквизит основной формы ПараметрыПереоценки (можно создать глобальную переменную в модуле основной формы) и в нее передаем результат закрытия.
И в заключительном этапе (например, в процедуре ПередЗаписьНаСервере() передадим из реквизита формы сохраненную структуру настроек в глобальную переменную, которую определяли в модуле объекта документа.
В итоге настройки, выбранные на дочерней форме открытой из основной формы документа, теперь доступны в модуле объекта и могут быть обработаны в любой его процедуре, например, в процедуре проведения.
Разработчик 1С компании ООО “Кодерлайн”
Игорь Цебоев.
Перейти к содержимому
При необходимости передать значение из модуля формы в модуль объекта нужно в в любой предопределенной процедуре производящей запись через ДополнительныеСвойства() добавить необходимые данные
Код в модуле формы:
Затем через ДополнительныеСвойства()в модуле объекта можно обратиться к данным значениям по индексу
Код в модуле объекта:
Подобным образом можно передать данные из модуля объекта в модуль формы. Для этого необходимо так же, в предопределенной процедуре производящей запись добавить нужные значения в структуру ДополнительныеСвойства()
Код в модуле объекта:
Затем через ДополнительныеСвойства()в модуле объекта можно обратиться к данным значениям по индексу
Код в модуле формы:
как получить значение реквизита
Автор mashencev_anton, 29 мая 2015, 15:33
0 Пользователей и 1 гость просматривают эту тему.
в модуле объекта(внешняя обработка) программно вывожу отчет СКД. в качестве параметра СКД необходимо использовать значение реквизита формы. как мне его получить в модуле объекта?
его можно туда передать из модуля формы
Помогли — Скажи спасибо! Решил сам — поделись решением!
Цитата: Rasty от 29 мая 2015, 15:54
его можно туда передать из модуля формы
делаю вот так
в модуле формы:
&НаСервере
Процедура ТипЦенНаСервере()
ТипЦены=Объект.ТипЦен;
ОбъектОбъекта = РеквизитФормыВЗначение("Объект");
ОбъектОбъекта.ТипЦен(ТипЦены);
КонецПроцедуры
потом в модуле объекта
Перем пТипЦен;
Функция ТипЦен(ТипЦены) Экспорт
пТипЦен=ТипЦены;
КонецФункции
но не срабатывает
А что у вас в переменной ТипЦены? И почему бы ее не сделать Объектом Формы?
Помогли — Скажи спасибо! Решил сам — поделись решением!
вы сможете его получить из модуля объект обратившись по имени «ТипЦены» и из ссылки на документ
Помогли — Скажи спасибо! Решил сам — поделись решением!
да хоть отчет, сути не меняет
Помогли — Скажи спасибо! Решил сам — поделись решением!
и еще разок
сделайте ТипЦены не реквизитом формы, а реквизитом обработки, и вы сможете получить к ней прямой доступ!!!!!!!!!!!!!!!
Помогли — Скажи спасибо! Решил сам — поделись решением!
Adara |
|
||
---|---|---|---|
Доброго Всем!
Возникла проблема: Как передать из модуля формы внешней обработки в модуль объекта этой же обработки какое-либо значение? Добавляла в реквизиты формы (СтрокаДанных ) — не видит в модуле объекта.Более того почему-то из модуля объекта реквизит «Объект»тоже не виден О_О Может что-то не так делаю…всегда реквизиты были видны в модуле объекта, а уж основной тем более. |
Yandex |
|
||
---|---|---|---|
Mokey |
|
||
---|---|---|---|
Объявите в модуле обработки переменную на экспорт и передавайте значение через эту переменную из модуля формы в модуль объекта. |
Adara |
|
||
---|---|---|---|
Спасибо! Попробовала. Все равно АдресХранилищаПроба = «Неопределенно».Код 1C v 8.2 УП
— экспортная переменная. В модуле формы заполняю Код 1C v 8.2 УП
. В модуле объекта: Код 1C v 8.2 УП
Возможно это из-за этого: сначала заполняю переменную в модуле формы обработки, потом открываю общую форму, а уже из нее перехожу в модуль объекта моей обработки…неужели после передачи управление общей форме, все реквизиты и переменные обнуляются? П.С. Форму своей обработки не закрываю. Она открыта все время. Изменено 20.08.12 12:13:18 |
Mokey |
|
||
---|---|---|---|
ЭтотОбъект.АдресХранилищаПроба = ПоместитьВоВременноеХранилище(Объект.КомплектПечатныхФормОсновной.Выгрузить(),ЭтаФорма.УникальныйИдентификатор); |
Adara |
|
||
---|---|---|---|
Чтобы получить объект в модуле формы преобразовала «Объект»:Код 1C v 8.2 УП
Но даже так переменная пустая, хотя при данном коде записывается (проверенно отладчиком). *09 Изменено 21.08.12 10:41:05 |
Mokey |
|
||
---|---|---|---|
А ЭтотОбъкект нет такого реквизита из модуля формы? |
Adara |
|
||
---|---|---|---|
Нет нету…в том-то и странность — всегда было и «Объект» и «ЭтотОбъект». |
Mokey |
|
||
---|---|---|---|
В реквизитах ФОРМЫ прописать, что ЭТОТОБЪЕКТ = ВнешняяОбработка.ИмяОбработки. В принципе, не важно, как будет называться, ЭтотОбъект или ОбработкаОбъект. |
Mokey |
|
||
---|---|---|---|
Да, только это под 8.1 Изменено 22.08.12 10:16:12 |
Adara |
|
||
---|---|---|---|
|
Увы… 8.2 управляемое. |
Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху) |
1С, получить из модуля объекта элемент формы
В разработке иногда возникает следующая ситуация:
- Из модуля объекта требуется получить реквизит формы элемента;
- При этом реквизит формы элемента (который необходимо получить) не сохраняется в реквизиты объекта;
План действий для решения задачи
- Создать реквизит объекта «АдресВХ», тип строка неограниченной длины;
- В свойствах формы элемента добавим обработчик «Перед записью»:
- В обработчик добавим следующий программный код:
&НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) Объект.АдресВХ = ПоместитьВоВременноеХранилище(ТабДок); КонецПроцедуры
В нашем случае во временной хранилище мы помещаем «ТабДок», данный реквизит будем получать в модуле объекта;
- Переходим в модуль объекта и создаем процедуру «Перед записью», добавляем код:
Процедура ПередЗаписью(Отказ) ТабДок = ПолучитьИзВременногоХранилища(АдресВХ); КонецПроцедуры
В результате мы передали элемент из формы в модуль объекта, хоть и добавили в дерево метаданных вспомогательный реквизит «АдресВХ»;
Связанные статьи
-
Как передать значение из модуля формы, в модуль объекта?
-
Судя по обсуждению в чате вопрос более широкий чем его текущая формулировка.
Уточни, плз.
— Объединение сообщений, 26 ноя 2015 —
а то см .»РеквизитФормыВЗначение»
-
Короче. У меня есть отчет на СКД. Все формируется стандартным путем. В модуле объекта есть процедура ПриКомпоновкеРезультата. Там у меня в зависимости от условий формируется определнный варинат отчета. Сейчас получилось так, что когда деалешь расшифровку, то срабатывает опять эта процедура и опять устанавливается вариант. Так вот. Хочу поставить условия, что если сейчас отчет формируется из расшифроки то не загружать вариант отчета. А если нет, то загружать. В процедуре ОбработкаРасшифровки хочу определить значений переменной. А в модуле объекта хочу его получить. Как?
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
Почему нельзя завести в отчете реквизит и через него гонять?
-
Да не получается. Не гоняется.
— Объединение сообщений, 26 ноя 2015 —
А я походу понял почему. При расширофровке формируется новая форма. Объект то другой. Блин.
— Объединение сообщений, 26 ноя 2015 —
А как тогда быть в моем случае?
-
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтруктураНастроек = КомпоновщикНастроек.Настройки.Структура; Для Каждого ЭлементСтруктуры Из СтруктураНастроек Цикл ИмяЭлементаСтруктуры = ЭлементСтруктуры.Имя; Если ИмяЭлементаСтруктуры = "Расшифровка" Тогда // Сделать что то при расшифровке КонецЕсли; КонецЦикла; КонецПроцедуры
— Объединение сообщений, 26 ноя 2015 —
Можно зайти через доп. свойства :
Если КомпоновщикНастроек.Настройки.ДополнительныеСвойства.ВариантНаименование = "Расшифровка" Тогда // Сделать что то при расшифровке КонецЕсли;
Последнее редактирование: 26 ноя 2015
nbIpKuH_BaH9I нравится это.
-
Не канает. Но мальца по-другому сделал. Спасибо за идею.
-
Подход в общем банальный, точка останова и смотрим, что есть в настройках компоновщика
-
Это называется выход из положения. Но такая реализация мне не нравится
-
Если поковырять все новые ЗУП, БУХ, ERP там кругом сплошной «выход из положения»