Имя: Пароль:
1C
 
Ошибка при выгрузке обмена данными
,
0 falselight
 
01.02.17
08:35
Так как по ссылкам из документа отловить выгружаемый объект
можно только в обработчике ПередКонвертациейДанных, задаю туда код
фильтрирующий выгрузку.



//
ПодразделениеФильтр = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("СВ0000028");    // КХМ ПОРТ САЛЕ
//
Если Источник.Метаданные().Реквизиты.Найти("бит_аэро_Подразделение") <> Неопределено Тогда
    Если ЗначениеЗаполнено(Источник.бит_аэро_Подразделение) Тогда
        Если НЕ(Источник.бит_аэро_Подразделение.ПринадлежитЭлементу(ПодразделениеФильтр) ИЛИ Источник.бит_аэро_Подразделение = ПодразделениеФильтр) Тогда
            Сообщить("|");
            Сообщить("--ПКО--Источник не выгружен " +СТРОКА(Источник)+"--ПКО--");
            Сообщить("|");
            Отказ = Истина;
        КонецЕсли;
    КонецЕсли;
ИначеЕсли Источник.Метаданные().Реквизиты.Найти("РК_ПодразделениеОрганизации") <> Неопределено Тогда
    Если ЗначениеЗаполнено(Источник.РК_ПодразделениеОрганизации) Тогда
        Если НЕ(Источник.РК_ПодразделениеОрганизации.ПринадлежитЭлементу(ПодразделениеФильтр) ИЛИ Источник.РК_ПодразделениеОрганизации = ПодразделениеФильтр) Тогда
            Сообщить("|");
            Сообщить("--ПКО--Источник не выгружен " +СТРОКА(Источник)+"--ПКО--");
            Сообщить("|");
            Отказ = Истина;
        КонецЕсли;
    КонецЕсли;
КонецЕсли;
//
Сообщить("--ПКО--ВЫГРУЖАЕТСЯ " + СТРОКА(Источник)+" СО СТАТУСОМ < Отказ = " + СТРОКА(Отказ) +"> --ПКО--");
//


при работе выгрузки ошибка случается вот на этом блоке
кода Обработки.ВыгрузкаДанныхXML


    // Глобальный обработчик ПередКонвертациейОбъекта
    Отказ = Ложь;    
    Если ЕстьГлобальныйОбработчикПередКонвертациейОбъекта Тогда
        
        Попытка
            
            Если ФлагРежимОтладкиОбработчиков Тогда
                
                Выполнить(ПолучитьСтрокуВызоваОбработчика(Конвертация, "ПередКонвертациейОбъекта"));
                
            Иначе
                
                Выполнить(Конвертация.ПередКонвертациейОбъекта);
                
            КонецЕсли;




когда идет ссылка на источник Перечисление.ВидыОперацийРеализацияТоваров, на  этой строке

Выполнить(Конвертация.ПередКонвертациейОбъекта);

и выходит ошибка


Ошибка в глобальном обработчике события ПередКонвертациейОбъекта (конвертация)
    ПКО                    =  ВидыОперацийРеализацияТоваров  (Перечисление: Виды операций документа "Реализация товаров и услуг")
    Объект                 =  Продажа, комиссия  (Виды операций документа "Реализация товаров и услуг")
    Обработчик             =  ПередКонвертациейОбъекта (глобальный)
    ОписаниеОшибки         =  Поле объекта не обнаружено (Реквизиты)
    ПозицияМодуля          =  (5)
    КодСообщения           =  64

Ошибка при выгрузке данных для узла плана обмена
    ТипОбъекта             =  Документ объект: Реализация товаров и услуг
    Объект                 =  Реализация товаров и услуг СВ000007286 от 02.12.2016 23:00:04
    ОписаниеОшибки         =  Ошибка в глобальном обработчике события ПередКонвертациейОбъекта (конвертация)
    ПКО                    =  ВидыОперацийРеализацияТоваров  (Перечисление: Виды операций документа "Реализация товаров и услуг")
    Объект                 =  Продажа, комиссия  (Виды операций документа "Реализация товаров и услуг")
    Обработчик             =  ПередКонвертациейОбъекта (глобальный)
    ОписаниеОшибки         =  Поле объекта не обнаружено (Реквизиты)
    ПозицияМодуля          =  (5)
    КодСообщения           =  64
    ПозицияМодуля          =  Обработка.ОбменДаннымиXML.МодульОбъекта(1617)
    КодСообщения           =  72
1 falselight
 
01.02.17
08:37
(0+) Скажите при чем тут Перечисление.ВидыОперацийРеализацияТоваров. Что на нем выходит ошибка, при вызове обработчика ПередКонвертациейДанных.
О нем же там ни слова не сказано? (((
2 falselight
 
01.02.17
08:53
То есть ругаться начинает на перечислении!!!!!
А у перечисления есть Реквизиты?
Так как в обработчике ПередКонвертациейОбъекта, идет проверка
Если Источник.Метаданные().Реквизиты.Найти("Подразделение") <> Неопределено Тогда

Может в этом обработчике идет все объекты вообще?
И когда попадается перечисление на нем и ломается, так как у него нет реквизитов?
3 vicof
 
01.02.17
09:12
Проверь ДНК.
Ну и что у тебя в источнике?
И какие реквизиты у перечисления могут быть?
4 vicof
 
01.02.17
09:13
"Может в этом обработчике идет все объекты вообще"
Там для самых умных идет встроенная справка
5 vicof
 
01.02.17
09:13
И еще СП недалеко валяется
6 falselight
 
01.02.17
09:14
да видимо эта ошибка была от того что искались реквизиты в перечислении
сейчас сделал проверку на документ, ошибка ушла

теперь!!!!! Так как я делал это на то что бы отсеить счет фактуру, кодом

    ИначеЕсли Источник.Метаданные().Реквизиты.Найти("РК_ПодразделениеОрганизации") <> Неопределено Тогда
        Если ЗначениеЗаполнено(Источник.РК_ПодразделениеОрганизации) Тогда
            Если НЕ(Источник.РК_ПодразделениеОрганизации.ПринадлежитЭлементу(ПодразделениеФильтр) ИЛИ Источник.РК_ПодразделениеОрганизации = ПодразделениеФильтр) Тогда
                Сообщить("|");
                Сообщить("--ПКО--Источник не выгружен " +СТРОКА(Источник)+"--ПКО--");
                Сообщить("|");
                Отказ = Истина;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;



так как у неё не то подразделение что надо, почему у неё отказ идет нет, все равно???
7 falselight
 
01.02.17
09:56
Не должно такого же быть?
У СФВ есть реквизит РК_ПодразделениеОрганизации, типа справочник подразделения организации
в (6) проверка на установку его выгрузки отказ = истина
8 falselight
 
01.02.17
10:06
(6+) там точно подразделение у СФВ отличное от того что задано в переменной ПодразделениеФильтр
9 falselight
 
01.02.17
10:40
Итак, в данный момент, данная ошибка продолжает появляться:

Обработчик             =  ПередКонвертациейОбъекта (глобальный)
    ОписаниеОшибки         =  Поле объекта не обнаружено (Реквизиты)

Хотя я поставил условие, что бы обрабатывались только документы. Почему продолжает идти ошибка, как будто бы у объектов продолжают искать Реквизиты?


//
ПодразделениеФильтр = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("СВ0000028");    //
//
Если Найти(СТРОКА(Источник.Метаданные()), "ДокументСсылка") <> неопределено Тогда
    Если Источник.Метаданные().Реквизиты.Найти("Подразделение") <> Неопределено Тогда
        Если ЗначениеЗаполнено(Источник.Подразделение) Тогда
            Если НЕ(Источник.Подразделение.ПринадлежитЭлементу(ПодразделениеФильтр) ИЛИ Источник.Подразделение = ПодразделениеФильтр) Тогда
                Сообщить("|");
                Сообщить("--ПКО--Источник не выгружен " +СТРОКА(Источник)+"--ПКО--");
                Сообщить("|");
                Отказ = Истина;
            КонецЕсли;
        КонецЕсли;
    ИначеЕсли Источник.Метаданные().Реквизиты.Найти("РК_ПодразделениеОрганизации") <> Неопределено Тогда
        Если ЗначениеЗаполнено(Источник.РК_ПодразделениеОрганизации) Тогда
            Сообщить("В документе " + Источник.РК_ПодразделениеОрганизации);
            Сообщить("В фильтре " + ПодразделениеФильтр);
            Если НЕ(Источник.РК_ПодразделениеОрганизации.ПринадлежитЭлементу(ПодразделениеФильтр) ИЛИ Источник.РК_ПодразделениеОрганизации = ПодразделениеФильтр) Тогда
                Сообщить("|");
                Сообщить("--ПКО--Источник не выгружен " +СТРОКА(Источник)+"--ПКО--");
                Сообщить("|");
                Отказ = Истина;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    Сообщить("--ПКО--ВЫГРУЖАЕТСЯ " + СТРОКА(Источник)+" СО СТАТУСОМ < Отказ = " + СТРОКА(Отказ) +"> --ПКО--");
КонецЕсли;
//
10 falselight
 
01.02.17
10:53
(9+) Это поправил, нужно было сделать вот так

Если Найти(СТРОКА(Источник.Метаданные()), "ДокументСсылка") <> 0 Тогда


сейчас идет такая ошибка, как её устранить, -

Если Найти(СТРОКА(Источник.Метаданные()), "ДокументСсылка") <> неопределено Тогда

    Обработчик             =  ПередКонвертациейОбъекта (глобальный)
    ОписаниеОшибки         =  Метод объекта не обнаружен (Метаданные)


ААА, попробую в Попытку вставить!
11 falselight
 
01.02.17
10:54
Такая ошибка

Ошибка в глобальном обработчике события ПередКонвертациейОбъекта (конвертация)
    ПКО                    =  ДанныеПервичныхДокументов  (Регистр сведений: Данные первичных документов)
    Объект                 =  РегистрСведенийЗапись.ДанныеПервичныхДокументов  (Регистр сведений запись: Данные первичных документов)
    Обработчик             =  ПередКонвертациейОбъекта (глобальный)
    ОписаниеОшибки         =  Метод объекта не обнаружен (Метаданные)
    ПозицияМодуля          =  (5)
    КодСообщения           =  64

Ошибка при выгрузке данных для узла плана обмена
    ТипОбъекта             =  Регистр сведений набор записей: Данные первичных документов
    Объект                 =  РегистрСведенийНаборЗаписей.ДанныеПервичныхДокументов
    ОписаниеОшибки         =  Ошибка в глобальном обработчике события ПередКонвертациейОбъекта (конвертация)
    ПКО                    =  ДанныеПервичныхДокументов  (Регистр сведений: Данные первичных документов)
    Объект                 =  РегистрСведенийЗапись.ДанныеПервичныхДокументов  (Регистр сведений запись: Данные первичных документов)
    Обработчик             =  ПередКонвертациейОбъекта (глобальный)
    ОписаниеОшибки         =  Метод объекта не обнаружен (Метаданные)
    ПозицияМодуля          =  (5)
    КодСообщения           =  64
    ПозицияМодуля          =  Обработка.ОбменДаннымиXML.МодульОбъекта(1617)
    КодСообщения           =  72
12 falselight
 
01.02.17
11:00
8888\ Наконец то это все выгрузилось!
ПОПЫТКОЙ ИСКЛЮЧЕНИЕМ обощел все остальное!
13 falselight
 
01.02.17
11:02
тольк опочему то счет фактура снова выгружается (
14 falselight
 
01.02.17
11:07
ХМ, то есть возможно нельзя использовать попытку
исключение в обработчике ПередКонвертациейОбъекта?
15 falselight
 
01.02.17
12:51
мммм, молчим!
16 vicof
 
01.02.17
12:55
всем пофиг
17 falselight
 
01.02.17
13:19
вот так сделал, тестируя несколько раз, почему этот код не срабатывает (((( и не фильтруется счет фактура выданная?
Может кто подскачет? А то я утомился че то...



//
ПодразделениеФильтр = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("СВ0000028");    // КХМ ПОРТ САЛЕ
//
СООБЩИТЬ("--ПКО--В НАЧАЛЕ по объекту " + СТРОКА(Источник));
Если Найти(СТРОКА(Источник), "РегистрСведенийЗапись") = 0 Тогда
    //ПОПЫТКА
    Если Найти(СТРОКА(Источник.Метаданные()), "ДокументСсылка") <> 0 Тогда
        Если Источник.Метаданные().Реквизиты.Найти("бит_аэро_Подразделение") <> Неопределено Тогда
            Если ЗначениеЗаполнено(Источник.бит_аэро_Подразделение) Тогда
                Если НЕ(Источник.бит_аэро_Подразделение.ПринадлежитЭлементу(ПодразделениеФильтр) ИЛИ Источник.бит_аэро_Подразделение = ПодразделениеФильтр) Тогда
                    Сообщить("|");
                    Сообщить("--ПКО--Источник не выгружен " +СТРОКА(Источник)+"--ПКО--");
                    Сообщить("|");
                    Отказ = Истина;
                КонецЕсли;
            КонецЕсли;
        ИначеЕсли Источник.Метаданные().Реквизиты.Найти("РК_ПодразделениеОрганизации") <> Неопределено Тогда
            Если ЗначениеЗаполнено(Источник.РК_ПодразделениеОрганизации) Тогда
                Сообщить("В документе " + Источник.РК_ПодразделениеОрганизации);
                Сообщить("В фильтре " + ПодразделениеФильтр);
                Если НЕ(Источник.РК_ПодразделениеОрганизации.ПринадлежитЭлементу(ПодразделениеФильтр) ИЛИ Источник.РК_ПодразделениеОрганизации = ПодразделениеФильтр) Тогда
                    Сообщить("|");
                    Сообщить("--ПКО--Источник не выгружен " +СТРОКА(Источник)+"--ПКО--");
                    Сообщить("|");
                    Отказ = Истина;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
        Сообщить("--ПКО--ВЫГРУЖАЕТСЯ " + СТРОКА(Источник)+" СО СТАТУСОМ < Отказ = " + СТРОКА(Отказ) +"> --ПКО--");
    КонецЕсли;
    //ИСКЛЮЧЕНИЕ
        //СООБЩИТЬ("--ПКО--РАБОТАЕТ ИСКЛЮЧЕНИЕ по объекту " + СТРОКА(Источник));
    //    СООБЩИТЬ("--ПКО--РАБОТАЕТ ИСКЛЮЧЕНИЕ по объекту " + СТРОКА(Источник.Метаданные()));
    //КОНЕЦПОПЫТКИ;
КонецЕсли;
18 falselight
 
01.02.17
13:21
(17+)  Это вставлено в обработчик ПередКонвертациейОбъекта

думаю что то логически напутано (
19 falselight
 
01.02.17
13:35
почему не заходит в эту строку, как узнать?

Если Найти(СТРОКА(Источник.Метаданные()), "ДокументСсылка") <> 0 Тогда
20 Redkiy
 
01.02.17
13:37
Отдохни и снова в бой!
21 falselight
 
01.02.17
13:44
(20) да чето и так буксуется!!!!!
22 vicof
 
01.02.17
13:44
Скока платишь?
23 falselight
 
01.02.17
13:49
вот это никогда не сработает
Если Найти(СТРОКА(Источник), "РегистрСведенийЗапись") = 0 Тогда

но а потом
24 falselight
 
01.02.17
13:51
(23) вернее она всегда будет выполняться, че то я запутался
25 falselight
 
01.02.17
13:59
Подскажете ли, как в обработчике ПередКонвертациейОбъекта можно проверить какой объект методанных идет? Справочник, Документ, или Регистр?
26 Cyberhawk
 
01.02.17
14:01
(25) Получить объект МД методом Метаданные()
27 Cyberhawk
 
01.02.17
14:02
+(26) Дальше уже проверить вхождение этого объекта МД в коллекцию Метаданные.Справочники, Метаданные.Документы и т.д. методом Содержит()
28 falselight
 
01.02.17
14:10
(27) Например, вот это, пишется одинаково
СООБЩИТЬ(ТипЗнч(Источник));
СООБЩИТЬ(ПКО.Источник);

названия что в режиме предприятия, то есть синонимы

а на это Источник.Метаданные()
бывает ругается, что неизвестен метод Метаданные()

А как проверять то? Используя Источник же?
29 Cyberhawk
 
01.02.17
14:17
(28) Альтернативный вариант:
Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Источник))
30 falselight
 
01.02.17
15:34
(29) Скажите почему ТипЗнч(Источник) возвращает не тип объекта, к примеру Документ.РеализацияТоваровУслуг, а синоним объекта?
31 falselight
 
01.02.17
15:37
(30+) Или я что то путаю?

И так, можно, фильтровать обработку только справочников и документов, в обработчике ПередКонвертациейОбъектов???

Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Источник))
Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Источник))

Какие есть ещё аналогичные методы? Этот чето прям очень глубокий!
32 falselight
 
01.02.17
15:55
Скажите почему?

0
--ПВО--ВЫГРУЖАЕТСЯ РегистрСведенийНаборЗаписей.ДанныеПервичныхДокументов СО СТАТУСОМ < Отказ = Нет> --ПВО--
--ПКО--В НАЧАЛЕ по объекту ЗАО "ТРЕСТ"
Организации
Организации
0
--ПКО--В НАЧАЛЕ по объекту Реализация товаров и услуг СВ000007133 от 03.12.2016 10:31:59
Реализация товаров и услуг
Реализация товаров и услуг
0
--ПКО--В НАЧАЛЕ по объекту РегистрСведенийЗапись.ДанныеПервичныхДокументов
Регистр сведений запись: Данные первичных документов
Регистр сведений запись: Данные первичных документов
0

СООБЩИТЬ(СТРОКА(Найти(СТРОКА(Источник), "Регистр сведений запись"))) - это возвращает всегда 0? Что туда не передать...?
33 falselight
 
01.02.17
15:57
(32+) И причем, ни разу , не заходит в это условие,-

Если Найти(СТРОКА(Источник), "Регистр сведений запись") = 0 Тогда

Что это может значить?
34 falselight
 
01.02.17
16:19
(29) Это тоже хрень выдает!!!!
Счет фактура - Нет.
Реализация товаров услуг - Да!
35 falselight
 
01.02.17
16:44
(34) А ну сюда нужно ссылку передавать всегда!!!
2 + 2 = 3.9999999999999999999999999999999...