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

Автоматическое заполнение данных документа из справочника?

Автор |R|U|D|E|N, 29 мар 2011, 17:12

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

|R|U|D|E|N

Добрый день.

У меня есть сложная(для меня по крайней мере) задача.

У меня есть документ "АктПриемаОборудования". В этом документе есть реквизит "Контрагент" и несколько дополнительных реквизитов(Адрес, Телефон) относящихся к этому Контрагенту. Эти дополнительные реквизиты есть в крточке этого контрагента в соответствующем справочнике.

Так вот. Я хочу, чтоб, в приведенном выше документе, при выборе Контрагента из справочника, остальные данные(Адрес, телефон)заполнялись автоматически из карточки контрагента.

Режим запуска "Управляемое приложение". Подскажите пож. как это сделать?


С уважением Александр.


|R|U|D|E|N

Естественно. Обработчик та я создал. Но как найти в справочнике "Контрагенты" указанного контрагента и получить значение его реквизитов не знаю....

|R|U|D|E|N

Я понимаю)) Я не знаю сам синтаксис. Не знаю как это сделать)

Спасибо вам sergejK74. Думаю, это то что надо!







cska-fanat-kz

Получать реквизиты реквизита (простите за каламбур) на клиенте - только через серверную функцию.

В ПриИзменении пишете

СтруктураДанныхКонтрагента = ПолучитьДанныеКонтрагента(Объект.Контрагент);
Телефон = СтруктураДанныхКонтрагента.Телефон;
Адрес = СтруктураДанныхКонтрагента.Адрес;

И здесь же в модуле создаете серверную функцию

&НаСервереБезКонтекста
Функция ПолучитьДанныеКонтрагента(Контрагент)
СтруктураДанных = Новый Структура("Телефон, Адрес");
ЗаполнитьЗначенияСвойств(СтруктураДанных, Контрагент);
Возврат СтруктураДанных;
КонецФункции
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

|R|U|D|E|N

Друзья. Спасибо Вам огромное за то, что завалили меня ответами:)!

Вариант sergejK74 мне понравился. По этому я разместил в ОбщемМодуле следующий код:

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

    Запрос.УстановитьПараметр("Ссылка", Контрагент);

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    СписокПараметров = Новый Структура;
   
    СписокПараметров.Вставить("Адрес");
    СписокПараметров.Вставить("Телефон");
    СписокПараметров.Вставить("ТипКонтрагента");
СписокПараметров.Вставить("ВидКонтрагента");
СписокПараметров.Вставить("VIP");
    СписокПараметров.Вставить("VIPПриоритет");
    СписокПараметров.Вставить("НеГудКлиент");
    СписокПараметров.Вставить("СтатусНеГудКлиента");
СписокПараметров.Вставить("ДополнительнаяИнформация");


Если ВыборкаДетальныеЗаписи.Следующий() Тогда
       
    СписокПараметров.Адрес = ВыборкаДетальныеЗаписи.Адрес;
    СписокПараметров.Телефон = ВыборкаДетальныеЗаписи.Телефон;
    СписокПараметров.ТипКонтрагента = ВыборкаДетальныеЗаписи.ТипКонтрагента;
СписокПараметров.ВидКонтрагента = ВыборкаДетальныеЗаписи.ВидКонтрагента;
СписокПараметров.VIP = ВыборкаДетальныеЗаписи.VIP;
СписокПараметров.VIPПриоритет = ВыборкаДетальныеЗаписи.VIPПриоритет;
СписокПараметров.НеГудКлиент = ВыборкаДетальныеЗаписи.НеГудКлиент;
СписокПараметров.СтатусНеГудКлиента = ВыборкаДетальныеЗаписи.СтатусНеГудКлиента;
СписокПараметров.ДополнительнаяИнформация = ВыборкаДетальныеЗаписи.ДополнительнаяИнформация;
       
    КонецЕсли;

    Возврат СписокПараметров;   

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



Ну и там где надо, в формах создал обработчики:

Процедура КонтрагентПриИзменении(Элемент)
    Парам = ПодсчетыИПодстановки.ПолучитьПараметрыКонтагента(Объект.Контрагент);
Объект.КонтактноеИнфо = Парам.Адрес +" " + "Телефон:" + Парам.Телефон;
Объект.ТипКонтрагента = Парам.ТипКонтрагента;
Объект.ВидКонтрагента = Парам.ВидКонтрагента;
Объект.НеГудКлиент = Парам.НеГудКлиент;
Объект.СтатусНеГудКлиента = Парам.СтатусНеГудКлиента;
Объект.ДопИнфо = Парам.ДополнительнаяИнформация;
Объект.VIP = Парам.VIP;
Объект.VIPПриоритет = Парам.VIPПриоритет;
КонецПроцедуры



Подобного рода создал еще пару Общих функций для других реквизитов и теперь все подстовляется где надо и не надо  :D


Всем спасибо. Вы мне очень помогли!



sawogle

Цитата: cska-fanat-kz от 30 мар 2011, 11:46
Получать реквизиты реквизита (простите за каламбур) на клиенте - только через серверную функцию.

В ПриИзменении пишете

СтруктураДанныхКонтрагента = ПолучитьДанныеКонтрагента(Объект.Контрагент);
Телефон = СтруктураДанныхКонтрагента.Телефон;
Адрес = СтруктураДанныхКонтрагента.Адрес;

И здесь же в модуле создаете серверную функцию

&НаСервереБезКонтекста
Функция ПолучитьДанныеКонтрагента(Контрагент)
СтруктураДанных = Новый Структура("Телефон, Адрес");
ЗаполнитьЗначенияСвойств(СтруктураДанных, Контрагент);
Возврат СтруктураДанных;
КонецФункции

Здравствуйте
При этой функции у меня вылезает ошибка

Добавлено: 14 окт 2017, 19:20


Цитата: |R|U|D|E|N от 30 мар 2011, 12:31
Друзья. Спасибо Вам огромное за то, что завалили меня ответами:)!

Вариант sergejK74 мне понравился. По этому я разместил в ОбщемМодуле следующий код:

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

    Запрос.УстановитьПараметр("Ссылка", Контрагент);

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    СписокПараметров = Новый Структура;
   
    СписокПараметров.Вставить("Адрес");
    СписокПараметров.Вставить("Телефон");
    СписокПараметров.Вставить("ТипКонтрагента");
СписокПараметров.Вставить("ВидКонтрагента");
СписокПараметров.Вставить("VIP");
    СписокПараметров.Вставить("VIPПриоритет");
    СписокПараметров.Вставить("НеГудКлиент");
    СписокПараметров.Вставить("СтатусНеГудКлиента");
СписокПараметров.Вставить("ДополнительнаяИнформация");


Если ВыборкаДетальныеЗаписи.Следующий() Тогда
       
    СписокПараметров.Адрес = ВыборкаДетальныеЗаписи.Адрес;
    СписокПараметров.Телефон = ВыборкаДетальныеЗаписи.Телефон;
    СписокПараметров.ТипКонтрагента = ВыборкаДетальныеЗаписи.ТипКонтрагента;
СписокПараметров.ВидКонтрагента = ВыборкаДетальныеЗаписи.ВидКонтрагента;
СписокПараметров.VIP = ВыборкаДетальныеЗаписи.VIP;
СписокПараметров.VIPПриоритет = ВыборкаДетальныеЗаписи.VIPПриоритет;
СписокПараметров.НеГудКлиент = ВыборкаДетальныеЗаписи.НеГудКлиент;
СписокПараметров.СтатусНеГудКлиента = ВыборкаДетальныеЗаписи.СтатусНеГудКлиента;
СписокПараметров.ДополнительнаяИнформация = ВыборкаДетальныеЗаписи.ДополнительнаяИнформация;
       
    КонецЕсли;

    Возврат СписокПараметров;   

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



Ну и там где надо, в формах создал обработчики:

Процедура КонтрагентПриИзменении(Элемент)
    Парам = ПодсчетыИПодстановки.ПолучитьПараметрыКонтагента(Объект.Контрагент);
Объект.КонтактноеИнфо = Парам.Адрес +" " + "Телефон:" + Парам.Телефон;
Объект.ТипКонтрагента = Парам.ТипКонтрагента;
Объект.ВидКонтрагента = Парам.ВидКонтрагента;
Объект.НеГудКлиент = Парам.НеГудКлиент;
Объект.СтатусНеГудКлиента = Парам.СтатусНеГудКлиента;
Объект.ДопИнфо = Парам.ДополнительнаяИнформация;
Объект.VIP = Парам.VIP;
Объект.VIPПриоритет = Парам.VIPПриоритет;
КонецПроцедуры



Подобного рода создал еще пару Общих функций для других реквизитов и теперь все подстовляется где надо и не надо  :D


Всем спасибо. Вы мне очень помогли!
Еще раз здравствуйте!!!!
НЕ получается. Помогите пожалуйста Заранее Спасибо

IL2016

по первому скрину
у Вас возможно опечатка. Скобки уберите в строке  Возврат СтруктураДанных
может поможет.
а вообще что хотите сделать? может проще?
Использую учебную платформу 1С:Предприятие 8.3

sawogle

Цитата: IL2016 от 14 окт 2017, 20:01
по первому скрину
у Вас возможно опечатка. Скобки уберите в строке  Возврат СтруктураДанных
может поможет.
а вообще что хотите сделать? может проще?
Хочу чтобы из Справочника "Контрагенты" реквизиты подставлялись в Документ, но не получается :dfbsdfbsdf:
Изменил, но опять не получилось

IL2016

это же просто. Например, получить адрес контрагента из справочника Контрагенты и ставить в документ при изменении контрагента.

&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
    Объект.Адрес = ПолучитьАдресКонтрагента(Объект.Контрагент);
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ПолучитьАдресКонтрагента(Контрагент)
    Возврат Контрагент.Адрес;
КонецФункции

для получения всех остальных данных контрагента прописывайте аналогичные функции
Использую учебную платформу 1С:Предприятие 8.3

sawogle

Цитата: IL2016 от 14 окт 2017, 20:28
это же просто. Например, получить адрес контрагента из справочника Контрагенты и ставить в документ при изменении контрагента.

&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
    Объект.Адрес = ПолучитьАдресКонтрагента(Объект.Контрагент);
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ПолучитьАдресКонтрагента(Контрагент)
    Возврат Контрагент.Адрес;
КонецФункции

для получения всех остальных данных контрагента прописывайте аналогичные функции
Спасибо, сейчас попробую
Попробовал :fdbsdfbsd:

Теги:

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

Рейтинг@Mail.ru

Поиск