Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 ноя 2024, 08:18

обращение к элементам РасшифровкаПлатежа ПлатежноеПоручениеИсходящее УПП 8.2

Автор Св Ч, 06 янв 2019, 23:34

0 Пользователей и 1 гость просматривают эту тему.

Св Ч

Добрый день!
Кто-то обращался к элементам РасшифровкаПлатежа из ПлатежноеПоручениеИсходящее.
Делаю платежное поручение исходящее, на основании счета оплаты поставщику,
1. в структуру подчинённости документа, платежное поручение заносится после счета.
Пытаюсь в конец процедуры проведения платежного поручения добавить движения по доп. регистру.
Само проведение отрабатывает, все нормально, ничто не ругается, все проводится.
Но, захожу в отладчике проверить свой код, и вижу:
1. в отладчике реквизит табличной части "расшифровка платежа" "сделка", почему-то не определён (хотя в структуру подчинённости документа, платежное поручение заносится после счета)
2. в отладчике со строки "если РасшифровкаПлатежа.Количество()>0 тогда" уходит в бесконечный цикл - виснет и не отвечает , хотя показывает в "Табло" что "РасшифровкаПлатежа.Количество()" =1 и сделка почему-то не определён.
В результате после точки останова на "если РасшифровкаПлатежа.Количество()>0 тогда" виснет полностью в процессе отладки , но без процесса отладки никаких ошибок не выдает и все проводится без ошибок.

Задача "достать свойство "сделка" документа ПлатежноеПоручениеИсходящее, через данную ссылку обратится к "счету поставщика", и вернуть из табличной части Счета Поставщика поле Номенклатура, в движение данного регистра" Но вылетает в процессе отладки, при этом ошибок без процесса отладки не даёт.
Прошу помощи, что неправильно в приведенном коде, чтобы не вылетало:

Структура = Новый Структура("Сделка", NULL);

Движения.Маржа_Объектов.Очистить();
если РасшифровкаПлатежа.Количество()>0 тогда
   Для Каждого ТекСтрокапроводки Из РасшифровкаПлатежа Цикл
        если (ПустаяСтрока(ЭтотОбъект.Объект)=ложь) тогда
           
   
                ЗаполнитьЗначенияСвойств(Структура, Объект);
               
  Если Структура.Сделка <> NULL тогда
   Объект =  ТекСтрокапроводки.Сделка.ПолучитьОбъект();

   если  ТипЗнч(ТекСтрокапроводки.Сделка) = Тип("ДокументСсылка.СчетНаОплатуПоставщика") тогда
    если ((Объект.Товары.Количество()>0)и ((ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) или (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы))) тогда
Для Каждого ТекСтрокапроводки2 Из Объект.Товары Цикл


/////
  Движение = Движения.Маржа_Объектов.Добавить();
                          Движение.Период=Этотобъект.Дата;
                                  Движение.Регистратор = Ссылка;
                                  Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
                                  Движение.Вид_документа=Справочники.Вид_документа.НайтиПоНаименованию("ПлатежноеПоручениеИсходящее");
   
 
   
                      если (ПустаяСтрока(ТекСтрокапроводки.Тип_номенклатуры)=ложь) тогда
   
                    если (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
                                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
                      Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
                                      Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
                        иначеесли (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
                      Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
                                конецесли;
   
                     иначе
                    если (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
                                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
                      Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
                                      Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
                       иначеесли (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
                      Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
                               конецесли;

                     конецесли;   
   
                      если (ПустаяСтрока(ТекСтрокапроводки.ДДС)=ложь) тогда 
                              Движение.ДДС_расхода=ТекСтрокапроводки.ДДС;
                      иначе   Движение.ДДС_расхода=ЭтотОбъект.ДДС;
                          конецесли;   
                      если (ПустаяСтрока(ТекСтрокапроводки.Объект)=ложь) тогда 
                             Движение.Объект=ТекСтрокапроводки.Объект;
                      иначе  Движение.Объект=ЭтотОбъект.Объект;
                      конецесли;     
                      если (ПустаяСтрока(ТекСтрокапроводки.Участок)=ложь) тогда 
                                         Движение.Участок=ТекСтрокапроводки.Участок;
                      иначе  Движение.Участок=ЭтотОбъект.Участок;
                                конецесли;   
   
                      Движение.Номенклатура=ТекСтрокапроводки2.Номенклатура;
                      Движение.НоменклатурныеГруппы= Справочники.Номенклатура.НайтиПоНаименованию(ТекСтрокапроводки2.Номенклатура).Родитель;
   
   
                      Движение.Организация= Организация;
                      Движение.Контрагент_док= ЭтотОбъект.Контрагент;
                      Движение.ТипДвиж =Перечисления.ТипДвиж.Оплачено;

////
    конеццикла;
    конецесли;
    если ((Объект.Услуги.Количество()>0) и ((ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) или (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги))) тогда
Для Каждого ТекСтрокапроводки2 Из Объект.Услуги Цикл
    /////
  Движение = Движения.Маржа_Объектов.Добавить();
                          Движение.Период=Этотобъект.Дата;
                                  Движение.Регистратор = Ссылка;
                                  Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
                                  Движение.Вид_документа=Справочники.Вид_документа.НайтиПоНаименованию("ПлатежноеПоручениеИсходящее");
   
 
   
                      если (ПустаяСтрока(ТекСтрокапроводки.Тип_номенклатуры)=ложь) тогда
   
                    если (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
                                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
                      Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
                                      Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
                        иначеесли (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
                      Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
                                конецесли;
   
                     иначе
                    если (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
                                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
                      Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
                                      Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
                       иначеесли (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
                      Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
                               конецесли;

                     конецесли;   
   
                      если (ПустаяСтрока(ТекСтрокапроводки.ДДС)=ложь) тогда 
                              Движение.ДДС_расхода=ТекСтрокапроводки.ДДС;
                      иначе   Движение.ДДС_расхода=ЭтотОбъект.ДДС;
                          конецесли;   
                      если (ПустаяСтрока(ТекСтрокапроводки.Объект)=ложь) тогда 
                             Движение.Объект=ТекСтрокапроводки.Объект;
                      иначе  Движение.Объект=ЭтотОбъект.Объект;
                      конецесли;     
                      если (ПустаяСтрока(ТекСтрокапроводки.Участок)=ложь) тогда 
                                         Движение.Участок=ТекСтрокапроводки.Участок;
                      иначе  Движение.Участок=ЭтотОбъект.Участок;
                                конецесли;   
   
                     Движение.Номенклатура=ТекСтрокапроводки2.Номенклатура;
                     Движение.НоменклатурныеГруппы= Справочники.Номенклатура.НайтиПоНаименованию(ТекСтрокапроводки2.Номенклатура).Родитель;
   
   
                      Движение.Организация= Организация;
                      Движение.Контрагент_док= ЭтотОбъект.Контрагент;
                      Движение.ТипДвиж =Перечисления.ТипДвиж.Оплачено;

    конеццикла;
конецесли;



иначе
  /////
  Движение = Движения.Маржа_Объектов.Добавить();
                          Движение.Период=Этотобъект.Дата;
                                  Движение.Регистратор = Ссылка;
                                  Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
                                  Движение.Вид_документа=Справочники.Вид_документа.НайтиПоНаименованию("ПлатежноеПоручениеИсходящее");
   
 
   
                      если (ПустаяСтрока(ТекСтрокапроводки.Тип_номенклатуры)=ложь) тогда
   
                    если (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
                                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
                      Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
                                      Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
                        иначеесли (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
                      Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
                                конецесли;
   
                     иначе
                    если (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
                                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
                      Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
                                      Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
                       иначеесли (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
                      Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
                               конецесли;

                     конецесли;   
   
                      если (ПустаяСтрока(ТекСтрокапроводки.ДДС)=ложь) тогда 
                              Движение.ДДС_расхода=ТекСтрокапроводки.ДДС;
                      иначе   Движение.ДДС_расхода=ЭтотОбъект.ДДС;
                          конецесли;   
                      если (ПустаяСтрока(ТекСтрокапроводки.Объект)=ложь) тогда 
                             Движение.Объект=ТекСтрокапроводки.Объект;
                      иначе  Движение.Объект=ЭтотОбъект.Объект;
                      конецесли;     
                      если (ПустаяСтрока(ТекСтрокапроводки.Участок)=ложь) тогда 
                                         Движение.Участок=ТекСтрокапроводки.Участок;
                      иначе  Движение.Участок=ЭтотОбъект.Участок;
                                конецесли;   
   
                         
   
                      Движение.Организация= Организация;
                      Движение.Контрагент_док= ЭтотОбъект.Контрагент;
                      Движение.ТипДвиж =Перечисления.ТипДвиж.Оплачено;

  конецесли;
  иначе
    /////
  Движение = Движения.Маржа_Объектов.Добавить();
                          Движение.Период=Этотобъект.Дата;
                                  Движение.Регистратор = Ссылка;
                                  Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
                                  Движение.Вид_документа=Справочники.Вид_документа.НайтиПоНаименованию("ПлатежноеПоручениеИсходящее");
   
 
   
                      если (ПустаяСтрока(ТекСтрокапроводки.Тип_номенклатуры)=ложь) тогда
   
                    если (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
                                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
                      Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
                                      Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
                        иначеесли (ТекСтрокапроводки.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
                      Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
                                конецесли;
   
                     иначе
                    если (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
                                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
                      Движение.Сумма= ТекСтрокапроводки.СуммаПлатежа;
                                      Движение.Сумма_опл= ТекСтрокапроводки.СуммаПлатежа;
                       иначеесли (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
                      Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
                      Движение.Сумма_опл=ТекСтрокапроводки.СуммаПлатежа;
                               конецесли;

                     конецесли;   
   
                      если (ПустаяСтрока(ТекСтрокапроводки.ДДС)=ложь) тогда 
                              Движение.ДДС_расхода=ТекСтрокапроводки.ДДС;
                      иначе   Движение.ДДС_расхода=ЭтотОбъект.ДДС;
                          конецесли;   
                      если (ПустаяСтрока(ТекСтрокапроводки.Объект)=ложь) тогда 
                             Движение.Объект=ТекСтрокапроводки.Объект;
                      иначе  Движение.Объект=ЭтотОбъект.Объект;
                      конецесли;     
                      если (ПустаяСтрока(ТекСтрокапроводки.Участок)=ложь) тогда 
                                         Движение.Участок=ТекСтрокапроводки.Участок;
                      иначе  Движение.Участок=ЭтотОбъект.Участок;
                                конецесли;   
   
                         
   
                      Движение.Организация= Организация;
                      Движение.Контрагент_док= ЭтотОбъект.Контрагент;
                      Движение.ТипДвиж =Перечисления.ТипДвиж.Оплачено;

   конецесли;
   конецесли;
КонецЦикла;
Иначе
   если (ПустаяСтрока(ЭтотОбъект.Объект)=ложь) тогда
   
   
       Движение = Движения.Маржа_Объектов.Добавить();
   
   
   
   Движение.Период=Этотобъект.Дата;
               Движение.Регистратор = Ссылка;
               Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
               Движение.Вид_документа=Справочники.Вид_документа.НайтиПоНаименованию("ПлатежноеПоручениеИсходящее");
   
   если (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Услуги) тогда
   
                  Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Услуги сторонних организаций");
  Движение.Сумма= ЭтотОбъект.СуммаДокумента;
                  Движение.Сумма_опл= ЭтотОбъект.СуммаДокумента;

   иначеесли (ЭтотОбъект.Тип_номенклатуры=Перечисления.Тип_номенклатуры.Материалы) тогда
  Движение.Статья_плана = Справочники.Статьи_плана.НайтиПоНаименованию("Оборудование и материалы");
  Движение.Сумма_опл= ЭтотОбъект.СуммаДокумента;
          конецесли;
 
   Движение.ДДС_расхода=ЭтотОбъект.ДДС;
                                                                               
   Движение.Контрагент_док= ЭтотОбъект.Контрагент;    
   Движение.Объект=ЭтотОбъект.Объект;
   
   Движение.Участок=ЭтотОбъект.Участок;
             Справочники.Номенклатура.НайтиПоНаименованию(ТекСтрокапроводки.Номенклатура).Родитель;
   Движение.Организация= Организация;
   Движение.ТипДвиж =Перечисления.ТипДвиж.Оплачено;

        конецесли;

конецесли;
Движения.Маржа_Объектов.Записать();


Прошу помощи, что неправильно в приведенном коде, чтобы не вылетало.
Заранее спасибо.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск