Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 21:50

Передача данный из формы в подчиненную форму

Автор Никитa, 18 фев 2014, 08:21

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

Никитa

Подскажите пожалуйста как передавать данные из формы в подчиненную форму?   :dfbsdfbsdf:
На главной форме мы указываем в поле ответственное лицо: Иванов И.И                  нужно сделать так, что когда мы открываем подчиненную форму у нас уже стояло ответственное лицо : Иванов И.И
Это нужно для удобства, чтобы не указывать 2 раза ответственное лицо.

mixqn

Приведите код, которым открывается подчиненная форма.

Скорее всего там есть что-то вроде:
ОткрываемаяФорма = ЧтоТоБлаБлаБла.ПолучитьФорму();
ОткрываемаяФорма.Открыть();

Если это так, то сделайте вот так:
ОткрываемаяФорма = ЧтоТоБлаБлаБла.ПолучитьФорму();
ОткрываемаяФорма.ИмяРеквизитаКоторыйВамНадоЗаполнить = ЗначениеКотороеНадоПодставить;
ОткрываемаяФорма.Открыть();

wise

(0) реквизит "ОтветственноеЛицо" и во ВСЕХ формах ВСЁ в порядке. (ИМХО твой случай)

а вообще, можно ЗАПОЛНИТЬ ОтветственноеЛицо ДО открытия...

а ЕЩЁ здесь можно посмотреть...
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Никитa

Цитата: mixqn от 18 фев 2014, 08:53
Приведите код, которым открывается подчиненная форма.

Скорее всего там есть что-то вроде:
ОткрываемаяФорма = ЧтоТоБлаБлаБла.ПолучитьФорму();
ОткрываемаяФорма.Открыть();

Если это так, то сделайте вот так:
ОткрываемаяФорма = ЧтоТоБлаБлаБла.ПолучитьФорму();
ОткрываемаяФорма.ИмяРеквизитаКоторыйВамНадоЗаполнить = ЗначениеКотороеНадоПодставить;
ОткрываемаяФорма.Открыть();

Там такая штука

Процедура ПриОткрытии()
         
   Если ЭтоНовый() тогда
         НачалоПлан = ТекущаяДата();
         
         ОкончаниеПлан = ТекущаяДата() + 86400;
         
         
         Статус = Перечисления.СтатусМероприятия.План;
         Наименование = "Задача " + Код;
         Распределять = истина;
   КонецЕсли;   
   
КонецПроцедуры

mixqn

Цитата: Никитa от 18 фев 2014, 08:59Там такая штука
там - это где?
каким образом открывается подчиненная форма?

Никитa

Цитата: mixqn от 18 фев 2014, 09:05
Цитата: Никитa от 18 фев 2014, 08:59Там такая штука
там - это где?
каким образом открывается подчиненная форма?
Скрины вот ...там красным на последнем отметил, где нужно чтобы автоматически при открытии формы и прописывалась фамилия ...в данном случае Гайсина Зульфия Нажиповна.
111.JPG
222.JPG
333.JPG
Модуль подчиненной формы вот:

Процедура ПриОткрытии()
         
   Если ЭтоНовый() тогда
         НачалоПлан = ТекущаяДата();
         
         ОкончаниеПлан = ТекущаяДата() + 86400;
         
         
         Статус = Перечисления.СтатусМероприятия.План;
         Наименование = "Задача " + Код;
         Распределять = истина;
   КонецЕсли;   
   
КонецПроцедуры


Процедура МатериалыМатериалПриИзменении(Элемент)
   
   ТекущиеДанные = ЭлементыФормы.Материалы.ТекущиеДанные;
   Материал=ТекущиеДанные.Материал;
   Если НЕ ПустаяСтрока(Материал.ЕдиницыИзмерения) Тогда
         ТекущиеДанные.ЕдиницыИзмерения = Материал.ЕдиницыИзмерения;
   КонецЕсли;
   Если ТекущиеДанные.Количество = 0 тогда
      ТекущиеДанные.Количество = 1;
   КонецЕсли;
   
КонецПроцедуры

Процедура ОборудованиеОборудованиеПриИзменении(Элемент)
      
   ТекущиеДанные = ЭлементыФормы.Оборудование.ТекущиеДанные;
   Если ТекущиеДанные.Количество = 0 тогда
      ТекущиеДанные.Количество = 1;
   КонецЕсли;
   
КонецПроцедуры

Процедура ИсполнителиИсполнительПриИзменении(Элемент)
   ТекущиеДанные = ЭлементыФормы.Исполнители.ТекущиеДанные;
   Если ТекущиеДанные.ДоляУчастия = 0  и Исполнители.Количество() = 1 тогда
      ТекущиеДанные.ДоляУчастия = 100;
   Иначе   
      Если Распределять тогда   
         Для каждого Исполнитель из Исполнители цикл
            Исполнитель.ДоляУчастия=100/Исполнители.Количество();
         КонецЦикла;
      КонецЕсли;
   КонецЕсли;
   
   
   

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

Процедура ИсполнителиДоляУчастияПриИзменении(Элемент)
   
         
   Если Распределять тогда   
         Для каждого Исполнитель из Исполнители цикл
            Исполнитель.ДоляУчастия=100/Исполнители.Количество();
         КонецЦикла;
      Иначе
         
         
         ДоляУчастияИтого = 0;
         Для каждого Исполнитель из Исполнители цикл
            ДоляУчастияИтого = ДоляУчастияИтого+Исполнитель.ДоляУчастия;
         КонецЦикла;
         
         Если ДоляУчастияИтого>100 Тогда
          ТекущиеДанные = ЭлементыФормы.Исполнители.ТекущиеДанные;
             ДоляУчастиТекущееЗначение = ТекущиеДанные.ДоляУчастия;
              Если ДоляУчастияИтого - ДоляУчастиТекущееЗначение <= 100 Тогда
               ТекущиеДанные.ДоляУчастия = 100 - (ДоляУчастияИтого - ДоляУчастиТекущееЗначение); 
                 Иначе   
                         Для каждого Исполнитель из Исполнители цикл
                           Исполнитель.ДоляУчастия=100/Исполнители.Количество();
                  КонецЦикла;
              КонецЕсли;
         
         КонецЕсли;   
         
                  
         
         
         
         
         
         
   КонецЕсли;

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

Процедура ФлагРавномерноПриИзменении(Элемент)
   Если Распределять тогда   
         Для каждого Исполнитель из Исполнители цикл
            Исполнитель.ДоляУчастия=100/Исполнители.Количество();
         КонецЦикла;
   КонецЕсли;

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

Процедура ПолосаРегулирования1ПриИзменении(Элемент)
   Если Процент < 100 тогда
      Статус = Перечисления.СтатусМероприятия.ВРаботе;
   КонецЕсли;

   Если Процент = 0 тогда
      Статус = Перечисления.СтатусМероприятия.План;
   КонецЕсли;

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

Процедура ТехникаТехникаПриИзменении(Элемент)
   ПТехника = ЭлементыФормы.Техника.ТекущиеДанные.Техника;
   Если НЕ ПустаяСтрока(ПТехника.ЕдиницыИзмерения) Тогда
         ЭлементыФормы.Техника.ТекущиеДанные.ЕдиницыИзмерения = ПТехника.ЕдиницыИзмерения;
   КонецЕсли;
КонецПроцедуры


mixqn

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

Есть второй путь.
Перехватывать событие ПередНачаломДобавления табличного поля, там установить СтандартнаяОбработка = Ложь и далее как я выше писал - получать форму нового, заполняя в ней нужные реквизиты.

Никитa

Цитата: mixqn от 18 фев 2014, 09:32
Если я правильно понял, то что увидел на скриншотах, то у вас создаются новые элементы справочника.
Попробуйте из формы справочника обратиться к владельцу формы - ВладелецФормы. Для начала поставьте точку останова в процедуре ПриОткрытии и посмотрите значение ВладелецФормы, от этого можно будет плясать дальше.

Есть второй путь.
Перехватывать событие ПередНачаломДобавления табличного поля, там установить СтандартнаяОбработка = Ложь и далее как я выше писал - получать форму нового, заполняя в ней нужные реквизиты.
Да там когда нажимаем добавить, и открывается эта подчиненная форма.
А вообще нужно вводить какие либо переменные, или получать родительский элемент и из него выбирать ?

mixqn

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

начните что-то делать и если будут вопросы, пишите.

Никитa

Разобрался сделал так:
Процедура ПриОткрытии()
   Если Владелец.Родитель="Неопределенно" Тогда
      Сообщить("Не записан ремонт");
      Возврат;
   КонецЕсли;
   Если ЭтоНовый() тогда
         НачалоПлан = ТекущаяДата();
         
         ОкончаниеПлан = ТекущаяДата() + 86400;
         
         
         Статус = Перечисления.СтатусМероприятия.План;
         Наименование = "Задача " + Код;
         Распределять = истина;
         Ответственный=Владелец.Ответственный;
         НачалоФакт=Владелец.НачалоФакт;
         Подрядчик=Владелец.ГенПодрядчик;
            ВидРабот=Владелец.ВидРабот;
            ОкончаниеФакт=Владелец.ОкончаниеФакт;
            КонструктивныйЭлемент=Владелец.КонструктивныйЭлемент;
         КонецЕсли;   
   

Похожие темы (5)

Рейтинг@Mail.ru

Поиск