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

Программное заполнение табличной части документа ДанныеДляРасчетаЗарплаты в ЗУП 3.1

Автор МолчановАнтон, 11 мар 2019, 18:38

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

МолчановАнтон

Коллеги, добрый вечер!
Мне необходимо программно создать документ ДанныеДляРасчетаЗарплаты и заполнить в нем табличную часть ДанныеДетально.

В ней 2 поля: Сотрудник и Питание



Питание - показатель созданный в шаблоне ввода исходных данных.



Сам документ программно я создаю так:

                Док = Документы.ДанныеДляРасчетаЗарплаты.СоздатьДокумент();
Док.Организация = Справочники.Организации.НайтиПоНаименованию("ИнтерТрейд");
Док.Период = ТекущаяДата();
Док.Ответственный = ПараметрыСеанса.ТекущийПользователь;
Док.ВидДокумента = Справочники.ВидыДокументовВводДанныхДляРасчетаЗарплаты.НайтиПоНаименованию("Удержание за питание");
Док.Дата = ТекущаяДата();
//Стр = Док.ДанныеДетально.Добавить();
//Стр.Сотрудник = Справочники.ФизическиеЛица.НайтиПоНаименованию("Иванов Сергей Антонович");
//Стр.Питание=10;
Док.Записать();


А вот заполнить табличную часть ДанныеДетально у меня не получается, её не видно в контексте программы. Подскажите пожалуйста, как можно заполнить табличную часть?

Vit1501

А вы уверены, что это табличная часть документа? ошибку выдает какую платформа?

МолчановАнтон

Поразбиравшись, понял - что табличных частей в документе ДанныеДляРасчетаЗарплаты две:
1) ФизическиеЛица
2) ЗначенияПоказателей

Мне как раз и надо их заполнить.

Сначала я создаю документ и заполняю его реквизиты:

                Док = Документы.ДанныеДляРасчетаЗарплаты.СоздатьДокумент();
Док.Организация = Справочники.Организации.НайтиПоНаименованию("НК Гидропривод");
Док.Период = ТекущаяДата();
Док.Ответственный = ПараметрыСеанса.ТекущийПользователь;
Док.ВидДокумента = Справочники.ВидыДокументовВводДанныхДляРасчетаЗарплаты.НайтиПоНаименованию("Удержание за питание");
Док.Дата = ТекущаяДата();


Запросом получаю список сотрудников из справочника Сотрудники:

Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    | Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо
    |ИЗ
    | Справочник.Сотрудники КАК Сотрудники";

РезультатЗапроса = Запрос.Выполнить().Выгрузить();


Циклом заполняю нужные мне табличные части ФизическиеЛица и ЗначенияПоказателей

Для каждого Строка из РезультатЗапроса Цикл
    НоваяСтрока = Док.ФизическиеЛица.Добавить();
    НоваяСтрока.ФизическоеЛицо = Строка.ФизическоеЛицо;
    НоваяСтрока = Док.ЗначенияПоказателей.Добавить();
    НоваяСтрока.Значение = 55;
КонецЦикла;


Проверяю что данные попали в табличные части:

Сообщение = Новый СообщениеПользователю();
Для Каждого Строка Из Док.ФизическиеЛица Цикл
Сообщение.Текст=Строка.ФизическоеЛицо;
Сообщение.Сообщить();
КонецЦикла;

Для Каждого Строка Из Док.ЗначенияПоказателей Цикл
Сообщение.Текст=Строка.Значение;
Сообщение.Сообщить();
КонецЦикла; 


Вижу что данные загрузились в табличные части:



Сохраняю документ:

Док.Записать();


После сохранения, документ появляется в списке, но при попытке его открыть выдает ошибку:


{Документ.ДанныеДляРасчетаЗарплаты.Форма.ФормаДокумента.Форма(1736)}: Индекс находится за границами массива
СведенияОПоказателе = ПоказателиРасчетаЗарплаты.НайтиСтроки(Новый Структура("Показатель", СтрокаОбъекты.Показатель))[0];


При открытии документа по номеру и просмотром табличных частей отладчиком в цикле, видно что
табличная часть ФизическиеЛица - пустая, однако данные табличной части ЗначенияПоказателей - заполнены:


Подскажите пожалуйста, почему данные табличной части ФизическиеЛица при сохранении исчезают?

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

Рейтинг@Mail.ru

Поиск