1С ЗУП Печатная форма (Индекс находится за границами массива)

1. Protocolicmp 06.09.18 21:26 Сейчас в теме
Мой код:
Функция СформироватьПечатнуюФорму(СсылкаНаОбъект, ОбъектыПечати)
	
	ТабличныйДокумент = Новый ТабличныйДокумент;   //формируем новый табличный документ
	//ТабличныйДокумент.ИмяПараметровПечати = "БессрочныйТрудовойДоговор";
	
	МакетОбработки = ПолучитьМакет("Договор");
	
	//заполняем шапку
	ОбластьШапки = МакетОбработки.ПолучитьОбласть("Шапка");	
		
	МассивФизическихЛиц = Новый Массив;
	МассивФизическихЛиц.Добавить(СсылкаНаОбъект);
	
	МассивКадровДанных = Новый Массив;
	МассивКадровДанных.Добавить("ИНН");
	
	СтрокаКадровДанных = КадровыйУчет.КадровыеДанныеФизическихЛиц(Ложь, МассивФизическихЛиц, МассивКадровДанных)[0];
	ОбластьШапки.Параметры.ИНН = СтрокаКадровДанных.ИНН;
	
	ТабличныйДокумент.Вывести(ОбластьШапки); 
	
	ТабличныйДокумент.АвтоМасштаб = Истина;
	
	Возврат ТабличныйДокумент;
	
КонецФункции
Показать

вот при таком коде пишет (Индекс находится за границами массива) при его запуске, что не так может кто понимает?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. PhoenixAOD 62 07.09.18 02:03 Сейчас в теме
(1)У меня похожая беда бывала с паспортными данными, когда кадровики тупо забывали их заполнить, хотя пяткой в грудь себя хреначили, что все заполнено корректно.
4. Bene_Valete 188 07.09.18 03:46 Сейчас в теме
(1)
 КадровыйУчет.КадровыеДанныеФизическихЛиц(Ложь, МассивФизическихЛиц, МассивКадровДанных)
- Это функция общего модуля, результатом ее выполнения является ТаблицаЗначений (или просто таблица, чтобы Вам, как начинающему легче разобраться)
[0] после такой функции всегда означает, что вы хотите получить первую строку этой таблицы. Назревает вопрос, а почему только первую? - Потому что в ЗУП 3.1 многие функции построены так, что зачастую возвращают таблицу с одной строкой (и подобные обращения встречаются в типовом коде, хотя считаются не очень надежным методом)

Ошибка "Индекс находится за границами массива" означает, что вы пытаетесь получить строку в таблице, которой там нет. В данной случае пытаетесь получить первую строку пустой таблицы. Почему таблица пустая - либо запрашиваемые данные отстутсвуют в базе данных, либо вы неверно задаете параметры для их получения (Ложь, МассивФизическихЛиц, МассивКадровДанных)

Не стесняйтесь здесь задавать вопросы, все с чего-то начинали, а то бегаете из одной темы в другую :)
Suslik_Johns; Protocolicmp; +2 Ответить
2. DragonAgo 16 06.09.18 21:54 Сейчас в теме
Добрый вечер. СтрокаКадровДанных = КадровыйУчет.КадровыеДанныеФизическихЛиц(Ложь, МассивФизическихЛиц, МассивКадровДанных)[0] Эта строка возвращает что-нибудь?
5. Protocolicmp 07.09.18 08:30 Сейчас в теме
(2)хм, я не совсем понимаю что значит возвращает?
7. ben19791010 07.09.18 09:57 Сейчас в теме
(5)
что значит возвращает?
результат отрабатывания этой функции
8. Protocolicmp 07.09.18 12:54 Сейчас в теме
(7)а как проверить,кстате очень интересно, т.к. всегда чтобы проверить код приходилось сохранять форму, идти в приложение, загружать, и там смотреть работает или нет. Как можно пройти по коду чтобы узнать что какая строка выдает?
9. ben19791010 07.09.18 13:01 Сейчас в теме
(8)
Как можно пройти по коду чтобы узнать что какая строка выдает?
есть такая штука режим отладки в конфигураторе F5(но если спрашиваете про это, то лучше почитать гугл)
10. Bene_Valete 188 07.09.18 15:54 Сейчас в теме
(8) Если правильно понимаю, на данный момент вы просто запускаете код и смотрите работает он или нет - привыкайте пользоваться отладкой, это наше все :)
СтрокаКадровДанных = КадровыйУчет.КадровыеДанныеФизическихЛиц(Ложь, МассивФизическихЛиц, МассивКадровДанных)[0]; 
- Правой кнопкой мыши на этой строчке - Точка останова - Должна появиться красная точка напротив этой строки
Затем в конфигураторе в меню выбираете Отладка - Начать отладку - Запускаете код с печатной формой как обычно - Если установили точку останова верно, то вас перебросит обратно в конфигуратор. Далее выделите к примеру переменную "СсылкаНаОбъект" и нажмите "вычислить выражение" - откроется окно, в котором будет показано значение этой переменной
Чтобы "пройти по коду" в этом же режиме после того как перекинуло в конфигуратор нажимайте f10 или f11
http://v8.1c.ru/overview/Term_000000064.htm
Suslik_Johns; Protocolicmp; +2 Ответить
6. RustRR 07.09.18 09:46 Сейчас в теме
Возможно, СсылкаНаОбъект - ссылка на сотрудника, а код ожидает получить ссылку на физлицо.
Но в любом случае нужно проверить что вернула функция КадровыеДанныеФизическихЛиц
11. Protocolicmp 07.09.18 19:51 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот