Имя: Пароль:
1C
1С v8
Ошибка при регистрации изменений плана обмена с сайтом в Ут для Укр 2.3(Ут 10.3)
0 Boudybuilder
 
19.12.13
02:46
Не могу понять...
У меня изображения ведутся и по характеристикам товара. Переделал код регистрации обмена для узла обмена с веб сайтом. При изменении изображения запись изменений срабатывает ,  а при обмене нет... Ошибка. В чем дело может быть? Отладчиком смотрю вроде все ок.

Вот кусок кода который переделал в типовой

комент "Фан" - это я уже писал





ИначеЕсли ТипОбъекта = Тип("СправочникОбъект.ХранилищеДополнительнойИнформации") Тогда
        
        МассивУзлов = ПолучитьМассивУзловДляРегистрации(Истина);
        
        Если ТипЗнч(Объект.Объект) = Тип("СправочникСсылка.Номенклатура") Тогда
            
            ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Объект.Объект);
            
            // Надо зарегистрировать все изображения (файлы), иначе Битрикс
            // удалит те, что не будут загружены
            
            Запрос = Новый Запрос;
            
            Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
            |    ХранилищеДополнительнойИнформации.Ссылка
            |ИЗ
            |    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
            |ГДЕ
            |    (НЕ ХранилищеДополнительнойИнформации.ПометкаУдаления)
            |    И ХранилищеДополнительнойИнформации.Объект = &Объект";
            
            Запрос.УстановитьПараметр("Объект", Объект.Объект);
            
            Результат = Запрос.Выполнить();
            
            Выборка = Результат.Выбрать();
            
            Пока Выборка.Следующий() Цикл
                
                ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Выборка.Ссылка);
                
            КонецЦикла;
            
        ИначеЕсли ТипЗнч(Объект.Объект) = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") Тогда  // Фан А тут зарегистрируем уже и фотки характеристики
            
            ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Объект.Объект.Владелец); // Фан - попробуем зарегистрировать номенклатуру а не характеристику. (это требует проверки)
            
            // Надо зарегистрировать все изображения (файлы), иначе Битрикс
            // удалит те, что не будут загружены
            
            Запрос = Новый Запрос;
            
            Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
            |    ХранилищеДополнительнойИнформации.Ссылка
            |ИЗ
            |    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
            |ГДЕ
            |    (НЕ ХранилищеДополнительнойИнформации.ПометкаУдаления)
            |    И ХранилищеДополнительнойИнформации.Объект = &Объект";
            
            Запрос.УстановитьПараметр("Объект", Объект.Объект);
            
            Результат = Запрос.Выполнить();
            
            Выборка = Результат.Выбрать();
            
            Пока Выборка.Следующий() Цикл
                
                ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Выборка.Ссылка);
                
            КонецЦикла;
            
        КонецЕсли;
        
    ИначеЕсли ТипОбъекта = Тип("СправочникОбъект.ХарактеристикиНоменклатуры")
1 Boudybuilder
 
19.12.13
02:47
ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Объект.Объект.Владелец); - вот тут вот и спотыкается. Хотя в отладчике это СправочникСсылка.Номенклатура
2 Boudybuilder
 
19.12.13
02:48
Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка при выполнении обработчика - 'ПриЗаписи': {ОбщийМодуль.ПроцедурыОбменаССайтом.Модуль(114)}: Ошибка при вызове метода контекста (ЗарегистрироватьИзменения): Недопустимое значение параметра (параметр номер '2')
3 Boudybuilder
 
19.12.13
09:52
Пробовал все записи снять с регистрации а потом заново зарегистрировать... Не помогло ... :(
4 Boudybuilder
 
26.12.13
18:39
Выловил ошибку - это объект не найден :(

Вот , и при записи изменений базой приемником частенько выскакивает ошибка в тех случаях когда картинка приходит , а ее объект к которому она принадлежит "ХарактеристикаНоменклатуры" еще в базу не записан... И получается пустая ссылка , и выдает ошибку что кривой параметр 2 (ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Объект.Объект.Владелец)). Как тут быть?

Вот код:

ИначеЕсли ТипОбъекта = Тип("СправочникОбъект.ХранилищеДополнительнойИнформации") Тогда

МассивУзлов = ПолучитьМассивУзловДляРегистрации(Истина);

Если ТипЗнч(Объект.Объект) = Тип("СправочникСсылка.Номенклатура") Тогда

ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Объект.Объект);

// Надо зарегистрировать все изображения (файлы), иначе Битрикс
// удалит те, что не будут загружены

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    ХранилищеДополнительнойИнформации.Ссылка
|ИЗ
|    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
|ГДЕ
|    (НЕ ХранилищеДополнительнойИнформации.ПометкаУдаления)
|    И ХранилищеДополнительнойИнформации.Объект = &Объект";

Запрос.УстановитьПараметр("Объект", Объект.Объект);

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Выборка.Ссылка);

КонецЦикла;

ИначеЕсли ТипЗнч(Объект.Объект) = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") Тогда // Фан А тут зарегистрируем уже и фотки характеристики

ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Объект.Объект.Владелец); // Фан - попробуем зарегистрировать номенклатуру а не характеристику. (это требует проверки)

// Надо зарегистрировать все изображения (файлы), иначе Битрикс
// удалит те, что не будут загружены

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    ХранилищеДополнительнойИнформации.Ссылка
|ИЗ
|    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
|ГДЕ
|    (НЕ ХранилищеДополнительнойИнформации.ПометкаУдаления)
|    И ХранилищеДополнительнойИнформации.Объект = &Объект";

Запрос.УстановитьПараметр("Объект", Объект.Объект);

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Выборка.Ссылка);

КонецЦикла;

КонецЕсли;


На фото выловил отладчиком.
Я думаю , это не одиночный случай , такое у меня было и в типовом коде , пришлось подправить.



http://forum.infostart.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=370279


В той же процедуре та же проблема была. Пришлось типовую править.


Я то и тут могу такое условие поставить , но боюсь последствия будут самые разнообразные...

http://forum.infostart.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=370280
2 + 2 = 3.9999999999999999999999999999999...