Обращения к реквизитам из одной формы к другой |
Я |
07.09.09 — 09:23
Например в документе сделала кнопку скидка- вызываю форму, ввожу скидку, затем мне нужно обратиться к сумме документа, т.е к реквизиту другой формы…что-то не получается…обратиться..к этому элементу
1 — 07.09.09 — 09:32
(0) тебе к владельцу формы.
2 — 07.09.09 — 09:38
Да получается к владельцу..
3 — 07.09.09 — 09:40
Форма (Form)
ВладелецФормы (FormOwner)
Использование:
Чтение и запись.
Описание:
Тип: Форма, Элемент управления. Содержит форму или элемент управления, который является владельцем данной формы. При помощи этого свойства устанавливается связь между формой и владельцем формы. Например, форма элемента подчиненного справочника может иметь в качестве владельца форму элемента справочника владельца, из которой она была открыта. При открытии по текущей строке табличного поля в качестве владельца устанавливается табличное поле.
Недоступно на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Если у формы есть владелец, то в свойстве ЗакрыватьПриЗакрытииВладельца устанавливается необходимость закрытия данной формы при закрытии формы-владельца.
См. также:
Форма, свойство ЗакрыватьПриЗакрытииВладельца
4 — 07.09.09 — 09:41
Процедура OkНажатие(Элемент)
Если СкидкаПроцент>0 Тогда
СуммаДок1=Документы.СметаПоБлюдам.ПолучитьЗначение(«СуммаДок»);
Скидка1=СуммаДок1*СкидкаПроцент/100;
КонецЕсли;
Документы.СметаПоБлюдам.СуммаДок=Скидка1;
КонецПроцедуры
Вот что я написала!!!! Что неправильно? обращение есть но говорит переменная не определена
5 — 07.09.09 — 09:43
ужас…
6 — 07.09.09 — 09:43
Не поняяятно….
7 — 07.09.09 — 09:44
(6) угу… мне тоже…
8 — 07.09.09 — 09:44
не умею к реквизитам обращаться…иначе бы не спрашивала..ичего здесь
9 — 07.09.09 — 09:45
(8) к реквизитам обращаться очень просто… достаточно знать, как они обзываются…
10 — 07.09.09 — 09:46
я счтитаю, что прикрутить ВвестиЧисло() будет проще
11 — 07.09.09 — 09:47
Если это форма документа тогда:
СуммаДок1 = ЭтотОбъект.СуммаДок ;
или даже
СуммаДок1 = СуммаДок ;
12 — 07.09.09 — 09:48
ЭтаФорма.ВладелецФормы.СуммаДок
13 — 07.09.09 — 09:49
(0) делай реквизит объекта, а не формы, к нему можно обратиться по имени из любой формы этого объекта
14 — 07.09.09 — 09:50
может быть тебе достаточно чего-то вроде этого?
СуммаДок=СуммаДок — СуммаДок*СкидкаПроцент/100;
15 — 07.09.09 — 09:50
и как? )) же..
16 — 07.09.09 — 09:51
или этого:
СуммаДок=СуммаДок*СкидкаПроцент/100;
17 — 07.09.09 — 11:10
Теперь вот что:{ОбщаяФорма.СкидкаПроцент(4)}: Преобразование значения к типу Число не может быть выполнено
СуммаДок=СуммаДок*СкидкаПроцент/100;
СкидкаПроцент- тип Число
СуммаДок- число- причем считается хорошо)…
anisa
18 — 07.09.09 — 11:14
Я вызываю из документа, нажатием кнопки»скидка», форму-скидка- ввожу число и делаю примечание, вводимое число- размер скидки- должен обратиться к форме документа- реквизит СуммаДок, обращение делаю не из формы документа….как можно из формы скидка обратиться к реквизу другой формы….
Форма скидка- объкт- Общие формы..Подскажите пожалуйста…
Модератор
Offline
Пол:
Re: Обратиться к реквизиту другой формы « Ответ #4 : 01-07-2010 15:32 » |
Код:
Форма=ПолучитьФорму(«НазваниеФормы»);
Форма.Реквизит // получил доступ к ревизиту
// если реквизит — это простое значение, то ему можно просто присвоить что-то
= РеквизитВызывающейФормы;
// Если же это список значений — то и работаешь с ним как со списком
Форма.СписокЗначений.Очистить();
…
Форма.Открыть();
0
Форма ~ Как получить данные одной формы, находясь на другой?
Например, на 1 форме есть поле ввода. Как поместить данные этого поля ввода на форму 2, используя внешние обработки?
Самый простой способ — инициировать открытие формы программно и программно получить данные с нее после закрытия:
Код 1C v 8.х
Форма = Справочники.Номенклатура.ПолучитьФормуСписка();
Форма.ОткрытьМодально();
Сообщить(Форма.ПолеВВода1);
Второй вариант — переподключить обработчик событий:
Код 1C v 8.х
Форма = Справочники.Номенклатура.ПолучитьФормуСписка();
Форма.ПодключитьОбработчикИзмененияДанных("РеквизитФормы","ПриНоменклатуре");
Форма.ОткрытьМодально();
Но в этом случае процедура ПриНоменклатуре(РасшифровкаСобытия) должна находиться в модуле открываемой формы.
Стандартных способов 1С для других видов обработки событий не существует. Т.к. в 1С все процедуры-обработчики событий должны находиться в модуле этого элемента и никак иначе из внешней обработки процедуру не подключишь.
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Yakovin
Дата регистрации: 19.02.2007
Сообщений: 49
«Всем, здравствуйте! Помогите разобраться с внешней обработкой. Проблема в следующем: внешняя обработка имеет несколько форм, мне необходимо передать данные из одной в другую. Я добавил реквизиты, на основной форме работать с ними получается. Я делаю это т.о.:<br><br>Обработка = ВнешниеОбработки.Создать(«C:РабочаяComCenterComCenter.epf»);<br>Обработка.ТипФормы = «1»;<br><br>Во второй форме я также создаю объект Обработка, но реквизиты пустые. Каким образом обратиться к реквизитам из второй формы.<br><br>Если не использовать реквизиты, то другой вариант — переменные Экспорт, но как к ним обратиться я тоже не знаю.<br>Спасибо за помощь.»
BelikovS
Дата регистрации: 05.03.2007
Сообщений: 1701
«Вы создаете объекты, а надо открывать формы.<br>Обработка = ВнешниеОбработки.Создать(«C:РабочаяComCenterComCenter.epf»);<br>Форма1 = Обработка.ПолучитьФорму («ИмяФормы1»);<br>Форма2 = Обработка.ПолучитьФорму («ИмяФормы2»);<br><br>Если у форм в качестве основного реквизита стоит обработка, то обе формы будут иметь доступ к реквизитам Обработки.<br><br>Или опишите задачу иначе, а то у вас какая-то двойственность в описании: «У обработки 2 формы» и «во второй форме я также создаю объект Обработка»»
Yakovin
Дата регистрации: 19.02.2007
Сообщений: 49
«Ошибка, поле объекта не обнаружено (при попытке заполнить ТаблицуЗначений результатом запроса)<br><br>Процедура ПриОткрытии()<br> Обработка = ВнешниеОбработки.Создать(«C:РабочаяComCenterComCenter.epf»);<br> Форма1 = Обработка.ПолучитьФорму («ФормаОсновная»);<br>КонецПроцедуры<br><br>заполняю так <br>Форма1.ППВТаблЗнач = РезультатЗапроса.Выгрузить();<br><br>Задача такая: на основной форме табличное поле, в него помещаю результат запроса (выборка приходников и выписок за период), двойном щелчке на строке Табличного поля должно открыться окно элементы которого заполняются параметрами платежа (номер, дата, сумма, контрагент, договор и т.п.). Мне это необходимо для правки некоторых позиций платежа и выполнить последующую выгрузку во внешнее приложение (точнее в БД этого приложения). Для изменения результат запроса помещаю в реквизит обработки ППВТаблЗнач, тип ТаблицаЗначений<br><br>Я не понял Вашей фразы: «Если у форм в качестве основного реквизита стоит обработка, то обе формы будут иметь доступ к реквизитам Обработки.» В окне «Свойства» формы практически нет параметров для изменения.<br><br>Спасибо за помощь.<br><br>П.С. Прошу прощения если глупые вопросы, в 1С я плохо разбираюсь. Возникла необходимость связать внешнее приложение с 1С в плане платежей.»
BelikovS
Дата регистрации: 05.03.2007
Сообщений: 1701
«Интересно, ваша Процедура ПриОткрытии() где находиться?<br>Предположим, что у вас ничего нет.<br>1. Создаете внешнюю обработку<br>2. Добавляете ей форму (по умолчанию у неё имя Форма) она же станет основной формой, открываемой при открытии обработки.<br>3. Кидаете на форму таблицу (я так понимаю назвали её ППВТаблЗнач)<br>4. В модуле формы формы в Процедуре ПриОткрытии делаете заполнение таблицы: <br>ППВТаблЗнач = РезультатЗапроса.Выгрузить();<br>ЭлементыФормы.ППВТаблЗнач.СоздатьКолонки();<br>5. Создаете 2-ю форму. По-умолчанию она получит имя Форма1. <br>6. Киньте на Форму1, скажем поле ввода. (имя ПолеВвода1)<br>7. Для таблицы (на Форме) задаете событие Выбор, где пишите, что-то типа:<br>ТекСтр = ППВТаблЗнач.ТекущаяСтрока(); //Можно воспользоваться Параметрами, но я привык так<br>лФорма = ЭтотОбъект.ПолучитьФорму(«Форма1″); //»ЭтотОбъект.» можно не писать — это подразумевается.<br>лФорма.ПолеВвода1 = ТекСтр.Ссылка; //Ссылка — это колонка в таблице, я не знаю как оно у вас назывется.<br>лФорма.Открыть();<br> <br>В принципе — этого достаточно для демонстрации. Можно запускать.<br><br>p.s. Если вы зайдете на закладку Реквизиты у Формы, то увидите, что один реквизит выделен жирным (например ОбработкаОбъект) — этот реквизит основной для данной формы и она (форма) имеет полный доступ к реквизитам и экспортным функциям (процедурам) этого объекта»
Yakovin
Дата регистрации: 19.02.2007
Сообщений: 49
Огромнейшее спасибо, все получилось!!!
Показывать по
10
20
40
сообщений
ДядяВаня 5 / 4 / 1 Регистрация: 24.08.2017 Сообщений: 112 |
||||
1 |
||||
Обращение к реквизиту другого документа09.11.2018, 13:31. Показов 7198. Ответов 14 Метки нет (Все метки)
Доброго дня! Стоит задача: Если доставка осуществлена в документе ЗаявкаНаОтгрузку (тип данных булево), тогда при проведении документа, в документе ЗаказКлиента автоматически меняется статус документа на СделкаЗавершена, иначе на ОжиданиеОтгрузки
Застрял, не знаю как перейти к реквизиту другого документа и изменить значение
0 |
1142 / 689 / 203 Регистрация: 22.04.2013 Сообщений: 5,161 Записей в блоге: 1 |
|
09.11.2018, 13:41 |
2 |
наверно плохо втихаря менять какие-то реквизиты у какого-то-там-документа Добавлено через 5 секунд
0 |
5 / 4 / 1 Регистрация: 24.08.2017 Сообщений: 112 |
|
09.11.2018, 13:43 [ТС] |
3 |
Yulunga, не я такой, ТЗ такое
0 |
1142 / 689 / 203 Регистрация: 22.04.2013 Сообщений: 5,161 Записей в блоге: 1 |
|
09.11.2018, 14:48 |
4 |
а на клиенте пишете обращение к процедуре, которая на сервере смотрит в ваши документы заказ клиента, находит нужный, смотрит там на галку отгрузки, возвращает да или нет. и вы уже на основании возвратного значения ставите у себя завершена или ждём-с
0 |
ДядяВаня 5 / 4 / 1 Регистрация: 24.08.2017 Сообщений: 112 |
||||
26.11.2018, 11:20 [ТС] |
5 |
|||
Yulunga, после болезни снова вернулся к этому вопросу, начал писать код, остался открытым вопрос как в коде получить реквизит СтадияЗаказа и изменить его, подскажите пожалуйста? Изменения должны производиться в документе-основании (ЗаказКлиента), из документа Отгрузка, код прописан в основном модуле формы документа Отгрузка
0 |
polax 1808 / 1228 / 442 Регистрация: 16.01.2015 Сообщений: 5,396 |
||||
26.11.2018, 12:22 |
6 |
|||
ДядяВаня,
0 |
1142 / 689 / 203 Регистрация: 22.04.2013 Сообщений: 5,161 Записей в блоге: 1 |
|
26.11.2018, 12:36 |
7 |
ИначеЕсли _ДоставкаОсуществлена=Ложь Тогда а ещё иначе что? блин клинтон, как так можно
0 |
ДядяВаня 5 / 4 / 1 Регистрация: 24.08.2017 Сообщений: 112 |
||||
26.11.2018, 12:40 [ТС] |
8 |
|||
polax, Были ерроры, подправил код, ерроров не стало, но и не отработало
0 |
polax 1808 / 1228 / 442 Регистрация: 16.01.2015 Сообщений: 5,396 |
||||
26.11.2018, 12:53 |
9 |
|||
ДядяВаня,Читайте внимательно:
0 |
5 / 4 / 1 Регистрация: 24.08.2017 Сообщений: 112 |
|
26.11.2018, 13:13 [ТС] |
10 |
polax, {Документ._ЗаявкаНаОтгрузку.Форма.ФормаДокумента.Ф орма(4,7)}: Переменная не определена (_ДоставкаОсуществлена) Добавлено через 8 минут
0 |
1808 / 1228 / 442 Регистрация: 16.01.2015 Сообщений: 5,396 |
|
26.11.2018, 13:20 |
11 |
Документ._ЗаявкаНаОтгрузку.Форма.ФормаДокумента.Фо рма(4,7) КАК процедура ОбработкаПроведения попала в форму модуля? Как вообще вы реализовали, что код попадает в эту абсолютно левую процедуру? ))) Эта процедура стандартный обработчик и выполняется в МОДУЛЕ ОБЪЕКТА.
0 |
ДядяВаня 5 / 4 / 1 Регистрация: 24.08.2017 Сообщений: 112 |
||||
26.11.2018, 13:30 [ТС] |
12 |
|||
polax, да фиг его знает, я совсем недавно 1с занимаюсь и еще многого не знаю
и вывалилось с еррором уже на стороне предприятия, не конфигуратора, 1с 8.3 у меня, может из-за разных версий ошибка?
0 |
1808 / 1228 / 442 Регистрация: 16.01.2015 Сообщений: 5,396 |
|
26.11.2018, 13:35 |
13 |
ЗаказКлиента = Документы._ЗаказКлиента.ПолучитьОбъект; а это откуда взялось? Где это в коде? Покажите
0 |
5 / 4 / 1 Регистрация: 24.08.2017 Сообщений: 112 |
|
26.11.2018, 13:37 [ТС] |
14 |
ЗаказКлиента = Документы._ЗаказКлиента.ПолучитьОбъект(); вот
0 |
polax 1808 / 1228 / 442 Регистрация: 16.01.2015 Сообщений: 5,396 |
||||||||
26.11.2018, 13:46 |
15 |
|||||||
Ну ДядяВаня, !!!!!!!!!!!!!! Поймал. Я не вдавался в подробности, как вы скопировали мой код (уж скопировать-то можно БЕЗ ошибок) и не обратил внимание на ахинеЮ ))))
и вашей версией (да, потом скопированной мной неглядя)
есть. И разница эта существенна.
0 |