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

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

Автор shvkxl, 28 апр 2023, 08:16

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

shvkxl

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


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


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

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

Версия конфигурации Управление торговлей для Казахстана, редакция 3, локализация для Казахстана: "1С-Рейтинг" (3.4.4.108)


alexandr_ll


shvkxl

В модуле "ОбщегоНазначенияУТ" есть такие строчки:
Если Объект.ОбменДанными.Загрузка Тогда
Отправитель = Объект.ОбменДанными.Отправитель;
Если НЕ ЗначениеЗаполнено(Отправитель) ИЛИ ЗначениеЗаполнено(Отправитель)
И ОбменДаннымиПовтИсп.ЭтоУзелРаспределеннойИнформационнойБазы(Отправитель) Тогда
Возврат;
КонецЕсли;
КонецЕсли;

LexaK

shvkxl, в своем коде уберите эту команду!
// ОбщегоНазначенияУТ.СинхронизироватьКлючи(Объект);
если помогло нажмите: Спасибо!

shvkxl

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

LexaK

ааа, да, две строчки уберите

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

они вроде как не нужны для вашей задачи
если помогло нажмите: Спасибо!

shvkxl

LexaK, не поверите без них другая ошибка:

Ошибка при вызове метода контекста (Записать)
{ВнешняяОбработка.Копирование.Форма.Форма.Форма(20)}:ОбъектНоменклатура.Записать();
{ВнешняяОбработка.Копирование.Форма.Форма.Форма(5)}:СкопироватьЗначенияРеквизитаНаСервере();

по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
Метод объекта не обнаружен (СинхронизироватьКлючи)

LexaK

shvkxl, попробуйте добавить строку
    Пока ВыборкаНоменклатуры.Следующий() Цикл
        ОбъектНоменклатура = ВыборкаНоменклатуры.ПолучитьОбъект();
        ОбъектНоменклатура.ГруппаДляСайта = ОбъектНоменклатура.ГруппаДоступа;   
        ОбъектНоменклатура.ОбменДанными.Загрузка = Истина;    //Добавить
        ОбъектНоменклатура.Записать();
     КонецЦикла;
если помогло нажмите: Спасибо!

shvkxl

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

LexaK

shvkxl, добавьте ее в цикл
    Пока ВыборкаНоменклатуры.Следующий() Цикл
        ОбъектНоменклатура = ВыборкаНоменклатуры.ПолучитьОбъект();
        ОбъектНоменклатура.ГруппаДляСайта = ОбъектНоменклатура.ГруппаДоступа;   
        ОбъектНоменклатура.ОбменДанными.Загрузка = Истина;//Добавить
ОбщегоНазначенияУТ.ПодготовитьДанныеДляСинхронизацииКлючей(ОбъектНоменклатура, Параметры);
        ОбъектНоменклатура.Записать();
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск