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

Как программно получить значения данных контрагента?

Автор aleon1, 17 сен 2019, 10:42

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

aleon1

Добрый день! Как программно получить значения данных контрагента: представление, тип клиента?

Программист без "1С".
Знал Fortran, Macroassembler, Lisp, C, Pascal, VBA, JavaScript, вот только никак не могу одолеть 1С

KOI8-R

Откройте вашу УНФ в конфигураторе, найдите форму элемента справочника "Контрагенты", посмотрите на какие реквизиты ссылаются эти поля и напишите запрос по их получению.

aleon1

Цитата: KOI8-R от 17 сен 2019, 10:55
Откройте вашу УНФ в конфигураторе, найдите форму элемента справочника "Контрагенты", посмотрите на какие реквизиты ссылаются эти поля и напишите запрос по их получению.

Благодарю Вас!
Так и сделал, один (Представление, В программе) нашёл сразу, а со вторым (Тип клиента) возникла проблема. Это оказался дополнительный реквизит справочника Контрагенты и при попытке вывести в форму его значение получаю пустое поле. Делаю так:

ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Тип клиента");
Значение    = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект, ДопСвойство);
ОбластьШапки.Параметры.ТипКлиента = Значение;

Сообщений об ошибках нет, но и нормального результата нет. Что-то здесь не так, но что?
Программист без "1С".
Знал Fortran, Macroassembler, Lisp, C, Pascal, VBA, JavaScript, вот только никак не могу одолеть 1С

alexandr_ll

Цитата: aleon1 от 18 сен 2019, 03:07
Цитата: KOI8-R от 17 сен 2019, 10:55
Откройте вашу УНФ в конфигураторе, найдите форму элемента справочника "Контрагенты", посмотрите на какие реквизиты ссылаются эти поля и напишите запрос по их получению.

Благодарю Вас!
Так и сделал, один (Представление, В программе) нашёл сразу, а со вторым (Тип клиента) возникла проблема. Это оказался дополнительный реквизит справочника Контрагенты и при попытке вывести в форму его значение получаю пустое поле. Делаю так:

ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Тип клиента");
Значение    = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект, ДопСвойство);
ОбластьШапки.Параметры.ТипКлиента = Значение;

Сообщений об ошибках нет, но и нормального результата нет. Что-то здесь не так, но что?
Дополнительные реквизиты - это табличная часть справочника, значение нужно получать в цикле.

aleon1

Цитата: alexandr_ll от 18 сен 2019, 07:28
Дополнительные реквизиты - это табличная часть справочника, значение нужно получать в цикле.

А нельзя ли чуть подробнее, что и откуда выбирать и как организовать цикл?
Программист без "1С".
Знал Fortran, Macroassembler, Lisp, C, Pascal, VBA, JavaScript, вот только никак не могу одолеть 1С

alexandr_ll

Цитата: aleon1 от 18 сен 2019, 08:18
Цитата: alexandr_ll от 18 сен 2019, 07:28
Дополнительные реквизиты - это табличная часть справочника, значение нужно получать в цикле.

А нельзя ли чуть подробнее, что и откуда выбирать и как организовать цикл?
              ТЧ = Контрагент.ДополнительныеРеквизиты;

                Для каждого Строка ИЗ ТЧ Цикл
                   
                     ДопСвойство =                     ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Тип клиента");
Значение    = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект, ДопСвойство);
ОбластьШапки.Параметры.ТипКлиента = Значение;                   
КонецЦикла;
   

aleon1

Цитата: alexandr_ll от 18 сен 2019, 08:33
                ТЧ = Контрагент.ДополнительныеРеквизиты;

                Для каждого Строка ИЗ ТЧ Цикл
                   
                     ДопСвойство =                     ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Тип клиента");
Значение    = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект, ДопСвойство);
ОбластьШапки.Параметры.ТипКлиента = Значение;                   
КонецЦикла;


Благодарю Вас! Но не сработало...
Программист без "1С".
Знал Fortran, Macroassembler, Lisp, C, Pascal, VBA, JavaScript, вот только никак не могу одолеть 1С

KOI8-R

Поставьте точку останова в этой строке:
ЦитироватьЗначение    = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект, ДопСвойство);
и посмотрите, получаете ли вы вообще значение в реквизит ДопСвойство
Если в ДопСвойство получаете сам реквизит, то возьмите консоль и посмотрите, что у вас в табличной части "ДополнительныеРеквизиты"

alexandr_ll

Вообще функция
УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект, ДопСвойство)
должна возвращать таблицу значений, посмотрите ее структуру.

Можно попробовать "по-колхозному"
          Для каждого Строка ИЗ ТЧ Цикл
                    Если Лев(Строка.Свойство.Наименование,11) = "Тип клиента" Тогда
                         Значение=Строка.Значение;
ОбластьШапки.Параметры.ТипКлиента = Значение;
                    КонецЕсли; 
КонецЦикла; 


aleon1

Цитата: KOI8-R от 18 сен 2019, 11:02
Поставьте точку останова в этой строке:
ЦитироватьЗначение    = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект, ДопСвойство);
и посмотрите, получаете ли вы вообще значение в реквизит ДопСвойство
Если в ДопСвойство получаете сам реквизит, то возьмите консоль и посмотрите, что у вас в табличной части "ДополнительныеРеквизиты"

Куда ни ткнусь, везде засада! Не могу запустить в режиме построчной отладки... Тут-то что может быть не так?
Программист без "1С".
Знал Fortran, Macroassembler, Lisp, C, Pascal, VBA, JavaScript, вот только никак не могу одолеть 1С

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск