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

Заполнение полей документа данными другого документа/справочника

Автор Георгий Ширинкин, 19 мая 2016, 16:41

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

Георгий Ширинкин

Доброго дня!
Помогите пожалуйста новичку.
Есть справочник "Контрагенты". Есть документ "Договор". В них обоих есть идентичные поля "ЮрАдрес", "ИНН", "КПП" и прочее. Эти поля изначально заполняются в справочнике.
Задача: Надо что-бы при выборе в документе "Договор" контрагента (СправочникСсылка.Контрагенты), заполнение сопутствующих полей договора элементами справочника происходило автоматически.
Благодарю!

Rasty

Пишите код в событие ПриИзминении Договора
типа Док.Инн = Договор.инн и т.д
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Георгий Ширинкин

Цитата: Rasty от 19 мая 2016, 17:00
Пишите код в событие ПриИзминении Договора
типа Док.Инн = Договор.инн и т.д
Про обработчик события это понятно. А вот как описать сам механизм выборки нужных полей из выбранного контрагента (Справочник.Контрагенты) мне не ясно. Гугл меня тоже сегодня не балует =(

Rasty

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

xdto

Процедура КонтрагентПриИзменении(Элемент)
ДанныеРеквизитаКонтрагент = Контрагент.Ссылка;

ВыбранныйКонтрагент = ДанныеРеквизитаКонтрагент.Ссылка;
ПолучитьРеквизитыКонтрагента(ВыбранныйКонтрагент);

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


Функция ПолучитьРеквизитыКонтрагента(КонтрагентСсылка)
РеквизитыКонтрагента = Новый Структура;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | Контрагенты.ЮрАдрес,
               | Контрагенты.ИНН,
               | Контрагенты.КПП
               |ИЗ
               | Справочник.Контрагенты КАК Контрагенты
   |ГДЕ
   | Контрагенты.Ссылка = &Ссылка";
                       
Запрос.УстановитьПараметр("Ссылка", КонтрагентСсылка);
Выборка = Запрос.Выполнить().Выбрать();
 
Если  Выборка.Следующий() Тогда
ЮрАдрес = Выборка.ЮрАдрес;
ИНН = Выборка.ИНН;
КПП = Выборка.КПП;
КонецЕсли;
РеквизитыКонтрагента.Вставить("ЮрАдрес", ЮрАдрес);
РеквизитыКонтрагента.Вставить("ИНН", ИНН);
РеквизитыКонтрагента.Вставить("КПП", КПП);
Возврат РеквизитыКонтрагента;


КонецФункции


Георгий Ширинкин

Благодарю всех откликнувшихся.
Перебрал разные варианты, остановился на этом:
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)

// вариант 1
РеквизитыКонтрагента = ПолучитьРеквизитыКонтрагента(Объект.Контрагент);

Объект.ИНН = РеквизитыКонтрагента.ИНН;
Объект.КПП = РеквизитыКонтрагента.ИНН;
Объект.ЮрАдрес = РеквизитыКонтрагента.ЮрАдрес;

// вариант 2
//ПриИзмененииКонтрагентаНаСервере();

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

&НаСервереБезКонтекста
Функция ПолучитьРеквизитыКонтрагента(КонтрагентСсылка)
    РеквизитыКонтрагента = Новый Структура;

    РеквизитыКонтрагента.Вставить("ЮрАдрес" , КонтрагентСсылка.ЮрАдрес);
    РеквизитыКонтрагента.Вставить("ИНН" , КонтрагентСсылка.ИНН);
    РеквизитыКонтрагента.Вставить("КПП" , КонтрагентСсылка.КПП);

Возврат РеквизитыКонтрагента;   

КонецФункции

&НаСервере
Процедура ПриИзмененииКонтрагентаНаСервере()

Объект.ИНН = Объект.Контрагент.ИНН;
Объект.КПП = Объект.Контрагент.ИНН;
Объект.ЮрАдрес = Объект.Контрагент.ЮрАдрес;

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


Еще раз всем спасибо! =)

Теги:

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

Рейтинг@Mail.ru

Поиск