Добрый день!
Кто-то обращался к элементам РасшифровкаПлатежа из ПлатежноеПоручениеИсходящее.
Делаю платежное поручение исходящее, на основании счета оплаты поставщику,
1. в структуру подчинённости документа, платежное поручение заносится после счета.
Пытаюсь в конец процедуры проведения платежного поручения добавить движения по доп. регистру.
Само проведение отрабатывает, все нормально, ничто не ругается, все проводится.
Но, захожу в отладчике проверить свой код, и вижу:
1. в отладчике реквизит табличной части "расшифровка платежа" "сделка", почему-то не определён (хотя в структуру подчинённости документа, платежное поручение заносится после счета)
2. в отладчике со строки "если РасшифровкаПлатежа.Количество()>0 тогда" уходит в бесконечный цикл - виснет и не отвечает , хотя показывает в "Табло" что "РасшифровкаПлатежа.Количество()" =1 и сделка почему-то не определён.
В результате после точки останова на "если РасшифровкаПлатежа.Количество()>0 тогда" виснет полностью в процессе отладки , но без процесса отладки никаких ошибок не выдает и все проводится без ошибок.
Задача
"достать свойство "сделка" документа ПлатежноеПоручениеИсходящее, через данную ссылку обратится к "счету поставщика", и вернуть из табличной части Счета Поставщика поле Номенклатура, в движение данного регистра" Но вылетает в процессе отладки, при этом ошибок без процесса отладки не даёт.
Прошу помощи, что неправильно в приведенном коде, чтобы не вылетало:
Структура = Новый Структура("Сделка", NULL);
Движения.Маржа_Объектов.Очистить();
если РасшифровкаПлатежа.Количество()>0 тогда
Для Каждого ТекСтрокапроводки Из РасшифровкаПлатежа Цикл
если (ПустаяСтрока(ЭтотОбъект.Объект)=ложь) тогда
ЗаполнитьЗначенияСвойств(Структура, Объект);
Если Структура.Сделка <> NULL тогда
Объект = ТекСтрокапроводки.Сделка.ПолучитьОбъект();
если ТипЗнч(ТекСтрокапроводки.Сделка) = Тип("ДокументСсылка.СчетНаОплатуПоставщика") тогда
если ((Объект.Товары.Количество()>0)и ((ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) или (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы))) тогда
Для Каждого ТекСтрокапроводки2 Из Объект.Товары Цикл
/////
Движение = Движения.Маржа_Объектов.Добавить();
Движение.Период=Этотобъект.Дата;
Движение.Регистратор = Ссылка;
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Вид_документа=Справочники.Вид_документа.НайтиПоНаименованию("ПлатежноеПоручениеИсходящее");
если (ПустаяСтрока(ТекСтрокапроводки.Тип_номенклатуры)=ложь) тогда
если (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
иначеесли (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
конецесли;
иначе
если (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
иначеесли (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
конецесли;
конецесли;
если (ПустаяСтрока(ТекСтрокапроводки.ДДС)=ложь) тогда
Движение.ДДС_расхода=ТекСтрокапроводки.ДДС;
иначе Движение.ДДС_расхода=ЭтотОбъект.ДДС;
конецесли;
если (ПустаяСтрока(ТекСтрокапроводки.Объект)=ложь) тогда
Движение.Объект=ТекСтрокапроводки.Объект;
иначе Движение.Объект=ЭтотОбъект.Объект;
конецесли;
если (ПустаяСтрока(ТекСтрокапроводки.Участок)=ложь) тогда
Движение.Участок=ТекСтрокапроводки.Участок;
иначе Движение.Участок=ЭтотОбъект.Участок;
конецесли;
Движение.Номенклатура=ТекСтрокапроводки2.Номенклатура;
Движение.НоменклатурныеГруппы= Справочники.Номенклатура.НайтиПоНаименованию(ТекСтрокапроводки2.Номенклатура).Родитель;
Движение.Организация= Организация;
Движение.Контрагент_док= ЭтотОбъект.Контрагент;
Движение.ТипДвиж =Перечисления.ТипДвиж.Оплачено;
////
конеццикла;
конецесли;
если ((Объект.Услуги.Количество()>0) и ((ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) или (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги))) тогда
Для Каждого ТекСтрокапроводки2 Из Объект.Услуги Цикл
/////
Движение = Движения.Маржа_Объектов.Добавить();
Движение.Период=Этотобъект.Дата;
Движение.Регистратор = Ссылка;
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Вид_документа=Справочники.Вид_документа.НайтиПоНаименованию("ПлатежноеПоручениеИсходящее");
если (ПустаяСтрока(ТекСтрокапроводки.Тип_номенклатуры)=ложь) тогда
если (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
иначеесли (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
конецесли;
иначе
если (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
иначеесли (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
конецесли;
конецесли;
если (ПустаяСтрока(ТекСтрокапроводки.ДДС)=ложь) тогда
Движение.ДДС_расхода=ТекСтрокапроводки.ДДС;
иначе Движение.ДДС_расхода=ЭтотОбъект.ДДС;
конецесли;
если (ПустаяСтрока(ТекСтрокапроводки.Объект)=ложь) тогда
Движение.Объект=ТекСтрокапроводки.Объект;
иначе Движение.Объект=ЭтотОбъект.Объект;
конецесли;
если (ПустаяСтрока(ТекСтрокапроводки.Участок)=ложь) тогда
Движение.Участок=ТекСтрокапроводки.Участок;
иначе Движение.Участок=ЭтотОбъект.Участок;
конецесли;
Движение.Номенклатура=ТекСтрокапроводки2.Номенклатура;
Движение.НоменклатурныеГруппы= Справочники.Номенклатура.НайтиПоНаименованию(ТекСтрокапроводки2.Номенклатура).Родитель;
Движение.Организация= Организация;
Движение.Контрагент_док= ЭтотОбъект.Контрагент;
Движение.ТипДвиж =Перечисления.ТипДвиж.Оплачено;
конеццикла;
конецесли;
иначе
/////
Движение = Движения.Маржа_Объектов.Добавить();
Движение.Период=Этотобъект.Дата;
Движение.Регистратор = Ссылка;
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Вид_документа=Справочники.Вид_документа.НайтиПоНаименованию("ПлатежноеПоручениеИсходящее");
если (ПустаяСтрока(ТекСтрокапроводки.Тип_номенклатуры)=ложь) тогда
если (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
иначеесли (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
конецесли;
иначе
если (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
иначеесли (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
конецесли;
конецесли;
если (ПустаяСтрока(ТекСтрокапроводки.ДДС)=ложь) тогда
Движение.ДДС_расхода=ТекСтрокапроводки.ДДС;
иначе Движение.ДДС_расхода=ЭтотОбъект.ДДС;
конецесли;
если (ПустаяСтрока(ТекСтрокапроводки.Объект)=ложь) тогда
Движение.Объект=ТекСтрокапроводки.Объект;
иначе Движение.Объект=ЭтотОбъект.Объект;
конецесли;
если (ПустаяСтрока(ТекСтрокапроводки.Участок)=ложь) тогда
Движение.Участок=ТекСтрокапроводки.Участок;
иначе Движение.Участок=ЭтотОбъект.Участок;
конецесли;
Движение.Организация= Организация;
Движение.Контрагент_док= ЭтотОбъект.Контрагент;
Движение.ТипДвиж =Перечисления.ТипДвиж.Оплачено;
конецесли;
иначе
/////
Движение = Движения.Маржа_Объектов.Добавить();
Движение.Период=Этотобъект.Дата;
Движение.Регистратор = Ссылка;
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Вид_документа=Справочники.Вид_документа.НайтиПоНаименованию("ПлатежноеПоручениеИсходящее");
если (ПустаяСтрока(ТекСтрокапроводки.Тип_номенклатуры)=ложь) тогда
если (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
иначеесли (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
конецесли;
иначе
если (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
иначеесли (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
конецесли;
конецесли;
если (ПустаяСтрока(ТекСтрокапроводки.ДДС)=ложь) тогда
Движение.ДДС_расхода=ТекСтрокапроводки.ДДС;
иначе Движение.ДДС_расхода=ЭтотОбъект.ДДС;
конецесли;
если (ПустаяСтрока(ТекСтрокапроводки.Объект)=ложь) тогда
Движение.Объект=ТекСтрокапроводки.Объект;
иначе Движение.Объект=ЭтотОбъект.Объект;
конецесли;
если (ПустаяСтрока(ТекСтрокапроводки.Участок)=ложь) тогда
Движение.Участок=ТекСтрокапроводки.Участок;
иначе Движение.Участок=ЭтотОбъект.Участок;
конецесли;
Движение.Организация= Организация;
Движение.Контрагент_док= ЭтотОбъект.Контрагент;
Движение.ТипДвиж =Перечисления.ТипДвиж.Оплачено;
конецесли;
конецесли;
КонецЦикла;
Иначе
если (ПустаяСтрока(ЭтотОбъект.Объект)=ложь) тогда
Движение = Движения.Маржа_Объектов.Добавить();
Движение.Период=Этотобъект.Дата;
Движение.Регистратор = Ссылка;
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Вид_документа=Справочники.Вид_документа.НайтиПоНаименованию("ПлатежноеПоручениеИсходящее");
если (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
Движение.Сумма= ЭтотОбъект.СуммаДокумента;
Движение.Сумма_опл= ЭтотОбъект.СуммаДокумента;
иначеесли (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
Движение.Сумма_опл= ЭтотОбъект.СуммаДокумента;
конецесли;
Движение.ДДС_расхода=ЭтотОбъект.ДДС;
Движение.Контрагент_док= ЭтотОбъект.Контрагент;
Движение.Объект=ЭтотОбъект.Объект;
Движение.Участок=ЭтотОбъект.Участок;
Движение.Организация= Организация;
Движение.ТипДвиж =Перечисления.ТипДвиж.Оплачено;
конецесли;
конецесли;
Движения.Маржа_Объектов.Записать();
Прошу помощи, что неправильно в приведенном коде, чтобы не вылетало.
Заранее спасибо.