Ошибка 2-НДФЛ ЗУП (3.0.25.150) {ОбщийМодуль.ЗарплатаКадры.Модуль(5279)}: Индекс находится за границами массива

01.02.17

Задачи пользователя - Адаптация типовых решений

Ошибка при выполнении обработчика - 'ПриЗаписи' по причине: {ОбщийМодуль.ЗарплатаКадры.Модуль(5279)}: Индекс находится за границами массива ИмяПоля = УзелФормата.ДочерниеУзлы[3].ТекстовоеСодержимое;

Ошибка возникает в функции: ПолучитьФорматЗаписиИзДереваФормата

Функция ПолучитьФорматЗаписиИзДереваФормата(Знач ДеревоФормата, Знач ИмяЗаписи)
    
    ТаблицаФормаЗаписи = Новый ТаблицаЗначений;
    ТаблицаФормаЗаписи.Колонки.Добавить("ИмяПоля",                    Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)));
    ТаблицаФормаЗаписи.Колонки.Добавить("ТипДанных",                Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10)));
    ТаблицаФормаЗаписи.Колонки.Добавить("ТипЭлемента",                Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10)));
    ТаблицаФормаЗаписи.Колонки.Добавить("Размер",                    Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(5)));
    ТаблицаФормаЗаписи.Колонки.Добавить("РазрядностьДробнойЧасти",    Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(5)));
    ТаблицаФормаЗаписи.Колонки.Добавить("ЭлементНеОбязателен", Новый ОписаниеТипов("Булево"));
    ТаблицаФормаЗаписи.Колонки.Добавить("НеВыводитьВФайл", Новый ОписаниеТипов("Булево"));


 
    УзлыФормата = ДеревоФормата.ДочерниеУзлы[0].ПолучитьЭлементыПоИмени(ИмяЗаписи)[0].ДочерниеУзлы;
    
    Для Каждого УзелФормата Из УзлыФормата Цикл
        
        Если УзелФормата.ТипУзла = ТипУзлаDOM.Текст Тогда
           Продолжить;
        КонецЕсли;

        
        // Имя поля хранится в 4-ой колонке.
        ИмяПоля = УзелФормата.ДочерниеУзлы[3].ТекстовоеСодержимое;
      

 Если ИмяПоля <> "" Тогда
            
            НовоеПоле = ТаблицаФормаЗаписи.Добавить();
            НовоеПоле.ИмяПоля = СокрЛП(ИмяПоля);
            // Тип данных хранится во 2-ой колонке.
            НовоеПоле.ТипДанных = ВРег(УзелФормата.ДочерниеУзлы[1].ТекстовоеСодержимое);
            
            НовоеПоле.НеВыводитьВФайл = Ложь;
            
            Если УзелФормата.ДочерниеУзлы.Количество() = 7 И УзелФормата.ДочерниеУзлы[6].ИмяУзла = "ТипЭлемента" Тогда
                НовоеПоле.ТипЭлемента = ВРег(УзелФормата.ДочерниеУзлы[6].ТекстовоеСодержимое);
            Иначе
                НовоеПоле.ТипЭлемента = "С";
            КонецЕсли;    
            
            // Размер поля хранится в 3-ей колонке.
            СтрРазмерПоля = УзелФормата.ДочерниеУзлы[2].ТекстовоеСодержимое;
            // Если указан размер поля, сохраним его.
            Если (НовоеПоле.ТипДанных = "ЧИСЛО" Или НовоеПоле.ТипДанных = "СТРОКА") И СтрРазмерПоля <> "" Тогда
                ПозицияТочки = СтрНайти(СтрРазмерПоля,".");
                Если ПозицияТочки<>0 Тогда
                    НовоеПоле.Размер = Число(Лев(СтрРазмерПоля,ПозицияТочки-1));
                    НовоеПоле.РазрядностьДробнойЧасти = Число(Сред(СтрРазмерПоля,ПозицияТочки+1));
                Иначе    
                    НовоеПоле.Размер = Число(СтрРазмерПоля);
                    НовоеПоле.РазрядностьДробнойЧасти = 0;
                КонецЕсли;     
            КонецЕсли;     
            // Признак обязательности элемента хранится в 5-й колонке.
            НовоеПоле.ЭлементНеОбязателен = (ВРег(УзелФормата.ДочерниеУзлы[4].ТекстовоеСодержимое) = "НЕ ОБЯЗАТЕЛЬНО" Или ВРег(УзелФормата.ДочерниеУзлы[4].ТекстовоеСодержимое) = "Н");
            
        КонецЕсли;     
        
    КонецЦикла;
    
    Возврат ТаблицаФормаЗаписи;
КонецФункции

Пояснения (к блоку кода выделенного желтым):

Красным выделена строка ошибки, зеленым код, который нужно вставить для устранения ошибки, а синим код, вследствие чего возникла ошибка. Проведя простейший эксперимент, выяснил, что:  функция ПолучитьЭлементыПоИмени - получает элементы узлов DOM не только по имени, но и по значению. Ошибка происходит, когда ИмяЗаписи = "ИмущВыч". Ищем в макете "ФорматНДФЛ2015XML" документа "СправкиНДФЛДляПередачиВНалоговыйОрган" строку  <Размер_ИмяСтруктурыДанных>ИмущВыч</Размер_ИмяСтруктурыДанных> .  Таких строк несколько. Если их удалить, ошибки не возникнет, отсюда и вывод, что функция ПолучитьЭлементыПоИмени - получает элменты узлов DOM не только по имени, но и по значению.

ОбщийМодуль.ЗарплатаКадры.Модуль(5279) ИмяПоля = УзелФормата.ДочерниеУзлы[3].ТекстовоеСодержимое

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4647    9    5    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3055    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1681    dimanich70    8    

14

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    2105    19    avmartynov    14    

44

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2230    25    progmaster    8    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. citicat 119 01.02.17 20:25 Сейчас в теме
Спасибо за четкое описание ошибки и исправления.
+
2. np12 03.02.17 22:18 Сейчас в теме
Добрый вечер! Я решила эту проблему по другому. Я не стала вносить изменения в модуль, а указала возможно пропущенный символ в макете "ФорматНДФЛ2015XML"
Прикрепленные файлы:
Stylo; +1
3. monkbest 115 10.02.17 08:14 Сейчас в теме
ЗУП 3.0 - история о том, как не надо делать типовые конфигурации. Сколько я наелся начиная с 2014ого года с ней. Слава богу лавочку прикрыли, в 3.0 даже тарифы взносов и пособия на 2017й уже не обновились, а зарплату за январь уже все посчитали, т.е. ей нельзя пользоваться по определению. Может выход 3.1 станет началом более качественной работы Фирмы 1С.
+
4. пользователь 27.03.20 12:51
Сообщение было скрыто модератором.
...
Оставьте свое сообщение