1с как передать реквизит формы в модуль объекта

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

Я
   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

Skip to content

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 управляемое.

Подсказка: Для быстрого поиска ответов — используйте ‘Поиск’
  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

Хай всем! Суть вопроса. Мне нужно учитывать значение данных на форме при проведении документа. Вроде банальная ситуация. Но объясните мне, как учесть тот факт, чтоб НЕ обращаясь к форме выполнить перепроведение документа? К примеру стандартной обработкой или из формы списка через контекстное меню. Находил решение создавать экспортную переменную в модуле объекта, присваивать ей значение из модуля формы и использовать дальше в модуле объекта. Не подходит, потому что тогда значения моих экспортных параметров естественно не определены. Кусок кода: Здесь «ВидКомиссии» — это та же экспортная переменная, которой НЕ присваивается значение, если проведение делать НЕ из формы. «РазмерКомиссии» — дальше использую в модуле объекта, где мне нужно. Прощу помощи! P.S.: И всех с праздниками!!!)

сделай ее реквизитом объекта и всего делов

«Комиссия» и «Сумма» — это реквизиты документа. Сразу говорю, что вариант создания реквизитов — это на худой конец! Хочется узнать, есть ли решения без этого метода?

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

иначе, например, при программном перепроведении ты огребешь много интересного

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

А это, собственно, и есть тот ответ, который аргументирует необходимость создания реквизитов объекта для моего дела. Спасибо всем!

А потом на форуме холиварят, мол, зачем эти долбаные сертификаты от 1С, это всего лишь бумажка, получите и распишитесь!

А доп. свойства объекта не подходят?

Они заполняются стиоронне.И не факт, что при программном перепроведении будут заполненны

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

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Понравилась статья? Поделить с друзьями:
  • Адмиралтейские верфи бюро пропусков часы работы
  • Авиационная компания авиашельф официальный сайт
  • Адреса медицинских страховых компаний в брянске
  • Авито купить готовый бизнес в саратове на авито
  • Акционерное общество банк центркредит реквизиты