Имя: Пароль:
1C
1С v8
Правила обмена данными
,
0 devochka_1c
 
29.08.12
17:10
Здравствуйте!
Подскажите, пожалуйста, как в правилах обмена ограничить выгрузку документа в зависимости от склада: есть приходный кассовый ордер, документом-основанием является заказ покупателя. вот в зависимости от указанного склада в док. заказ покупателя ПКО должен выгружаться или не должен выгружаться.

Пишу код
Если ЗначениеЗаполнено (Параметры.Склад) Тогда
   Если Источник.ДокументОснование.СкладГруппа <> Параметры.Склад  Тогда
       Отказ = Истина;    
   КонецЕсли;
КонецЕсли;
1 Конфигуратор1с
 
29.08.12
17:12
(0)а проблема в чем?
2 Rie
 
29.08.12
17:13
(0) И?
(Кстати, документ-основание у ПКО может и отсутствовать. Или быть не заказом покупателя).
3 devochka_1c
 
29.08.12
17:14
(1) пишет ошибку
Ошибка в обработчике события ПередВыгрузкойОбъекта
   ПКО                    =  ПриходныйКассовыйОрдер  (Документ: Приходный кассовый ордер)
   Объект                 =  Приходный кассовый ордер БК000001684 от 24.07.2012 17:56:38  (Приходный кассовый ордер)
   Обработчик             =  ПередВыгрузкойОбъекта
   ОписаниеОшибки         =  Значение не является значением объектного типа (СкладГруппа)
   ПозицияМодуля          =  (2)
   КодСообщения           =  41

Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1562)}: Ошибка в обработчике события ПередВыгрузкойОбъекта
   ПКО                    =  ПриходныйКассовыйОрдер  (Документ: Приходный кассовый ордер)
   Объект                 =  Приходный кассовый ордер БК000001684 от 24.07.2012 17:56:38  (Приходный кассовый ордер)
   Обработчик             =  ПередВыгрузкойОбъекта
   ОписаниеОшибки         =  Значение не является значением объектного типа (СкладГруппа)
   ПозицияМодуля          =  (2)
   КодСообщения           =  41
4 devochka_1c
 
29.08.12
17:15
(2) у всех док основание заказ покупателя
5 Конфигуратор1с
 
29.08.12
17:19
Если ЗначениеЗаполнено (Параметры.Склад) Тогда
Если ЗначениеЗаполнено(Источник.ДокументОснование) тогда    
Если Источник.ДокументОснование.СкладГруппа <> Параметры.Склад  Тогда
       Отказ = Истина;    
   КонецЕсли;
КонецЕсли;
КонецЕсли;
6 Конфигуратор1с
 
29.08.12
17:22
ну а вообще, что бы красиво было, то

Если ЗначениеЗаполнено (Параметры.Склад) Тогда
Если ЗначениеЗаполнено(Источник.ДокументОснование) тогда    
Если Не Источник.ДокументОснование.Метаданные().Реквизиты.Найти("СкладГруппа") = Неопределено тогда
Если Источник.ДокументОснование.СкладГруппа <> Параметры.Склад  Тогда
       Отказ = Истина;    
   КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
7 Rie
 
29.08.12
17:26
(4) Судя по (3) - не у всех.
8 Rie
 
29.08.12
17:26
(6) Или обернуть в Попытка
9 devochka_1c
 
29.08.12
17:32
Спасибо!
10 Конфигуратор1с
 
29.08.12
17:33
(8) да у меня как то с 7кеи сформировался предрассудок, что попытка это крайний случай - ситуации которые мы не можем предугадать. Хотя через попытку кода меньше)))
11 gr0ck
 
29.08.12
17:34
А Тип("Источник.ДокументОснование") = Тип("Документ заказ")
12 gr0ck
 
29.08.12
17:34
Наверное лучше чем Источник.ДокументОснование.Метаданные().Реквизиты.Найти("СкладГруппа"
13 Конфигуратор1с
 
29.08.12
17:40
(12)чем лучше? вот если ей понадобится еще один документ, то она будет туда дописывать каждый раз код?
14 Конфигуратор1с
 
29.08.12
17:41
(11) Если Типзнч(Источник.ДокументОснование) = Тип("Документзаказ") или Типзнч(Источник.ДокументОснование) = Тип("ДокументСчет") или .......