Имя: Пароль:
1C
1С v8
Подскажите по ошибке в КД
0 zippygrill
 
20.02.12
10:25
Не могу получить значение из входящие данные для свойство Родитель у контрагентов. И непонятно причина ошибки.

Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1637)}: Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
   ПВД                    =  Контрагенты
   Обработчик             =  ПередОбработкойВыгрузкиДанных
   ОписаниеОшибки         =  Ошибка получения свойства объекта из входящих данных
   ПКО                    =  Контрагенты  (:)
   ПКС                    =  10  ( --> Родитель)
   Объект                 =  Дилеры  (Контрагент)
   СвойствоПриемника      =  Родитель  (СправочникСсылка.Контрагенты)
   ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
   ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8201)
   КодСообщения           =  68
   ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1618)
   КодСообщения           =  31

В ПВД Контрагенты написал:

Если Параметры.мДокументов.Количество() <> 0 Тогда
   Для Каждого Элемент Из Параметры.мДокументов Цикл
           ИсходящиеДанные = Новый Структура;
           ИсходящиеДанные.Вставить("Родитель", Элемент.Контрагент.Родитель);
           ИсходящиеДанные.Вставить(........., Элемент.Контрагент...........);
                       ВыгрузитьПоПравилу(Элемент.Контрагент,,ИсходящиеДанные,,"Контрагенты");    
   КонецЦикла;
Иначе
   Отказ = Истина;
КонецЕсли;
В свойство Родитель для ПКО Контрагенты поставил ПолучитьИзВхДанные и Пойск. А в самой ПКО Контрагенты в ПоляПойска:
Если НомерВариантаПоиска = 1 Тогда
   Если ЗначениеЗаполнено(СвойстваПоиска.Получить("ИНН")) Тогда
       СтрокаИменСвойствПоиска = "ИНН, КПП";
   Иначе
       СтрокаИменСвойствПоиска = "Родитель, ЭтоГруппа, ИНН, Наименование";
   КонецЕсли;
КонецЕсли;
1 zippygrill
 
20.02.12
10:33
ап
2 zippygrill
 
20.02.12
10:36
отладчик без проблемы заходит в ИсходящиеДанные.Вставить("Родитель", Элемент.Контрагент.Родитель); и выгружает по правиле.
3 zippygrill
 
20.02.12
10:45
еще
4 zippygrill
 
20.02.12
10:50
еще раз
5 zippygrill
 
20.02.12
10:59
?
6 Skylark
 
20.02.12
11:02
написал сумбура какого-то

Ошибка при Получение элемента по индексу для значения не определено вот такая:
> Получение элемента по индексу для значения не определено

Открывай обработчик Получение элемента по индексу для значения не определено и ищи там кусок кода, где идет обращение по индексу к чему-нибудь
7 Skylark
 
20.02.12
11:03
Ошибка при ПередОбработкойПравилаВыгрузки вот такая:
> Получение элемента по индексу для значения не определено

Открывай обработчик ПередОбработкойПравилаВыгрузки и ищи там кусок кода, где идет обращение по индексу к чему-нибудь
8 zippygrill
 
20.02.12
11:28
ты тоже написал сумбура какого-то
9 GenV
 
20.02.12
11:36
(0) У тебя родитель родителя тоже должен переноситься? Если да, то как передаешь его значение. Пока только у тебя передается первый родитель ...
10 zippygrill
 
20.02.12
11:51
(9) а вот с этим не знаю. можно подробнее?
11 zippygrill
 
20.02.12
11:51
родитель тоже хотел-бы перенести.
12 GenV
 
20.02.12
11:57
(10) У тебя в ПКО контрагенты у родителя стоит галка "Из вх. данных" и назначено правило ПКС "Контрагенты". Как думаешь что произойдет когда будет выполняться выгрузка родителя контрагента, а в правиле контрагенты для родителя не будет переданного как в (0) родителя в входящих данных?
(11) Либо дописывай заполнение ИсходящиеДанные в родителе или создай и назначь для родителя другое правило, где родитель конвертируется обычным образом.
13 zippygrill
 
20.02.12
12:00
(12) я думаю прописать ПКС Родитель в ПередВыгрузкой мою Структуру(только ЭтоГруппа,Наименование,Родитель)?
14 Naumov
 
20.02.12
12:02
А если выгрузка контрагента инициализируется не из выгрузки документа, а договора, например, что у тебя попытается получить обработчик?
15 zippygrill
 
20.02.12
12:04
(14) кроме документа как источник данных не может быть в моем случае.
16 GenV
 
20.02.12
12:09
(13) Не запрещаю ) Главное в "ИсходящиеДанные" пиши.
ЗЫ Самый универсальный способ - снять галку из вх. данных, а в нужных свойствах в ПередВыгрузкой проверять равно ли ВходящиеДанные структуре и есть ли у этой структуры нужное свойство и если есть заменять им значение.
17 zippygrill
 
20.02.12
12:36
(16)
Если ВходящиеДанные <> Неопределено Тогда
   Если Не ВходящиеДанные.Свойство(ПКС.Приемник) Тогда
       Отказ = Истина;
   Иначе
       Значение = ВходящиеДанные[ПКС.Приемник];
   КонецЕсли;
Иначе
   Отказ = Истина;
КонецЕсли;

как в штатных правилах :)?
18 GenV
 
20.02.12
13:18
(17) Нет. Тут у тебя свойство не будет выгружаться совсем, если оно не задано в входящих данных. Примерно так:

Если ВходящиеДанные <> Неопределено Тогда
   Если ВходящиеДанные.Свойство(ПКС.Приемник) Тогда
       Значение = ВходящиеДанные[ПКС.Приемник];
   КонецЕсли;
КонецЕсли;
19 zippygrill
 
20.02.12
13:35
А еще у меня что-то стало возникать ошибку при повторной загрузки данных(в правиле сказано чтобы замещать существуюший объект) именно документ. Передача мутабельного значения на сервере.
20 zippygrill
 
20.02.12
13:53
апну.
21 zippygrill
 
20.02.12
14:01
записать-то не дает второй раз :):)
22 GenV
 
20.02.12
14:07
(21) У тебя в Параметры.мДокументов что? Не документ-объект?
23 GenV
 
20.02.12
14:12
22+ сорри не туда, это при выгрузке.
24 zippygrill
 
20.02.12
14:20
(23) в Параметры.мДокументов тип элемента = ДокументСсылка.
25 GenV
 
20.02.12
14:27
(24) Грузишь в обычное или управляемое приложение? Раньше, к примеру, такая ошибка была в обычном приложении, если в одном из обработчиков документа неправильно передавались данные содержащие ДокументОбъект.
26 zippygrill
 
20.02.12
14:32
эээээ гружу в режиме обычное приложение. А вот в событие ПослеЗагрузки присвайваю пару значении.
27 GenV
 
20.02.12
14:37
(26) Если без этого обработчика грузится нормально, то нужно смотреть его код.
28 zippygrill
 
20.02.12
14:46
(27) без него тоже самое.
29 GenV
 
20.02.12
14:49
(28) Значит проверяй на каком этапе выпадает - в КД или в документе. Может в одном из обработчиков документа проблема. Вроде тебе номер строки ошибки должен показаться.
30 zippygrill
 
20.02.12
15:02
(29) да это уже в документе при записи:

Ошибка записи объекта
   ТипОбъекта             =  Поступление товаров
   Объект                 =  Поступление товаров 00000000044 от 07.02.2012 15:19:37
   ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ПередЗаписью': {ОбщийМодуль.ПрефиксацияОбъектовСобытия.Модуль(215)}: Ошибка при вызове метода контекста (ДатаИлиОрганизацияОбъектаИзменена): Попытка передачи с клиента на сервер мутабельного значения 2-го параметра метода ДатаИлиОрганизацияОбъектаИзменена ().
   ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4782)
   КодСообщения           =  26

На строке 4782 вызывается Объект.Записать()
31 zippygrill
 
20.02.12
15:04
и похоже у меня тут тип объект а не ссылка.
32 Naumov
 
20.02.12
15:11
(15) Ну я не знаю что у тебя за конфигурации, но Если есть договор, то его поле Владелец тоже как-то должно выгружаться, а это будет контрагент.
33 zippygrill
 
20.02.12
15:16
(32) в Рознице 2 нету договоров с контрагентами. только эквайринговые
34 Franchiser
 
20.02.12
15:21
(0) СтрокаИменСвойствПоиска = "Родитель, ЭтоГруппа, ИНН, Наименование";

С каких пор у родителя есть ИНН?
35 GenV
 
20.02.12
15:24
(33) Если в рознице такой код:
ПрефиксацияОбъектов.ДатаИлиОрганизацияОбъектаИзменена(Объект.Ссылка, Объект.Метаданные(), Объект.Дата, Объект.Организация)

то советую добавить в начало (как в БСП и УТ 11):

   Если Объект.ОбменДанными.Загрузка Тогда
       Возврат;
   ИначеЕсли Объект.ЭтоНовый() Тогда
       Возврат;
   КонецЕсли;
36 Franchiser
 
20.02.12
15:25
И вообще какого искать по ИНН, когда он не заполнен
37 zippygrill
 
20.02.12
15:26
(34) я полностю согласен с тобой. Но это так написано в штатных правил 1С :)
(35) да ести я и пытаюсь отладчк попасть в ней :)
38 GenV
 
20.02.12
15:29
35+ я имел ввиду обработчик ОбщийМодуль.ПрефиксацияОбъектовСобытия.ПроверитьНомерОбъектаПоДатеИОрганизации(Объект)
(37) В твоем случае, это почти гарантированная ошибка во втором параметре. В БСП и УТ 11 вызов изменен на ПрефиксацияОбъектов.ДатаИлиОрганизацияОбъектаИзменена(Объект.Ссылка, Объект.Дата, Объект.Организация, Объект.Метаданные().ПолноеИмя()) где передачи метаданных нет
39 zippygrill
 
20.02.12
15:29
(38)я понял
фигеть а, в рознице ести проверка толька на Новый в УТ еще на ОбменДанными.Загрузка()
с чего это связанно?
40 GenV
 
20.02.12
15:34
(39) Вообще странно что этой проверки не было. Это считается нормой - при загрузке не вызывать обработчики оперирующие данными объекта. Считается, что необходимые все данные будут загружаться.
41 Franchiser
 
20.02.12
15:36
(40) а разве галка при загрузке ОбменДанными.Загрузка = Истина на это не влияет?
42 zippygrill
 
20.02.12
15:37
(40) эх спасибо огромное.
43 GenV
 
20.02.12
15:38
(41) Только если есть её проверка
44 Franchiser
 
20.02.12
15:46
(43) смотрю бухгалтерию корп там нет ОбщийМодуль.ПрефиксацияОбъектовСобытия
45 GenV
 
20.02.12
15:49
(44) А подумать? Чем отличается БП КОРП от БСП, УТ 11, УНФ, Розница 2?
46 Franchiser
 
20.02.12
15:51
(45) сорри прочитал БСП как БП
Программист всегда исправляет последнюю ошибку.