Имя: Пароль:
1C
1С v8
Ошибка при обмене УТ 11 БП 3.0
0 Eeelena
 
13.05.15
14:44
Подскажите, пожалуйста, при обмене(правила не типовые) УТ 11 БП 3.0 следующая ошибка:

Ошибка в обработчике события ПослеЗагрузкиОбъекта
    ИмяПКО                 =  СБДС_ПеречислениеНалога
    ТипОбъекта             =  Списание с расчетного счета
    Объект                 =  Списание с расчетного счета 00ЦБ-000420 от 10.04.2015 23:59:59
    Обработчик             =  ПослеЗагрузкиОбъекта
    ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
    ПозицияМодуля          =  (8)
    КСообщенияОбОшибках    =  21

Посмотрела через конвертацию данных в обработчике события ПослеЗагрузкиОбъекта, не поняла в чем причина. Текст модуля следующий:


Выполнить(Алгоритмы.ОбработатьЗаписьДокументаПослеЗагрузки);

Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда
    
    СчУчета = Неопределено;
    Выполнить(Алгоритмы.ЗаполнитьСчетУчетаБанка);
    
    КодБК = ПараметрыОбъекта["КодБК"];
    
    Если ЗначениеЗаполнено(КодБК) Тогда
        Объект.Налог                          = Справочники.ВидыНалоговИПлатежейВБюджет.НалогПоКБК(КодБК);
        Объект.СчетУчетаРасчетовСКонтрагентом = Справочники.ВидыНалоговИПлатежейВБюджет.СчетУчета(Объект.Налог, Объект.Дата);
        ВидНалоговогоОбязательства            = Справочники.ВидыНалоговИПлатежейВБюджет.ВидНалоговогоОбязательстваПоКБК(КодБК, Объект.Дата);
    Иначе
        
        ТипПеречисленияВБюджет = ПараметрыОбъекта["ТипПеречисленияВБюджет"];
        
        Если ЗначениеЗаполнено(ТипПеречисленияВБюджет) Тогда
            Если ТипПеречисленияВБюджет = "ПЕ" Тогда
                ВидНалоговогоОбязательства = Перечисления.ВидыПлатежейВГосБюджет.ПениСам;
            ИначеЕсли ТипПеречисленияВБюджет = "ПЦ" Тогда
                ВидНалоговогоОбязательства = Перечисления.ВидыПлатежейВГосБюджет.Проценты;
            Иначе
                ВидНалоговогоОбязательства = Перечисления.ВидыПлатежейВГосБюджет.Налог;
            КонецЕсли;
        Иначе
            ВидНалоговогоОбязательства = Перечисления.ВидыПлатежейВГосБюджет.Налог;
        КонецЕсли;
        
    КонецЕсли;
    
    ПериодОплаты = ПараметрыОбъекта["ПериодОплаты"];
    
    Если ЗначениеЗаполнено(ПериодОплаты)
        И ПериодОплаты <> "0" Тогда
        
        МассивЗначений = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПериодОплаты, ".");
        
        ТипПлатежа = МассивЗначений[0];
        ГодПлатежа = МассивЗначений[2];
        ИдентификаторПериодаПлатежа = МассивЗначений[1];
        ДатаПлатежа = ГодПлатежа + "%МесяцПлатежа%01";
        
        Если ТипПлатежа = "МС" Тогда
            ПериодПлатежа = Дата(СтрЗаменить(ДатаПлатежа, "%МесяцПлатежа%", ИдентификаторПериодаПлатежа));
        ИначеЕсли ТипПлатежа = "КВ" Тогда
            
            Если ИдентификаторПериодаПлатежа = "01" Тогда
                МесяцПлатежа = "01";
            ИначеЕсли ИдентификаторПериодаПлатежа = "02" Тогда
                МесяцПлатежа = "04";
            ИначеЕсли ИдентификаторПериодаПлатежа = "03" Тогда
                МесяцПлатежа = "07";
            ИначеЕсли ИдентификаторПериодаПлатежа = "04" Тогда
                МесяцПлатежа = "10";
            КонецЕсли;
            
            ПериодПлатежа = Дата(СтрЗаменить(ДатаПлатежа, "%МесяцПлатежа%", МесяцПлатежа));
            
        ИначеЕсли ТипПлатежа = "ПЛ" Тогда
            ПериодПлатежа = Дата(СтрЗаменить(ДатаПлатежа, "%МесяцПлатежа%", ?(ИдентификаторПериодаПлатежа = "02", "07", "01")));
        ИначеЕсли ТипПлатежа = "ГД" Тогда
            ПериодПлатежа = Дата(СтрЗаменить(ДатаПлатежа, "%МесяцПлатежа%", "01"));
        Иначе
            ПериодПлатежа = Дата(ГодПлатежа + ИдентификаторПериодаПлатежа + ТипПлатежа);
        КонецЕсли;
        
    Иначе
        ПериодПлатежа = '00010101';
    КонецЕсли;
    
    Объект.НалоговыйПериод = ПериодПлатежа;
    
    // Приводим тип значений субконто
    Если ЗначениеЗаполнено(Объект.СчетУчетаРасчетовСКонтрагентом) Тогда
        
        Для Каждого СтрокаВидаСубконто Из Объект.СчетУчетаРасчетовСКонтрагентом.ВидыСубконто Цикл
            
            ТипСубконто = СтрокаВидаСубконто.ВидСубконто.ТипЗначения;
            Субконто    = Объект["СубконтоДт" + СтрокаВидаСубконто.НомерСтроки];
            
            Если ТипСубконто.ПривестиЗначение(Субконто) <> Субконто Тогда
                Объект["СубконтоДт" + СтрокаВидаСубконто.НомерСтроки] = ТипСубконто.ПривестиЗначение(Субконто);
            КонецЕсли;
            
            Если ТипСубконто.Типы().Найти(Тип("ПеречислениеСсылка.ВидыПлатежейВГосБюджет")) <> Неопределено
                И Не ЗначениеЗаполнено(Объект["СубконтоДт" + СтрокаВидаСубконто.НомерСтроки]) Тогда
                Объект["СубконтоДт" + СтрокаВидаСубконто.НомерСтроки] = ВидНалоговогоОбязательства;
            КонецЕсли;
            
        КонецЦикла;
        
    КонецЕсли;
    
КонецЕсли;
1 Eeelena
 
13.05.15
14:54
Ребята?!
2 thezos
 
13.05.15
15:20
(1) Используйте типовые правила.
3 Eeelena
 
13.05.15
15:29
Подскажите, пожалуйста как исправить ошибку?
4 anatoly
 
13.05.15
15:37
с таким длинным текста модуля - без фото в бикини никак...
5 Stim
 
13.05.15
15:48
делаешь загрузку в режиме отладки с точкой останова по ошибке и там смотришь.

а вообще-то 4 прав
6 Eeelena
 
13.05.15
15:54
(5) спасибо, попробую
7 Timon1405
 
13.05.15
15:54
ПараметрыОбъекта - структура, создаваемая в источнике, поэтому всякого рода ПараметрыОбъекта["КодБК"] и ПараметрыОбъекта["ТипПеречисленияВБюджет"] могут быть заполнены, а могу и не быть заполнены. Позовите Дартантяна, который писал правила, и попросите его их изменить, чтобы у вас все загрузилось