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

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем svetlana2017, 6 янв 2019.

  1. TopicStarter Overlay
    svetlana2017
    Offline

    svetlana2017

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

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