• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

ПолучитьАтрибут - не работает в справочнике!

  • Автор темы Hryv
  • Дата начала
H

Hryv

Я просто офигел :)

Как обойти проблему я разберусь, но может кто-то сможет объяснить причину
Я понимать такое отказываюсь

У меня есть внешняя обработка, где я делаю
ВР = ВидРасчета.ПолучитьАтрибут(ИД);

все отлично работает

делаю тоже самое в форме списка справочника и получаю
ВР = ВидРасчета.ПолучитьАтрибут(ИД);
{Справочник.СчетаДляРасчетов.ФормаСписка.ФормаСписка.Модуль(12)}: Поле агрегатного объекта не обнаружено (ПолучитьАтрибут)

Ради прикола проверил и узнал, что Константа.ПолучитьАтрибут() и Перечисление.ПолучитьАтрибут() дают тот же эффект
Почему!!!
я в шоке
 
U

unknown181538

А вид расчета в форме списка имеет тот же тип и значение, если смотреть в отладчике?
 
K

kaa

а так ВР = ТекущийЭлемент().ПолучитьАтрибут(ИД);
 
H

Hryv

Дело не в этом
ВидРасчета - это объект глобального контекста
Очено похоже на Константа

Обычно пишут ВидРасчета.ПоОкладу или Константа.Директор, чтобы использовать конкретный ВидРасчета или Константу
Но у них существует метод:

ПолучитьАтрибут(<?>);
Синтаксис:
ПолучитьАтрибут(<ИмяВидаРасч>)
Назначение:
Получить значение конкретного вида расчета по идентификатору. Возвращает значение конкретного вида расчета.
Параметры:
<ИмяВидаРасч> - строковое выражение, содержащее имя конкретного вида расчета , как оно задано в конфигураторе.

То есть
ВидРасчета.ПоОкладу
и
ВидРасчета.ПолучитьАтрибут("ПоОкладу")
одно и тоже

так вот в модуле формы отчета ВидРасчета.ПолучитьАтрибут("ПоОкладу") работает, а в модуле формы списка справочника - не работает (ни для ВидРасчета ни для Константа)
в документации я нигде не нашел ограничений по этому поводу, и не понимаю почему так
 
U

unknown181538

Как я понимаю (не шарю в этой компоненте), ВидРАсчета это объект, определенный следующим образом:
ВидРасчет = СоздатьОбъект("ВидРасчета");
У вас так?

ПС...нет, мб и не так понял...
А не зателсалась ли где одноименная переменная?
 
H

Hryv

unknown181538, нет, так не создается ВидРасчет = СоздатьОбъект("ВидРасчета");
Как я уже писал ВидРасчета очень похоже на Константа
Через точку можно обращаться к конкретному объекту


А не зателсалась ли где одноименная переменная?
Это мне тоже приходило в голову, но отладчик показывает, что в этом плане все нормально

Я уже думаю, что у меня сама 1С какая-то корявая, надо будет в других местах проверить

Вообще проблему я решил: из справочника запускаю обработку используя ОткрытьФорму, а в обработке ПриОткрытии делаю что надо и сразу закрываю
Но это однозначно извращенный путь. Почему что-то можно сделать в обработке и нельзя сделать в справочнике, если это касается какого-то третьего объекта :wacko: ?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!