Передать значение реквизита формы в модуль объекта

Передача переменной из модуля формы, в модуль объекта

Я
   Kaban145

12.12.21 — 17:17

Здравствуйте, есть обработка, в модуле формы переменная НачДата, заполняется значением на форме, как можно передать это значение в модуль объекта?

  

Партнерская программа EFSOL Oblako

   ДенисЧ

1 — 12.12.21 — 17:19

Параметром функции, например.

   acht

2 — 12.12.21 — 17:24

(1) Гении обычно передают через справочник дор_ЗПСлужебный

   ДенисЧ

3 — 12.12.21 — 17:26

(2) Тут не геня, не надо плохого…

   Kaban145

4 — 12.12.21 — 17:35

А можно пример кода?

   Ненавижу 1С

5 — 12.12.21 — 17:41

(0) только не в модуль объекта, а в объект:

&НаСервере

Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

    ТекущийОбъект.ДополнительныеСвойства.Вставить(«НеобходимаяНачДата»,НачДата);

    
КонецПроцедуры

   Ненавижу 1С

6 — 12.12.21 — 17:41

(5) естественно этот метод должен быть соответствующим событием формы

   Kaban145

7 — 12.12.21 — 17:46

А без использования процедуры ПередЗаписью?

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

   acht

8 — 12.12.21 — 17:56

(7) Где хранятся данные, которые вводятся через это @поле типа Дата»? В реквизитах объекта или реквизитах формы?

   Kaban145

9 — 12.12.21 — 18:00

Реквизит объекта

   acht

10 — 12.12.21 — 18:02

(9) > Реквизит объекта

В этом случае эта дата доступна в том же самом реквизите объекта при работе метода внутри контекста объекта.

   Ненавижу 1С

11 — 12.12.21 — 18:10

(9) люди на пустом месте себе проблемы создают

   Kaban145

12 — 12.12.21 — 18:28

Как это в коде написать?

   Ненавижу 1С

13 — 12.12.21 — 19:40

(12) что это? Если это реквизит объекта, то вынеси его на форму. Всё будет сохраняться в объекте «само»

   Kaban145

14 — 12.12.21 — 20:30

(13)  ты мне уже раз в 7 помогаешь, спасибо.)

   acht

15 — 12.12.21 — 21:33

(14) Максим, а ты когда (9) писал, что в виду-то имел?

   Kaban145

16 — 12.12.21 — 21:39

Нет, не помогло, он уже на форме, но запрос всё равно не выполняется по дате

   Kaban145

17 — 12.12.21 — 21:41

Если указать дату строкой в модуле объекта, то всё работает, а перенести значение с формы не получается

   hhhh

18 — 12.12.21 — 21:46

(17) в процедуре ПередЗаписью реквизит еще не записан. Поэтому запросом не вариант.

   acht

19 — 12.12.21 — 21:50

(18) Откуда вы взяли, что это все происходит прт записи?

   hhhh

20 — 12.12.21 — 22:34

(19) да, ошибся. Но если как в (7), то у него вообще ничего в базу не пишется, а он пробует запросом прочитать дату из базы.

   Kaban145

21 — 12.12.21 — 22:43

Нет, у меня на форме реквизит Дата, и кнопка, кнопка выполняет запрос который в модуле объекта, в запросе есть фильтр по дате и мне нужно передать из формы реквизит Дата в модуль объекта

   hhhh

22 — 12.12.21 — 23:30

(21) тогда (1)

   Сергиус

23 — 13.12.21 — 04:36

(0)Завести реквизит объекта не предлагать?

   Ryzeman

24 — 13.12.21 — 07:54

(0), (21)

Модуль формы:

&НаСервере

Процедура МояКнопкаНаСервере()

    ОбъектОбработки = РеквизитФормыВЗначение(«Объект»);

    ОбъектОбработки.ВыполнитьМоюОбработку(Объект.Дата);

КонецПроцедуры

&НаКлиенте

Процедура МояКнопка(Команда)

    МояКнопкаНаСервере();

КонецПроцедуры

Модуль объекта:

Процедура ВыполнитьМоюОбработку(Дата = Неопределено) Экспорт

    Сообщить(Дата);    

КонецПроцедуры

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

   crasler

25 — 13.12.21 — 15:45

(24) При таком раскладе параметр Дата вообще не нужен, т.к. судя Дата это реквизит объекта!

   1Сергей

26 — 13.12.21 — 16:13

(25) Речь идёт не про модуль обработки как я пони

   acht

27 — 13.12.21 — 16:18

(26) > не про модуль обработки

Каким органом вы все читаете?

В (0) прямым текстом же указано «есть обработка, в модуле формы переменная заполняется значением на форме, как можно передать это значение в модуль объекта»

Вы вот, т-щи 1Сники, и с ТЗ же так поступаете.

   1Сергей

28 — 13.12.21 — 16:19

(27) :)

не сказано какого объекта

   acht

29 — 13.12.21 — 16:22

(28) Тогда предлагаю модуль менеджера перечисления, как самый часто используемый =)

   Kassern

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С компании ООО “Кодерлайн” 

Игорь Цебоев.

Перейти к содержимому

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

Код в модуле формы:

10

Затем через ДополнительныеСвойства()в модуле объекта можно обратиться к данным значениям по индексу

Код в модуле объекта:

11

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

Код в модуле объекта:

12

Затем через ДополнительныеСвойства()в модуле объекта можно обратиться к данным значениям по индексу

Код в модуле формы:

13

как получить значение реквизита

Автор mashencev_anton, 29 мая 2015, 15:33

0 Пользователей и 1 гость просматривают эту тему.

  в модуле объекта(внешняя обработка)  программно вывожу отчет СКД. в качестве параметра СКД необходимо использовать значение реквизита формы. как мне его получить в модуле объекта?


его можно туда передать из модуля формы

Помогли — Скажи спасибо! Решил сам — поделись решением!
:)


Цитата: Rasty от 29 мая 2015, 15:54
его можно туда передать из модуля формы

делаю вот так
в модуле формы:

&НаСервере
Процедура  ТипЦенНаСервере() 
ТипЦены=Объект.ТипЦен;
ОбъектОбъекта = РеквизитФормыВЗначение("Объект");
ОбъектОбъекта.ТипЦен(ТипЦены);
КонецПроцедуры

потом в модуле объекта


Перем пТипЦен;

Функция   ТипЦен(ТипЦены)   Экспорт

пТипЦен=ТипЦены;
         
КонецФункции


но не срабатывает


А что у вас в переменной ТипЦены? И почему бы ее не сделать Объектом Формы?

Помогли — Скажи спасибо! Решил сам — поделись решением!
:)



вы сможете его получить из модуля объект обратившись по имени «ТипЦены» и из ссылки на документ

Помогли — Скажи спасибо! Решил сам — поделись решением!
:)



да хоть отчет, сути не меняет

Помогли — Скажи спасибо! Решил сам — поделись решением!
:)



и еще разок
сделайте ТипЦены не реквизитом формы, а реквизитом обработки, и вы сможете получить к ней прямой доступ!!!!!!!!!!!!!!! ui;;t;

Помогли — Скажи спасибо! Решил сам — поделись решением!
:)


Adara
17.08.2012 11:25 Прочитано: 7541

Доброго Всем!

Возникла проблема: Как передать из модуля формы внешней обработки в модуль объекта этой же обработки какое-либо значение? Добавляла в реквизиты формы (СтрокаДанных ) — не видит в модуле объекта.Более того почему-то из модуля объекта реквизит «Объект»тоже не виден О_О

Может что-то не так делаю…всегда реквизиты были видны в модуле объекта, а уж основной тем более.

Yandex
Возможно, вас также заинтересует

Реклама на портале

Mokey
20.08.2012 09:53 Ответ № 1

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

Adara
20.08.2012 12:12 Ответ № 2

Спасибо! Попробовала. Все равно АдресХранилищаПроба = «Неопределенно».Код 1C v 8.2 УП

 АдресХранилищаПроба   

— экспортная переменная.

В модуле формы заполняю

Код 1C v 8.2 УП

 АдресХранилищаПроба = ПоместитьВоВременноеХранилище(Объект.КомплектПечатныхФормОсновной.Выгрузить(),ЭтаФорма.УникальныйИдентификатор);

.

В модуле объекта:

Код 1C v 8.2 УП

 ПользовательскиеНастройкиПечатныхФорм = ПолучитьИзВременногоХранилища(АдресХранилищаПроба);   

Возможно это из-за этого: сначала заполняю переменную в модуле формы обработки, потом открываю общую форму, а уже из нее перехожу в модуль объекта моей обработки…неужели после передачи управление общей форме, все реквизиты и переменные обнуляются?

П.С. Форму своей обработки не закрываю. Она открыта все время.


Изменено 20.08.12 12:13:18

Mokey
20.08.2012 16:43 Ответ № 3

ЭтотОбъект.АдресХранилищаПроба = ПоместитьВоВременноеХранилище(Объект.КомплектПечатныхФормОсновной.Выгрузить(),ЭтаФорма.УникальныйИдентификатор);

Adara
21.08.2012 10:40 Ответ № 4

Чтобы получить объект в модуле формы преобразовала «Объект»:Код 1C v 8.2 УП

 
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");

ОбработкаОбъект.АдресХранилищаПроба = ПоместитьВоВременноеХранилище(Объект.КомплектПечатныхФормОсновной.Выгрузить(),
ЭтаФорма.УникальныйИдентификатор);

ЗначениеВРеквизитФормы(ОбработкаОбъект,"Объект");

Но даже так переменная пустая, хотя при данном коде записывается (проверенно отладчиком). *09


Изменено 21.08.12 10:41:05

Mokey
21.08.2012 14:34 Ответ № 5

А ЭтотОбъкект нет такого реквизита из модуля формы?

Adara
21.08.2012 15:10 Ответ № 6

Нет нету…в том-то и странность — всегда было и «Объект» и «ЭтотОбъект».

Mokey
22.08.2012 10:11 Ответ № 7

В реквизитах ФОРМЫ прописать, что ЭТОТОБЪЕКТ = ВнешняяОбработка.ИмяОбработки. В принципе, не важно, как будет называться, ЭтотОбъект или ОбработкаОбъект.

Mokey
22.08.2012 10:15 Ответ № 8

title

Да, только это под 8.1


Изменено 22.08.12 10:16:12

Adara
22.08.2012 10:31 Ответ № 9

Увы… 8.2 управляемое.

Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху)
Skip to content

1С, получить из модуля объекта элемент формы

Получить из модуля объекта элемент формы

В разработке иногда возникает следующая ситуация:

  • Из модуля объекта требуется получить реквизит формы элемента;
  • При этом реквизит формы элемента (который необходимо получить) не сохраняется в реквизиты объекта;

План действий для решения задачи

  • Создать реквизит объекта «АдресВХ», тип строка неограниченной длины;

  • В свойствах формы элемента добавим обработчик «Перед записью»:

  • В обработчик добавим следующий программный код:
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	Объект.АдресВХ = ПоместитьВоВременноеХранилище(ТабДок);
КонецПроцедуры

В нашем случае во временной хранилище мы помещаем «ТабДок», данный реквизит будем получать в модуле объекта;

  • Переходим в модуль объекта и создаем процедуру «Перед записью», добавляем код:
Процедура ПередЗаписью(Отказ)
	ТабДок = ПолучитьИзВременногоХранилища(АдресВХ);    
КонецПроцедуры

В результате мы передали элемент из формы в модуль объекта, хоть и добавили в дерево метаданных вспомогательный реквизит «АдресВХ»;

Связанные статьи

  1. Как передать значение из модуля формы, в модуль объекта?

  2. Судя по обсуждению в чате вопрос более широкий чем его текущая формулировка.

    Уточни, плз.

    — Объединение сообщений, 26 ноя 2015

    а то см .»РеквизитФормыВЗначение»

  3. Короче. У меня есть отчет на СКД. Все формируется стандартным путем. В модуле объекта есть процедура ПриКомпоновкеРезультата. Там у меня в зависимости от условий формируется определнный варинат отчета. Сейчас получилось так, что когда деалешь расшифровку, то срабатывает опять эта процедура и опять устанавливается вариант. Так вот. Хочу поставить условия, что если сейчас отчет формируется из расшифроки то не загружать вариант отчета. А если нет, то загружать. В процедуре ОбработкаРасшифровки хочу определить значений переменной. А в модуле объекта хочу его получить. Как?


  4. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    Почему нельзя завести в отчете реквизит и через него гонять?

  5. Да не получается. Не гоняется.

    — Объединение сообщений, 26 ноя 2015

    А я походу понял почему. При расширофровке формируется новая форма. Объект то другой. Блин.

    — Объединение сообщений, 26 ноя 2015

    А как тогда быть в моем случае?

  6. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
        СтруктураНастроек = КомпоновщикНастроек.Настройки.Структура;
       
        Для Каждого ЭлементСтруктуры Из СтруктураНастроек Цикл
           
            ИмяЭлементаСтруктуры = ЭлементСтруктуры.Имя;
            Если ИмяЭлементаСтруктуры = "Расшифровка" Тогда
               
                // Сделать что то при расшифровке
               
            КонецЕсли;
           
        КонецЦикла;
       
    
    КонецПроцедуры
    

    — Объединение сообщений, 26 ноя 2015

    Можно зайти через доп. свойства :

    Если КомпоновщикНастроек.Настройки.ДополнительныеСвойства.ВариантНаименование = "Расшифровка" Тогда
         // Сделать что то при расшифровке
    КонецЕсли;
    Последнее редактирование: 26 ноя 2015

    nbIpKuH_BaH9I нравится это.
  7. Не канает. Но мальца по-другому сделал. Спасибо за идею.

  8. Подход в общем банальный, точка останова и смотрим, что есть в настройках компоновщика :)

  9. Это называется выход из положения. Но такая реализация мне не нравится :(

  10. Если поковырять все новые ЗУП, БУХ, ERP там кругом сплошной «выход из положения» :D


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Понравилась статья? Поделить с друзьями:
  • Передать реквизиты в пфр через сбербанк онлайн как
  • Паспортный стол на демьяна бедного 26 время работы
  • Передача персональных данных транспортной компании
  • Паспортный стол на ленинском 55 корп 2 часы работы
  • Передача показаний петербургская сбытовая компания