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

Ругаеться на ноер за пределами значения

Автор ADRENALIN1986, 03 фев 2016, 13:39

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

ADRENALIN1986

Добрый день появилась такая проблема при формирование ПУ-3 выгруки в текстовый документ выкидывает ошибку 
ТЗ.ПолучитьСтрокуПоНомеру(ТЗ.КоличествоСтрок());
{Документ.ПачкаПУ_3.Форма.Модуль(667)}: Номер за пределами значения!

В самом документе есть пустые поля  в отладчики просматриваю строчку ТЗ.ПолучитьСтрокуПоНомеру(ТЗ.КоличествоСтрок());    пишет  КоличествоСтрок()  равно 8. Если удалить пустые значения  то выгружает в текстовый файл, но нужна выгрузка и с пустыми значениями  как можно исправить это, прошу помощи . На прикрепленном файле видно записи без цифр  при их удаление они выгружаться.код программы где ругается на ошибку.

Процедура Выгрузить()
   Перем ТаблицаСтаж; // Доб., релиз 14.02.1 ПС 30.01.14 - записи СТАЖ по сотруднику
   КолОш=0;
   Если ПустоеЗначение(Константа.РегНомерВнебюджет)=1 Тогда
      Сообщить("Заполните константу 'Рег. номер для внебюджетн. фондов'","!");
      КолОш= КолОш + 1;
   КонецЕсли;
   Если ПустоеЗначение(Константа.УННОрганизации)=1 Тогда
      Сообщить("Заполните константу 'УНП' - выгрузка прервана","!");
      КолОш= КолОш + 1;
   КонецЕсли;
    Если КолОш>0 Тогда
      Сообщить("Выгрузка прервана - не все константы заполнены.","!");
       Возврат;
   КонецЕсли; 
   //   
   ГодПачки = ДатаГод(ДатаДок);
   
   Текст=СоздатьОбъект("Текст");
   Текст.ДобавитьСтроку("ЗГЛВ=1.6=");
   // 15 реквизитов в записи ПАЧК
   Текст.ДобавитьСтроку("<ПАЧК="+СокрЛП(Константа.УННОрганизации)+"="+СокрЛП(Константа.РегНомерВнебюджет)+"="
   +СокрЛП(Константа.НазваниеОрганизации)+"="+Число(ФайлВыгрузки)+"= = ="+"1"+"="); // 8=
   
   СуммаСтрахВзносов = Итог("СуммаВзносов");
   СуммаНачисСтрахВзносовПоВидам = Итог("НачисленоВзносов1") + Итог("НачисленоВзносов2") + Итог("НачисленоВзносов3");
   СуммаУплачСтрахВзносовПоВидам = Итог("УплаченоВзносов1")  + Итог("УплаченоВзносов2");
   
   Если СуммаУплачСтрахВзносовПоВидам <> 0 Тогда
      // с 2013 года
      НачисленоВзносов = СуммаНачисСтрахВзносовПоВидам;
      УплаченоВзносов  = СуммаУплачСтрахВзносовПоВидам;
   Иначе
      НачисленоВзносов = СуммаСтрахВзносов;
      УплаченоВзносов  = НачисленоВзносов;
   КонецЕсли;

   Текст.ДобавитьСтроку("ТИПД=ПУ-3="+КоличествоСтрок()+"="
   +Итог("СуммаВыплат")+"="
   +НачисленоВзносов   +"="
   +УплаченоВзносов    +"="
   +?(ГодПачки < 2013,"0",СокрЛП(СуммаСтрахВзносов))+"=>"); // ещё 7=, всего 15=
   
   ТелефонИсполнителя = СокрЛП(Константа.ТелефонИсполнителя); // 06.01.06
   ТелефонИсполнителя = СтрЗаменить(ТелефонИсполнителя," ","");
   
   ДатаНов = ФорматДатыФСЗН(ДатаДок);
   
   ВыбратьСтроки();
   
   Пока ПолучитьСтроку()=1 Цикл     
      Если Док.Перекл=1 Тогда
         Тип="И";
      ИначеЕсли Док.Перекл=2 Тогда
         Тип="К";
      ИначеЕсли Док.Перекл=3 Тогда
         Тип="О";  // отменяющая - без нулей ???
      ИначеЕсли Док.Перекл=4 Тогда
         Тип="П";
      КонецЕсли;   
      
      Сотр    = Док.Сотрудник;
      Фамилия = СокрЛП(Сотр.Фамилия.Получить(ДатаДок));
      
      Имя     = Сред(СокрЛП(Сотр.Имя.Получить(ДатаДок)),1,1);
      Отчество= Сред(СокрЛП(Сотр.Отчество.Получить(ДатаДок)),1,1);
      
      ТЗ = СоздатьОбъект("ТаблицаЗначений");
      Док.ВыгрузитьТабличнуюЧасть(ТЗ,);
      ТЗ.Сортировать("Месяц");
      ТЗ.ПолучитьСтрокуПоНомеру(ТЗ.КоличествоСтрок());
      КолМесяцев = Число(ТЗ.Месяц);
      
      // «01» (трудовой договор) - заполняется,
      // «02» (членство (участие) – заполняется для отчетных
      // периодов 2003-2011 годов, начиная с отчетного периода 2012 год - пробел
      // (постановление правления ФСЗН 28 декабря 2011 г. № 14).   
      КодТрудовогоДоговора   = СокрЛП(Док.КодВидаДоговора); // Код категории застрахованного лица
      КатЗастрахованногоЛица = КодТрудовогоДоговора;
   
      Если (КатЗастрахованногоЛица = "02") И (ГодПачки >= 2012) Тогда
         КатЗастрахованногоЛица = " "; // пробел
      КонецЕсли;
      
      // Закрываем предыдущий тег, если он не закрыт
      ЗакрытьТег(Текст);
      
      // Запись о документе
      
      // Доб., релиз 14.02.1 ПС 30.01.14 - ПОСОБИЕ и ВЗНОСЫВРЕМ
      КолЗапСтаж = ПодготовитьЗаписиСТАЖ(Сотр, ТЗ, ТаблицаСтаж);
      
      Текст.ДобавитьСтроку("<ПУ-3="+Тип+"="+СокрЛП(Константа.РегНомерВнебюджет)+"="+СокрЛП(Док.СтраховойНомер)+"="
      + Фамилия+"="+Имя+"="+Отчество+"="+КатЗастрахованногоЛица+"= = ="
      + СуммаВыплат +"="
      + СуммаПособий+"="
      + НачисленоВзносов1+"="+НачисленоВзносов2+"="+НачисленоВзносов3+"="  // было СуммаВзносов
      +?(ГодПачки < 2013," = ",СокрЛП(УплаченоВзносов1)+"="+СокрЛП(УплаченоВзносов2)) +"="   // было СуммаВзносов
      + Док.КоличествоСтрок() +"=" // кол строк НЧСЛ
      + КолЗапСтаж+"="  //            кол строк СТАЖ   // Изм., релиз 14.02.1 ПС 30.01.14 - ПОСОБИЕ и ВЗНОСЫВРЕМ
      + ДатаНов+"= ="+СокрЛП(Док.ГодОтчета)+"="+ТелефонИсполнителя+"=");
      
      // Записи о начислениях выбираются из документа "Индив свед (ПУ-3)"
      //Нули заполняются только для кодов категории застрахованного лица «01», «02», «07»
      //и для типов формы «исходная», «корректирующая», «назначение пенсии».
      // Для других кодов категорий застрахованного лица заполнение нулей не допускается.
      // http://www.ssf.gov.by/priside/personalaccount/indpu/indpu_1/
      Если (Тип="О") ИЛИ (Найти("01 02 07",КодТрудовогоДоговора) = 0) Тогда
         //
         Док.ВыбратьСтроки();
         Пока Док.ПолучитьСтроку()=1 Цикл
            Если (Док.Выплаты+Док.Пособия+Док.Сумма=0) Тогда
               Продолжить;
            КонецЕсли;   
            Текст.ДобавитьСтроку("НЧСЛ="+СокрЛП(Док.Месяц)+"="
            + Док.Выплаты+"="  // было пробел, а не 0: ?((Док.Выплаты=0)," ",Док.Выплаты)
            + Док.Пособия+"="
            + Док.НачисленоВзносов1+"="+ Док.НачисленоВзносов2+"="+ Док.НачисленоВзносов3+"="  // было Сумма
            +?(ГодПачки < 2013," = ",СокрЛП(Док.УплаченоВзносов1)+"="+СокрЛП(Док.УплаченоВзносов2)) +"="   // было Сумма
            + Док.Процент1м+"="+ Док.Процент2м+"="+ Док.Процент3м+"="
            +?(ПустоеЗначение(Док.ДатаИзмененияПроцента) = 1, " ",ФорматДатыФСЗН(Док.ДатаИзмененияПроцента))+"=");
         КонецЦикла;
      Иначе
         // Ввод ДПУ, версия НЧСЛ 1.6
         // Заполнение нулей в разделе 1 «Сведения о начислениях и страховых взносах»
         // формы ПУ-3 строго соответствует датам приема и увольнения, указанным в форме
         // ПУ-2 «Сведения о приеме и увольнении»:
         //
         //в месяцах, выходящих за периоды работы, должно быть пусто;
         //нули должны быть заполнены во всех графах раздела 1
         // «Сведения о начислениях и страховых взносах».
         Если Док.ГодОтчета< ДатаГод(Док.ДатаДок) Тогда
             КолМесяцев = 12;                         
         Иначе
            //Если в ПУ-3 в реквизите "Год" указан текущий год,
            // то при заполнении в разделе 1. "Сведения о начислениях и
            // страховых взносах" в графы  "Начисления", "Пособия" и "Страховые взносы"
            // нельзя внести значения в месяцах позднее текущего, кроме кода категории ЗЛ "06".            
         КонецЕсли;
         ТЗ.ВыбратьСтроки();
         Пока ТЗ.ПолучитьСтроку() = 1 Цикл
         //Для мм=1 по КолМесяцев цикл
            //ТекМес= Формат(мм,"Ч(0)2.0");
            //НомСтр=0;
            //Если ТЗ.НайтиЗначение(ТекМес,НомСтр,"Месяц")=0 Тогда
            //   Продолжить;
            //Иначе
            //   ТЗ.ПолучитьСтрокуПоНомеру(НомСтр);
               // для И К и П нули показывать
               Текст.ДобавитьСтроку("НЧСЛ="+СокрЛП(ТЗ.Месяц)+"="
               + ТЗ.Выплаты+"="
               + ТЗ.Пособия+"="
               + ТЗ.НачисленоВзносов1+"="+ ТЗ.НачисленоВзносов2+"="+ ТЗ.НачисленоВзносов3+"="  // было Док.Сумма
               +?(ГодПачки < 2013," = ",СокрЛП(ТЗ.УплаченоВзносов1)+"="+СокрЛП(ТЗ.УплаченоВзносов2)) +"="   // было  Док.Сумма
               + ТЗ.Процент1м+"="+ ТЗ.Процент2м+"="+ ТЗ.Процент3м+"="
               +?(ПустоеЗначение(ТЗ.ДатаИзмененияПроцента) = 1, " ",ФорматДатыФСЗН(ТЗ.ДатаИзмененияПроцента))+"=");
            //КонецЕсли;
         КонецЦикла; 
         
         // {Изм., релиз 14.02.1 ПС 30.01.14 - записи СТАЖ
         Если КолЗапСтаж > 0 Тогда
            ТаблицаСтаж.Сортировать("Начало,Конец");
            ТаблицаСтаж.ВыбратьСтроки();   
            Пока ТаблицаСтаж.ПолучитьСтроку()=1 Цикл   
               Текст.ДобавитьСтроку("СТАЖ="
               + ФорматДатыФСЗН(ТаблицаСтаж.Начало)+"="
               + ФорматДатыФСЗН(ТаблицаСтаж.Конец) +"="
               + ТаблицаСтаж.КодПрофессии+"="
               + ТаблицаСтаж.ВидДеятельности+"= = =");
            КонецЦикла;    
         КонецЕсли;
         // изм., релиз 14.02.1 пс}
         
      КонецЕсли;
   КонецЦикла; // цикл по строкам пачки
   // Закрываем предыдущий тег, если он не закрыт
   ЗакрытьТег(Текст);
   Текст.Записать(ФайлВыгрузки);
   Сообщить("Завершена выгрузка пачки ПУ-3 "+ТекущееВремя(),"I");
КонецПроцедуры //Выгрузить     


Заранее благодарен


Теги:

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

Рейтинг@Mail.ru

Поиск