Как передать значение реквизита справочника в реквизит формы документа |
Я |
16.04.09 — 18:20
Подскажите, пожалуйста, как передать значение реквизита формы списка справочника в реквизит формы документа.
1 — 16.04.09 — 18:20
2 — 16.04.09 — 18:22
Обясни что ты конкретно хочешь сделать
3 — 16.04.09 — 18:43
Если по педальке на реквизите формы дока открываешь справочник — то «ОбработкаВыбораЗначения»
Если из справочника открываешь форму документа — то присваиванием через контекст сразу после «ОткрытьФорму»
4 — 16.04.09 — 19:30
(0) связь между справочником и документом какая?
РеквизитДокумента = ВыбСправочник.РеквизитСправочника, типы естественно должны совпадать
5 — 17.04.09 — 23:08
Я в обработке в тестовые поля ввожу данные: ФИО, адрес, телефон и т.д. после нажатия кнопки в обработке данные добавляются в справочник «Клиенты». А затем после нажатия на определенном этапе обработки другой кнопки данные передаются в документ «Договор» форма, которого открывается с уже заполненными реквизитами шапки. Строковые реквизиты передаются понятно как, а вот как в реквизит формы документа «Договор» передать значение ранее добавленного в справочник «Клиенты» элемента не понятно. Подскажите, пожалуйста.
6 — 17.04.09 — 23:11
Запомни при сохранении (когда «данные добавляются в справочник «Клиенты»») — и установи через контекст документа после ОткрытьФорму
7 — 17.04.09 — 23:47
Док = СоздатьОбъект(«Документ.Договор»);
Док.Новый();
Док.Клиент = ФИО;
//ФИО — реквизит обработки в который вносится значение и передается в справочник «Клиенты», а как из справочника «Клиенты» этот реквизит в документ передать.
Док.Записать();
Докум = Док.ТекущийДокумент();
ОткрытьФорму(Докум);
8 — 17.04.09 — 23:58
тКонт=»»;
ОткрытьФорму(Докум,тКонт);
тКонт.<ИмяРеквизитаДокумента>=<ТоШоНадо>;
9 — 18.04.09 — 01:28
Не получается !
10 — 18.04.09 — 09:30
Мне нужно, чтобы после нажатия на кнопку в обработке открывалась форма документа, в которой реквизит «Клиент» был заполнен значением ранее введенным в строке и занесенным в справочник «Клиенты». Т.е. я так понимаю я его ввел в поле обработки, потом программно поместил в справочник, а как указать, что именно этот мне нужно при открытии формы документа передавать — не понятно.
Док = СоздатьОбъект(«Документ.Договор»);
Спр = СоздатьОбъект(«Справочник.Клиенты»);
Док.Новый();
Док.Записать();
Докум = Док.ТекущийДокумент();
Док.Клиент = Спр.Наименование ;
Док.ТелефонКлиента = Телефоны_анкета; //вот строка передается просто; Телефоны_анкета — поле для ввода в обработке; Есть такое же поле ФИО для ввода Ф.И.О. клиента, значение которого заносится в Наименование справочника «Клиенты».
ОткрытьФорму(Докум, Док.Клиент);
Подскамжите, пожалуйста, как правильно передать именно текущий реквизит?
11 — 18.04.09 — 09:40
(10) тебе все в (8) уже рассказали
12 — 18.04.09 — 09:48
для особо крепкоклювых:
Конт = 0;
ОткрытьФорму(«Документ.Договор», Конт);
Конт.Клиент = ВыбКлиент; // <— ВыбКлиент — это нифига не строка!!!!!
Конт.Форма.Обновить();
—
Или у тебя трудности с нахождением ВыбКлиент?
13 — 18.04.09 — 11:32
(12): у него похоже трудности с… короче праситя люди, галодный быль…
ЗЫ: блин, ну почему все мои жертвы так упорно орут «помогитеничевонипанимайу».. ну не понял — сидиш читаеш по слогам и малчиш фтряпачку…
14 — 20.04.09 — 18:49
В данном случае как лучше найти тот эелемент, который ввели в обработке и поместили программно в документ?
15 — 20.04.09 — 18:56
фигасе стаж 4 года
16 — 20.04.09 — 20:06
Я не могу понять по какому принципу искать. Ввел в текстовой поле в форме обработки Ф.И.О. потом программно загоняю его в справочник:
Спр=СоздатьОбъект(«Справочник.Клиенты»);
Спр.Новый();
Спр.Наименование=ФИО;
Спр.КодКарточки=КодКарточки;
Спр.Записать();
После этого дохожу в обработке до этапа когда необходимо передать все данные в документ и сдесь в поле Клиент — типа справочник «Клиент», должен уже находиться тот клиент которого мы ранее занесли в справочник. Пользователь нажимает на кнопку возле реквизита и открывается справочник «Клиенты» с подсвеченным выбранным клиентом.
Вот здесь и проблема с поиском введенного и передачей в ОткрытьФорму()…
17 — 20.04.09 — 20:10
(16) А что ты в открывающуюся форму списка справочника «Клиенты» при этом передать хочешь?
18 — 20.04.09 — 20:13
19 — 20.04.09 — 20:21
(16) По порядку что я понял из сказанного:
1. Обработкой создается элемент справочника «Клиенты».
2. В отрувающуюся форму документа он передается в реквизит.
3. Некто открывает справочник «коиенты» (непонятно засем, ведь реквизит уже заполнен).
4. Необходимо в открытом списке еще что-то найти.
Так?
20 — 20.04.09 — 20:23
(19) Извините за синтаксические ошибки, корпоратив на работе.
21 — 20.04.09 — 20:43
(19) До 3-го пункта все правильно. Потом Нажимается кнопка в обработке и открывается форма документа с уже заполненными реквизитами. А в реквизите «Клиент» установлен созданный только, что программно клиент. А педалька возле него лишь для того, чтобы пользователь в заполненном документе мог открыть клиента и может из справочника какую-то информацию или посмотреть или подправить.
У меня большинство реквизитов документа типа «Строка» и передается все просто:
Док.ТелефонКлиента = Телефоны_анкета;
А как передать реквизит типа «Справочник».
Спр=СоздатьОбъект(«Справочник.Клиенты»);
Спр.Новый();
Спр.Наименование=ФИО;
Спр.КодКарточки=КодКарточки;
Спр.Записать();
ВыбКлиент = Спр.ТекущийЭлемент();
Конт = 0;
ОткрытьФорму(«Документ.Договор», Конт);
Конт.Клиент = ВыбКлиент;
Конт.Форма.Обновить();
|
2 / 2 / 0 Регистрация: 06.04.2018 Сообщений: 153 |
|
|
1 |
|
Передача значений реквизитов между формами30.06.2022, 11:22. Показов 1900. Ответов 14
Подскажите пожалуйста как можно передавать значения реквизитов в другую форму?
0 |
|
263 / 218 / 95 Регистрация: 07.04.2011 Сообщений: 1,353 |
|
|
30.06.2022, 18:51 |
2 |
|
ПараметрыФормы = Новый Структура(«МойКлюч»,МоеЗначение); И в событии «ПриСозданииНаСервере» открываемой формы ловите «Параметры» и дергаете из них то что надо.
0 |
|
2 / 2 / 0 Регистрация: 06.04.2018 Сообщений: 153 |
|
|
13.07.2022, 12:44 [ТС] |
3 |
|
Здравствуйте! Есть справочник «Сотрудники» с реквизитом «Испытательный срок» и есть документ «Прием на работу» с этим же реквизитом.
0 |
|
1845 / 1259 / 450 Регистрация: 16.01.2015 Сообщений: 5,502 |
|
|
13.07.2022, 15:05 |
4 |
|
cyberlohh, получитьформу с ключом ссылка на сотрудника. а там в объекте все реквизиты
0 |
|
2 / 2 / 0 Регистрация: 06.04.2018 Сообщений: 153 |
|
|
13.07.2022, 15:06 [ТС] |
5 |
|
Я не силен в этом. Не подскажите как это сделать?
0 |
|
cyberlohh 2 / 2 / 0 Регистрация: 06.04.2018 Сообщений: 153 |
||||
|
13.07.2022, 15:08 [ТС] |
6 |
|||
|
В форме документа «Прием на работу» добавил такой код
0 |
|
1172 / 714 / 208 Регистрация: 22.04.2013 Сообщений: 5,269 Записей в блоге: 1 |
|
|
13.07.2022, 15:39 |
7 |
|
молодец. всё получилось?
0 |
|
2 / 2 / 0 Регистрация: 06.04.2018 Сообщений: 153 |
|
|
13.07.2022, 15:41 [ТС] |
8 |
|
Неа. Передача значений не осуществляется и как ее реализовать я хз.
0 |
|
1845 / 1259 / 450 Регистрация: 16.01.2015 Сообщений: 5,502 |
|
|
13.07.2022, 15:42 |
9 |
|
cyberlohh, см скрин Миниатюры
0 |
|
2 / 2 / 0 Регистрация: 06.04.2018 Сообщений: 153 |
|
|
13.07.2022, 16:00 [ТС] |
10 |
|
Сотрудник = ПолучитьС(); выходит ошибка, что переменная с заданным именем не определена
0 |
|
1172 / 714 / 208 Регистрация: 22.04.2013 Сообщений: 5,269 Записей в блоге: 1 |
|
|
13.07.2022, 16:08 |
11 |
|
а что вы написали? а то нострадамус в отпуске. июль, сами понимаете
0 |
|
cyberlohh 2 / 2 / 0 Регистрация: 06.04.2018 Сообщений: 153 |
||||
|
13.07.2022, 16:11 [ТС] |
12 |
|||
Только это, и то выводит ошибку. Я уже совсем потерялся с этим
0 |
|
263 / 218 / 95 Регистрация: 07.04.2011 Сообщений: 1,353 |
|
|
13.07.2022, 17:21 |
13 |
|
А получитьФорму разве не должно результат возвращать?
0 |
|
263 / 218 / 95 Регистрация: 07.04.2011 Сообщений: 1,353 |
|
|
13.07.2022, 17:23 |
14 |
|
Вот лично сегодня открывал форму с параметрами.Все работает.
0 |
|
polax 1845 / 1259 / 450 Регистрация: 16.01.2015 Сообщений: 5,502 |
||||
|
13.07.2022, 18:01 |
15 |
|||
|
&НаКлиенте Выкинуть. Сделано без малейшего понимания. Да и вопрос задан неверно. Судя по попытки кода просто надо получить данные из справочника, чтобы заполнить создаваемый документ.
Не по теме: ЗЫ Зарекся отвечать на такие вопросы. По три-четыре раза в неделю одно и тоже. Но тут-то как был задан!
0 |
Рассмотрим такую задачу. Есть сложная форма, с большим количеством реквизитов. Для многих из них в конфигураторе установлено свойство ЗаполнятьИзДанныхЗаполнения. В результате при открытии этой формы для нового объекта ее реквизиты могут быть заполнены различными начальными значениями. Это зависит и от точки навигации, в которой расположена команда создания нового объекта, и от программного алгоритма, описанного в модуле самого объекта.
Теперь предположим, что в процессе выполнения некоторого программного кода требуется открыть эту форму. Но не «пустую», а так, чтобы ее реквизиты были заполнены теми значениями, которые должны получиться в результате работы всех алгоритмов, заложенных в форму.
Можно было бы получить программный объект формы и затем напрямую установить значения ее реквизитов. Но тогда в этом месте программного кода пришлось бы дублировать весь тот алгоритм, который отвечает за начальное заполнение формы. Это может быть трудоемко, и поддерживать такое решение сложно, т. к. при изменении этого алгоритма его придется менять не в одном месте, в модуле объекта, а синхронно еще в нескольких местах конфигурации. Нет никакой гарантии, что что-то не будет пропущено и что все такие изменения будут работать правильно.
Поэтому существует другой, более удобный и простой способ решения такой задачи.
Открывая форму программно, можно передать ей набор данных заполнения, который она получила бы, если бы открывалась интерактивной командой.
Например, программно нужно открыть форму новой накладной точно так, как если бы она открывалась интерактивной командой из списка накладных, отобранного по поставщику и складу. Предположим, что в переменных СсылкаНаПоставщика и СсылкаНаСклад у нас имеются необходимые ссылки. Тогда можно использовать следующий код:
ЭлементыОтбора = Новый Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора);
ОткрытьФорму("Документ.Накладная.ФормаОбъекта", ПараметрыФормы);
Данные заполнения можно передать в открываемую форму с помощью параметра ЗначенияЗаполнения. В этот параметр нужно передать те данные, которые передала бы туда платформа, если бы выполнялось аналогичное интерактивное действие.
В нашем случае платформа передала бы в данные заполнения ссылку на поставщика и ссылку на склад, по которым отобран список накладных. Поэтому мы в данные заполнения передаем структуру, содержащую два элемента: для реквизита Поставщик — ссылку на поставщика, а для реквизита Склад — ссылку на склад.
Может встретиться и более сложная ситуация, когда в программном коде необходимо полностью съимитировать интерактивные действия пользователя по созданию нового объекта, не открывая форму этого объекта.
В этом случае можно создать программно объект, а затем вызвать его метод Заполнить(). В этом случае платформа выполнит все те же действия и вызовет все те же события, которые она бы вызвала в случае интерактивного создания нового объекта. В метод Заполнить() в качестве параметра точно так же можно передать структуру, содержащую данные заполнения:
ЭлементыОтбора = Новый Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад);
ОбъектНакладной = Документы.Накладная.СоздатьДокумент();
ОбъектНакладной.Заполнить(ЭлементыОтбора);
// Действия, имитирующие интерактивный ввод данных пользователем ...
ОбъектНакладной.Дата = ТекущаяДатаСеанса();
... ОбъектНакладной.Записать();
Добрый день, 1С 8.2, «Управление торговлей», редакция 10.3 (10.3.7.9).
Вопрос такой, как передать значение реквизита справочника в реквизит документа?
Структура базы следующая:
1. справочники «ДоговорыКонтрагентов» и «Контрагенты». Между ними настроена связь и указано, что «Контрагенты» — это владелец справочника «ДоговорыКонтрагентов».
2. документ «АС_ЗаявкаНаРемонт», в котором есть реквизит «Глубина» (в нём указывается, до какого числа необходимо оплатить работу).
Задача:
добавить поле «ДатаОплаты» в справочнике «ДоговорыКонтрагентов», чтобы уже при составлении договора указывать срок, до которого контрагент обязан провести оплату за работу.
Чего хочу добиться:
Передать значение реквизита справочника в реквизит документа.
Что есть:
В документе «АС_ЗаявкаНаРемонт» есть встроенная процедура «ГлубинаПриИзменении», которая высчитывает ДатуОплаты и я понял, как её изменить, чтобы при открытии документа сразу задавалось, например, 15 дней для оплаты. Для этого в процедуре «При Открытии» добавил две строки:
Глубина = 15;
ДатаОплаты = ОбщегоНазначения.ДобавитьДень(Дата,Глубина); //из стандартной процедуры "ГлубинаПриИзменении"
но у меня пока не получается передать значение из справочника.
Подскажите пожалуйста, как это реализовать?
Категории
Иногда требуется передать параметр для строки табличной части в выгрузке конвертации.
Например, такая задача может возникнуть если одна из конфигураций была изменена(добавлен реквизит в табличную часть). В моем случае это конфигурация-приемник. В табличную часть «Товары» документа «Отчет о розничных продажах», конфигурации «Управление торговлей» 10.3 добавлен реквизит «Консультант» типа «Справочник.ФизическиеЛица». В него надо передавать значение реквизита «Продавец» из табличной части «Товары», из конфигурации «Розница» 2.х.
Задачу можно решить, например, обновлением метаданных конфигурации-приемника, но быстрее, в данном случае будет передать это значение через параметр.
В табличной части «Товары» ПКО «Отчет о розничных продажах» создаем новый параметр:
Далее прописываем в обработчик «ПослеЗагрузки» ПКО «Отчет о розничных продажах» следующий код:
ПараметрыТовары = ПараметрыОбъекта["ТоварыТабличнаяЧасть"];
Для каждого Строка Из Объект.Товары Цикл
Ст = ПараметрыТовары[Объект.Товары.Индекс(Строка)] ;
Строка.Консультант = Ст.Консультант;
КонецЦикла;
Автоматизация хаоса
Контакты:
Телефон: +7 963 570 26 00
E-mail: al_zzz@mail.ru
Дизайн сайта:
Веб-дизайн и верстка: Зелёнкина Елена
8 963 578 05 35, lena_431@mail.ru


