Имя: Пароль:
1C
1С v8
Обмен 1С с сайтом, регистрация изменений при резервировании товара
,
0 T1m0ha
 
07.02.18
12:11
Добрый день!
1С УТ 10.3, настроил обмен с сайтом, сделал сначала полную выгрузку, потом настроил выгрузку только изменений. Всё на первый взгляд прекрасно. Остатки, цены выгружаются, изменения вроде тоже... Но.. Изменения выгружаются только при изменении самой карточки номенклатуры, цены или остатка товара на складе. Резервирование товара не регистрирует изменений и товар на сайт не выгружается.
Помогите пожалуйста побороть эту беду! Понимаю что нужно дописывать модуль обмена, нашел участок кода регистрации изменений. Дописал, но ничего не вышло. Строго не судите, только начинаю:

Процедура ЗарегистрироватьИзменения(Объект)
    
    Если Не ПараметрыСеанса.НаличиеОбменаССайтом Тогда
        Возврат;
    КонецЕсли;
        
    ТипОбъекта = ТипЗнч(Объект);
    
    // Номенклатура и картинки
    Если ТипОбъекта = Тип("РегистрСведенийНаборЗаписей.ЗначенияСвойствОбъектов") Тогда
        
        МассивУзлов = ПолучитьМассивУзловДляРегистрации(Истина);
        Для каждого Запись Из Объект Цикл
            
            ТипДанных = ТипЗнч(Запись.Объект);
            
            Если ТипДанных = Тип("СправочникСсылка.Номенклатура") Тогда
                ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Запись.Объект);
            ИначеЕсли ТипДанных = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") Тогда
                ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Запись.Объект.Владелец);
            КонецЕсли;    
            
        КонецЦикла;
        
    ИначеЕсли ТипОбъекта = Тип("РегистрНакопленияНаборЗаписей.ТоварыНаСкладах")
          ИЛИ ТипОбъекта = Тип("РегистрСведенийНаборЗаписей.ЦеныНоменклатуры") Тогда          
        МассивУзлов = ПолучитьМассивУзловДляРегистрации(Истина);  
        Для каждого Запись Из Объект Цикл
            
            ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Запись.Номенклатура);
            
        КонецЦикла;
        
    //Я так понял нужно дописать это++ /Регистрация изменений при резервировании товара
    ИначеЕсли ТипОбъекта = Тип("РегистрНакопленияНаборЗаписей.ТоварыВРезервеНаСкладах") Тогда  
        МассивУзлов = ПолучитьМассивУзловДляРегистрации(Истина);  
        Для каждого Запись Из Объект Цикл
            
            ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Запись.Номенклатура);
            
        КонецЦикла;
    //--
        
    ИначеЕсли ТипОбъекта = Тип("РегистрСведенийНаборЗаписей.ШтрихКоды") Тогда
        
        МассивУзлов = ПолучитьМассивУзловДляРегистрации(Истина);
        Для каждого Запись Из Объект Цикл
            
            Если ТипЗнч(Запись.Владелец) = Тип("СправочникСсылка.Номенклатура") Тогда
                ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Запись.Владелец);
            КонецЕсли;
            
        КонецЦикла;
        
    ИначеЕсли ТипОбъекта = Тип("СправочникОбъект.ХранилищеДополнительнойИнформации") Тогда        
        
        МассивУзлов = ПолучитьМассивУзловДляРегистрации(Истина);
        
        Если ТипЗнч(Объект.Объект) = Тип("СправочникСсылка.Номенклатура")
           И Объект.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение Тогда    
          
           ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Объект.Объект);  
           ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Объект.Ссылка);
            
        КонецЕсли;    
        
    ИначеЕсли ТипОбъекта = Тип("СправочникОбъект.ХарактеристикиНоменклатуры")
          ИЛИ ТипОбъекта = Тип("СправочникОбъект.ЕдиницыИзмерения") Тогда            
          
        Если ТипЗнч(Объект.Владелец) = Тип("СправочникСсылка.Номенклатура") Тогда
          
            МассивУзлов = ПолучитьМассивУзловДляРегистрации(Истина);      
            ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Объект.Владелец);
            
        КонецЕсли;
1 Повелитель
 
07.02.18
12:18
(0) Все верно написано.

Отладчиком пробовали?
Он сюда заходит?

Там еще подписка на событие есть "Б_ЗарегистрироватьИзмененияПередЗаписьюРегистраСведенийДляОбменаССайтами", нужно этот регистр туда включить.
2 Rema Dan
 
07.02.18
12:18
(0) Мало поправить эту процедуру. Теперь нужно добавить этот регистр в подписку на событие ПриЗаписиРегистраНакопленияОбменССайтом, чтобы эта процедура вызывалась.
3 T1m0ha
 
07.02.18
12:57
(1) Отладчиком не пробовал, но здесь:
    ИначеЕсли ТипОбъекта = Тип("РегистрНакопленияНаборЗаписей.ТоварыНаСкладах")
          ИЛИ ТипОбъекта = Тип("РегистрСведенийНаборЗаписей.ЦеныНоменклатуры") Тогда          
        МассивУзлов = ПолучитьМассивУзловДляРегистрации(Истина);  
        Для каждого Запись Из Объект Цикл
            
            ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Запись.Номенклатура);
            
        КонецЦикла;

точно бывает, так ка изменения цен выгружаются.
4 T1m0ha
 
07.02.18
12:59
(2) процедура изначально вызывалась, я дописал только регистрацию изменений при резервировании товара.
5 Мимохожий Однако
 
07.02.18
13:00
(3) Отладчиком всё-таки попробуй.
6 Повелитель
 
07.02.18
13:23
(3) Там она может и бывает, а вот тут ТоварыВРезервеНаСкладах вряд ли, если подписка не включена.
7 T1m0ha
 
07.02.18
13:28
(5), (6) Да, действительно не бывает. При записи документа "Установка цен номенклатуры" - заходит, при записи документа "Резервирование товаров" - нет. А вот где найти подписку на документ "Резервирование товаров", я что-то не пойму, обработчик события ПриЗаписи... документа "Резервирование товаров" должен вызывать процедуру? Простите за глупые вопросы, но почти разобрался ведь, помогите)
8 1ctube
 
07.02.18
13:36
(7)  в Конфигураторе в "общие" есть подписки на события. Может она называется как написал сверху чувак (1)
9 T1m0ha
 
07.02.18
13:54
(1) (2) (5) (8) Дааааа! Хвала вам и честь, о великие волшебники мисты! Добра и счастья вам и вашим близким!
ОГРОМНЕЙШЕЕ вам человеческое спасибо! Действительно, код верный, нужно было всего лишь добавить в подписки на события.
10 DexterMorgan
 
07.02.18
14:14
Что нужно сделать, скажем после 30и, чтобы испытывать такую же радость как в (9) ?
11 DexterMorgan
 
07.02.18
14:20
Я был бы так рад разве что сдав на серт типа такого http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-866
12 T1m0ha
 
07.02.18
14:29
(10) Незнаю, мне 23) Но я просто рад, что люди не безразличны, и не смотря на то, что я задавал по сути тупые вопросы для специалиста, мне ответили и помогли. Вот и радуюсь, что мир не без добрых людей! :)