Есть такой код:
Номенклатура1С = Данные.НачатьСоздание("Справочник.Номенклатура")
.Реквизит("ВидНоменклатуры", НовыйВидНоменклатуры())
.Создать();
Метод НовыйВидНоменклатуры() определен так:
Функция НовыйВидНоменклатуры()
ВидНоменклатуры = Данные.НачатьСоздание("Справочник.ВидыНоменклатуры")
.Создать();
Возврат ВидНоменклатуры;
КонецФункции
В результате в переменной Номенклатура1С у нас объект СправочникСсылка.ВидНоменклатуры, а ожидал, что будет СправочникСсылка.Номенклатура.
Судя по всему, плагин использует единственный экземпляр обработки и все состояние хранит в нем, поэтому вложенные вызовы невозможны.
Это не удобно/не естественно и про такую особенность нужно помнить, а если забыть - сложно отлаживать.
В качестве обхода можно делать так:
ВидНоменклатуры = НовыйВидНоменклатуры();
Номенклатура1С = Данные.НачатьСоздание("Справочник.Номенклатура")
.Реквизит("ВидНоменклатуры", ВидНоменклатуры)
.Создать();
Но это тоже не всегда удобно (и опять же, про это нужно знать/помнить).
В качестве решения предлагаю рассмотреть возможность сделать так, чтобы метод НачатьСоздание() возвращал новый экземпляр плагина "Данные".
Есть такой код:
Метод
НовыйВидНоменклатуры()определен так:В результате в переменной Номенклатура1С у нас объект
СправочникСсылка.ВидНоменклатуры, а ожидал, что будетСправочникСсылка.Номенклатура.Судя по всему, плагин использует единственный экземпляр обработки и все состояние хранит в нем, поэтому вложенные вызовы невозможны.
Это не удобно/не естественно и про такую особенность нужно помнить, а если забыть - сложно отлаживать.
В качестве обхода можно делать так:
Но это тоже не всегда удобно (и опять же, про это нужно знать/помнить).
В качестве решения предлагаю рассмотреть возможность сделать так, чтобы метод
НачатьСоздание()возвращал новый экземпляр плагина "Данные".