@shvkxl

Внешняя обработка,которая копирует значение реквизита в другой реквизит справочника?

Пишу внешнюю обработку, которая скопирует значение из реквизита "Группы доступа" в реквизит "Группы для сайта" справочника Номенклатура. Выдает ошибку:

Поле объекта не обнаружено (ОбменДанными)
{ОбщийМодуль.ОбщегоНазначенияУТ.Модуль(7234)}:Если Объект.ОбменДанными.Загрузка Тогда
{ВнешняяОбработка.Копирование.Форма.Форма.Форма(11 )}:ОбщегоНазначенияУТ.ПодготовитьДанныеДляСинхрони зацииКлючей(Объект, Параметры);
{ВнешняяОбработка.Копирование.Форма.Форма.Форма(5) }:СкопироватьЗначенияНаСервере();

ОбщегоНазначенияУТ.ПодготовитьДанныеДляСинхронизацииКлючей(Объект, Параметры);
ОбщегоНазначенияУТ.СинхронизироватьКлючи(ЭтотОбъект);
ВыборкаНоменклатуры = Справочники.Номенклатура.Выбрать();

Пока ВыборкаНоменклатуры.Следующий() Цикл
        ОбъектНоменклатура = ВыборкаНоменклатуры.ПолучитьОбъект();
        ОбъектНоменклатура.ГруппаДляСайта = ОбъектНоменклатура.ГруппаДоступа;    
        ОбъектНоменклатура.Записать();
    КонецЦикла;


Версия конфигурации Управление торговлей для Казахстана, редакция 3, локализация для Казахстана: "1С-Рейтинг" (3.4.4.108)
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 2
@WaterSmith
Android-разработчик. Java, Kotlin
Ошибка возникает не в вашем коде, а в типовом, в модуле "ОбщегоНазначенияУТ".
ОбщегоНазначенияУТ.ПодготовитьДанныеДляСинхронизацииКлючей(Объект, Параметры);
ОбщегоНазначенияУТ.СинхронизироватьКлючи(ЭтотОбъект);

В один из этих методов вы передаете не то, что ожидает типовой код. Обратите внимание, в одном случае у вас передается "Объект" а в другом "ЭтотОбъект".
Ответ написан
Комментировать
@Dementor
программист, архитектор, аналитик
{ВнешняяОбработка.Копирование.Форма.Форма.Форма(11 )}:ОбщегоНазначенияУТ.ПодготовитьДанныеДляСинхронизацииКлючей(Объект, Параметры);

Выделил строчку, где вы допустили ошибку в вашем коде. В форме внешней обработки в строке 11 вы передаете в функцию ОбщегоНазначенияУТ.ПодготовитьДанныеДляСинхронизацииКлючей не значение типа СправочникОбъект, а данные формы, у которые соответственно нет предопределенного свойства "ОбменДанными". Сначала нужно выполнить преобразование с помощью ДанныеФормыВзначение() или РеквизитФормыВЗначение()

P.S. Еще обратила на себя внимание строчка:
ОбщегоНазначенияУТ.СинхронизироватьКлючи(ЭтотОбъект);
Вы же в курсе, что в контексте формы ЭтотОбъект = ЭтаФорма ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы