Редактирование правил УТ 10.3 - БП 3.0 (из оприходования делаем выпуск)

1. AlexeyPapanov 469 12.04.15 11:08 Сейчас в теме
Всем привет!
Задача из документа "Оприходование товаров" (УТ) сделать "Отчет производства за смену" (БП).
Я открыл в КД стандартные правила конвертации из папки шаблонов БП.
Отредактировал правила, сопоставил свойства объектов.
При обмене получаю ошибку.
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(3702)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
    ИмяПКО                 =  ОприходованиеТоваров
    ТипОбъекта             =  Отчет производства за смену
    Объект                 =  Отчет производства за смену ЦБ000000013 от 12.04.2015 10:13:07
    Обработчик             =  ПослеЗагрузкиОбъекта
    ОписаниеОшибки         =  Поле объекта не обнаружено (Товары)
    ПозицияМодуля          =  (1)
    КСообщенияОбОшибках    =  21
        ВызватьИсключение СтрокаСообщенияОбОшибке;
Показать


У ОтчетаОПроизводствеЗаСмену нет табличной части "Товары", но есть аналогичная - "Продукция", с которой я и делал сопоставление.

Подскажите куда еще посмотреть?

см. скриншоты
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Lovish 14 13.04.15 14:27 Сейчас в теме
(1) El_Loco, дабы не гадать, попробуйте поставить в базе-приемнике "Остановка по ошибке" - и посмотрите, где остановится. Если на выполнении обработчика - как раз и узнаете, какой там текст. Потому что если бы ругалось на глобальный обработчик, то в описании ошибки стояло бы что-то вроде "Обработчик = ПослеЗагрузкиОбъекта (глобальный)".
6. AlexeyPapanov 469 13.04.15 18:15 Сейчас в теме
(4) Lovish, а где включить "остановку по ошибке"? это в самой БП 3.0 или в правилах где-то?
я не нашел(
7. Caspersky 13.04.15 18:26 Сейчас в теме
(6) El_Loco, Lovish имеет ввиду в "остановка по ошибке" в конфигураторе при отладке, а не в самой обработке загрузки.
Вообще, Диво-дивное) судя по скринам... с субботы любуюсь)
8. AlexeyPapanov 469 13.04.15 21:55 Сейчас в теме
(7) Caspersky, а чего со скринами не так?)
я пытался изложить доступно свою проблему, чтобы проще было ответить тем, кто знает.
в обменах я полный ноль. да и не только в них ;)
9. Caspersky 13.04.15 22:28 Сейчас в теме
(8) Ел_Лосо, Со скринами все ОК, вообщем, исчерпывающее описание проблемы))
Это я не про скрины, а про проблему ...
А попробуйте ка, посмотреть файл обмена, в том же notepade++, пошукайте там вхождение "Товары".
Проверьте также алгоритмы: ЗаполнитьРеквизитыПоУмолчанию., у Вас на скрине в (3) посте.
Может прояснится что?
2. dubrovin 12.04.15 21:19 Сейчас в теме
Посмотрите в обработчик ПослеЗагрузкиОбъекта самой конвертации
3. AlexeyPapanov 469 13.04.15 09:18 Сейчас в теме
(2) dubrovin, вот такое там, если я вас правильно понял.

в коде алгоритма не нашел ничего по таб.часть...

//подставляет обязательные значения
МетаданныеДокумента = Объект.Метаданные();
Если Метаданные.Документы.Содержит(МетаданныеДокумента) Тогда
    
    ОбъектСодержитРеквизитОрганизация      = ОбщегоНазначения.ЕстьРеквизитОбъекта("Организация", МетаданныеДокумента);
    ОбъектСодержитРеквизитСклад            = ОбщегоНазначения.ЕстьРеквизитОбъекта("Склад", МетаданныеДокумента);
    ОбъектСодержитПодразделениеОрганизации = ОбщегоНазначения.ЕстьРеквизитОбъекта("ПодразделениеОрганизации", МетаданныеДокумента);
    
    Если ОбъектСодержитРеквизитОрганизация И НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
        Объект.Организация = Параметры.ОсновнаяОрганизация;
    КонецЕсли;
    
    Если ОбъектСодержитРеквизитСклад Тогда
        Если (НЕ ЗначениеЗаполнено(Объект.Склад)) Тогда
            Объект.Склад = Параметры.СкладДляОбменаДаннымиСУТ;
        КонецЕсли;
    КонецЕсли;
    
    // Заполнение реквизита ПодразделениеОрганизации
    Если ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеСРасчетногоСчета")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеНаРасчетныйСчет")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
        Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация Тогда
            
            Если ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеСРасчетногоСчета") Тогда
                // Заполнение подразделения организации
                Если ЗначениеЗаполнено(Объект.Организация)
                    И ЗначениеЗаполнено(Объект.СчетОрганизации)
                    Тогда
                    СвойстваСчета = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
                                        Объект.СчетОрганизации,
                                        "ПодразделениеОрганизации"
                    );
                    Объект.ПодразделениеОрганизации = СвойстваСчета.ПодразделениеОрганизации;
                КонецЕсли;
                
                Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСписаниеДенежныхСредств.ОплатаПоставщику")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСписаниеДенежныхСредств.ВозвратПокупателю")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСписаниеДенежныхСредств.ПрочиеРасчетыСКонтрагентами")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСписаниеДенежныхСредств.РасчетыПоКредитамИЗаймам")
                    Тогда
                    Объект.ПодразделениеДт = Неопределено;
                // {ОбособленныеПодразделения
                Иначе
                    Объект.ПодразделениеДт = Объект.ПодразделениеОрганизации;
                // }ОбособленныеПодразделения
                КонецЕсли;
            ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеНаРасчетныйСчет") Тогда
                // Заполнение подразделения организации
                Если ЗначениеЗаполнено(Объект.Организация)
                    И ЗначениеЗаполнено(Объект.СчетОрганизации)
                    Тогда
                    СвойстваСчета = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
                                        Объект.СчетОрганизации,
                                        "ПодразделениеОрганизации"
                    );
                    Объект.ПодразделениеОрганизации = СвойстваСчета.ПодразделениеОрганизации;
                КонецЕсли;
                
                Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ОплатаПокупателя")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ВозвратОтПоставщика")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ПрочиеРасчетыСКонтрагентами")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеДенежныхСредств.РасчетыПоКредитамИЗаймам")
                    Тогда
                    Объект.ПодразделениеКт = Неопределено;
                // {ОбособленныеПодразделения
                Иначе
                    Объект.ПодразделениеКт = Объект.ПодразделениеОрганизации;
                // }ОбособленныеПодразделения
                КонецЕсли;
            ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер") Тогда
                ОсновноеПодразделение = ОбщегоНазначенияБПВызовСервера.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации");
                Если ОсновноеПодразделение.Владелец = Объект.Организация Тогда
                    Объект.ПодразделениеОрганизации = ОсновноеПодразделение;
                Иначе
                    Объект.ПодразделениеОрганизации = Неопределено;
                КонецЕсли;
                
                Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.ОплатаПокупателя")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.ВозвратОтПоставщика")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.ВозвратОтПодотчетногоЛица")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.ПолучениеНаличныхВБанке")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.РасчетыПоКредитамИЗаймам")
                    Тогда
                    Объект.ПодразделениеКт = Неопределено;
                // {ОбособленныеПодразделения
                Иначе
                    Объект.ПодразделениеКт = ?(ОбъектСодержитПодразделениеОрганизации, Объект.ПодразделениеОрганизации, Неопределено);
                // }ОбособленныеПодразделения
                КонецЕсли;
            ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
                ОсновноеПодразделение = ОбщегоНазначенияБПВызовСервера.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации");
                Если ОсновноеПодразделение.Владелец = Объект.Организация Тогда
                    Объект.ПодразделениеОрганизации = ОсновноеПодразделение;
                Иначе
                    Объект.ПодразделениеОрганизации = Неопределено;
                КонецЕсли;
                
                Если (Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ОплатаПоставщику")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВозвратПокупателю")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВыдачаПодотчетномуЛицу")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.РасчетыПоКредитамИЗаймам")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВзносНаличнымиВБанк")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВыплатаДепонентов")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВыплатаЗаработнойПлатыПоВедомостям")
                    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВыплатаЗаработнойПлатыРаботнику"))
                Тогда
                    Объект.ПодразделениеДт = Неопределено;
                // {ОбособленныеПодразделения
                Иначе
                    Объект.ПодразделениеДт = Объект.ПодразделениеОрганизации;
                // }ОбособленныеПодразделения
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.АвансовыйОтчет")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетКомиссионераОПродажах")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетКомитентуОПродажах")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.КорректировкаДолга") Тогда
        //Выполнить процедуру ЗаполнениеДокументов.ПриИзмененииЗначенияОрганизации(ЭтотОбъект, глЗначениеПеременной("глТекущийПользователь"));
        Если ОбъектСодержитРеквизитОрганизация И ОбъектСодержитПодразделениеОрганизации
            И ЗначениеЗаполнено(Объект.Организация) Тогда
            ПодразделениеПоУмолчанию = ОбщегоНазначенияБПВызовСервера.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации");
            // Если ПодразделениеОрганизации не заполнено.
            Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация Тогда
                Если НЕ ЗначениеЗаполнено(Объект.ПодразделениеОрганизации) Тогда
                    // Если ПодразделениеПоУмолчанию соответствует выбранной организации, подставляем его.
                    Если ПодразделениеПоУмолчанию.Владелец = Объект.Организация Тогда
                        Объект.ПодразделениеОрганизации = ПодразделениеПоУмолчанию;
                    КонецЕсли;
                Иначе // Если ПодразделениеОрганизации заполнено.
                    // Если ПодразделениеОрганизации не соответствует выбранной организации.
                    Если НЕ Объект.ПодразделениеОрганизации.Владелец = Объект.Организация Тогда
                        // Если ПодразделениеПоУмолчанию соответствует выбранной организации, подставляем его.
                        Если ПодразделениеПоУмолчанию.Владелец = Объект.Организация Тогда
                            Объект.ПодразделениеОрганизации = ПодразделениеПоУмолчанию;
                        Иначе // Выбрана не основная организация. ПодразделениеОрганизации нужно очистить.
                            Объект.ПодразделениеОрганизации = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли
        КонецЕсли;
    ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ГТДИмпорт") Тогда
        // Выполнить процедуру ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект);
        Если ОбъектСодержитРеквизитОрганизация
            И ЗначениеЗаполнено(Объект.Организация)
            И ОбъектСодержитПодразделениеОрганизации
            И (НЕ ЗначениеЗаполнено(Объект.ПодразделениеОрганизации)) Тогда
            
            ПодразделениеОрганизации = ОбщегоНазначенияБПВызовСервера.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации");
            
            Если ЗначениеЗаполнено(ПодразделениеОрганизации) И ПодразделениеОрганизации.Владелец = Объект.Организация Тогда
                Объект.ПодразделениеОрганизации = ПодразделениеОрганизации;
            КонецЕсли;
        КонецЕсли;
    ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ВозвратТоваровОтПокупателя")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ВозвратТоваровПоставщику")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОприходованиеТоваров")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетОРозничныхПродажах")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеТоваровУслуг")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.РеализацияТоваровУслуг")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеТоваров")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ТребованиеНакладная")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.КомплектацияНоменклатуры")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.СчетНаОплатуПокупателю")
        ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПеремещениеТоваров") Тогда
        
        Если ТипЗнч(Объект) = Тип("ДокументОбъект.ПеремещениеТоваров") Тогда
            Если ОбщегоНазначения.ЕстьРеквизитОбъекта("ПодразделениеОтправитель", МетаданныеДокумента) Тогда
                Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.СкладОтправитель <> Объект.СкладОтправитель Тогда
                    Объект.ПодразделениеОтправитель = ОбщегоНазначенияБПВызовСервера.ПолучитьПодразделение(Объект.Организация, Объект.СкладОтправитель);
                КонецЕсли;
            КонецЕсли;
            Если ОбщегоНазначения.ЕстьРеквизитОбъекта("ПодразделениеПолучатель", МетаданныеДокумента) Тогда
                Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.СкладПолучатель <> Объект.СкладПолучатель Тогда
                    Объект.ПодразделениеПолучатель = ОбщегоНазначенияБПВызовСервера.ПолучитьПодразделение(Объект.Организация, Объект.СкладПолучатель);
                КонецЕсли;
            КонецЕсли;
        Иначе
            Если ОбъектСодержитРеквизитОрганизация
                И ОбъектСодержитРеквизитСклад
                И ОбъектСодержитПодразделениеОрганизации
                Тогда
                Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.Склад <> Объект.Склад Тогда
                    Объект.ПодразделениеОрганизации = ОбщегоНазначенияБПВызовСервера.ПолучитьПодразделение(Объект.Организация, Объект.Склад);
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
КонецЕсли;
Показать
5. kasper076 112 13.04.15 14:52 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот