Программно в табеле заполнить данными по сотруднику во второй строке

1. ТатьянкаО 31.01.24 09:10 Сейчас в теме
Добрый день!
Табель заполняем стандартно, а затем обработкой у сотрудников второй строчкой в некоторые дни нужно проставить дополнительный вид времени ПП 1. как проще это сделать. в 2.5 достаточно легко было, а здесь не могу разобраться, пересмотрела множество вариантов и только запуталась
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 31.01.24 09:37 Сейчас в теме
(1)мы как-то телепатически должны догадаться, как именно вы пытались сделать и что именно не получилось?
3. ТатьянкаО 31.01.24 10:05 Сейчас в теме
4. ТатьянкаО 31.01.24 10:08 Сейчас в теме
МассивКорр = Результат.ДанныеОВремени.НайтиСтроки(Новый Структура("Сотрудник", СтрокаТаблицы.Сотрудник));

Если МассивКорр.Количество() > 0 Тогда

НовСтрока = МассивКорр[0];

ИндексВставки = 1;
НовСтрока["Часов" + Постфикс] = Число ("1");
НовСтрока["ВидВремени" + Постфикс] = ПП;

МассивКорр.Вставить(ИндексВставки, НовСтрока);

конецесли;
5. ТатьянкаО 31.01.24 10:09 Сейчас в теме
Небольшой кусок, но получается тут не добавляет, а заменяет в первой строке
6. nomad_irk 76 31.01.24 10:28 Сейчас в теме
(5)
но получается тут не добавляет, а заменяет в первой строке

Логично, т.к. вы делаете
НовСтрока = МассивКорр[0];

И зачем вы вставляете в массив найденных строк? они от этого в ТЗ/ТЧ-источнике не поменяются.
7. ТатьянкаО 31.01.24 10:39 Сейчас в теме
(6) да, я понимаю. это я уже всё удалила и что, с чего-то начать сначала заменяю в первой строке. а как переделать, чтобы вставлялось во вторую
8. nomad_irk 76 31.01.24 10:40 Сейчас в теме
(7)
а как переделать, чтобы вставлялось во вторую

Добавлять строку в ТЧ/ТЗ-источник напрямую:

Результат.ДанныеОВремени.Добавить();
9. ТатьянкаО 31.01.24 10:57 Сейчас в теме
(8) так делала, но добавляет в конец новой строкой, как нового сотрудника, а не к уже имеющемуся
10. nomad_irk 76 31.01.24 11:00 Сейчас в теме
(9)оно и должно быть добавлено новой строкой.
При открытии формы документа уже будет распределятся по сотрудникам и видам времени.

Можете очень просто проверить на копии базы:
1. Взять любой сформированный документ, посмотреть данные его табличной части ДанныеОВремени
2. интерактивно добавить, то что вам нужно.
3. Еще раз посмотреть данные его табличной части.
4. сделать выводы о том, как нужно формировать таблицу для загрузки в ТЧ документа.
11. ТатьянкаО 01.02.24 08:53 Сейчас в теме
При добавлении новой строки, добавляется только вид времени и часы, а поле сотрудника остается пустым, не присваивается значение
12. nomad_irk 76 01.02.24 09:21 Сейчас в теме
(11) Т.е.
НоваяСтрокаТЧ.Сотрудник = <СсылкаНаЭлементСправочиникаСотрудники>


не работает?
13. ТатьянкаО 01.02.24 09:35 Сейчас в теме
14. ТатьянкаО 01.02.24 09:37 Сейчас в теме
если руками в документе добавить повторного сотрудника, ругается, что уже есть такой и поле остается пустым
15. nomad_irk 76 01.02.24 09:46 Сейчас в теме
(14)Настройка количества видов времени в документе при этом какая?
Прикрепленные файлы:
16. ТатьянкаО 01.02.24 09:52 Сейчас в теме
17. nomad_irk 76 01.02.24 10:36 Сейчас в теме
(16) еще раз сравниваем отображение на форме и содержание табличной части

Чтобы получить этот результат, в пустой(новый) документ программно нужно сделать так:

НСтр = ДокументОбъект.ДанныеОВремени.Добавить();
НСтр.Сотрудник = <НужныйСотрудник>;
НСтр.ВидВремени1 = <НужныйВидВремени1>;

НСтр.ВидВремени2= <НужныйВидВремени2>;
НСтр.Часов2 = <НужноеКоличествоЧасов2>;

НСтр.ВидВремени3= <НужныйВидВремени2>;
НСтр.Часов3 = <НужноеКоличествоЧасов2>;

НСтр = ДокументОбъект.ДанныеОВремени.Добавить();
НСтр.Сотрудник = <НужныйСотрудник>;

НСтр.ВидВремени2 = <НужныйВидВремени2>;
НСтр.Часов2 = <НужноеКоличествоЧасов2>;

НСтр.ВидВремени3 = <НужныйВидВремени3>;
НСтр.Часов3 = <НужноеКоличествоЧасов3>;

НСтр = ДокументОбъект.ДанныеОВремени.Добавить();
НСтр.Сотрудник = <НужныйСотрудник>;
Показать
Прикрепленные файлы:
18. ТатьянкаО 02.02.24 13:09 Сейчас в теме
(17) а у меня не пустой, табель уже заполнен по графику и хотели обработкой добавлять дополнительный виды времени
20. nomad_irk 76 02.02.24 13:56 Сейчас в теме
(18)Значит ваша задача выбрать вторую строку по сотруднику и в ВидВремениN установить нужный ВидВремени и количество часов в ЧасовN.
Как-то так:
//Цикл по списку сотрудников
.............
МассивКорр = Результат.ДанныеОВремени.НайтиСтроки(Новый Структура("Сотрудник", СтрокаТаблицы.Сотрудник));

Если МассивКорр.Количество() > 0 Тогда

ТекСтрока = МассивКорр[1];

ТекСтрока["Часов" + Постфикс] = <НужчноеЧислоЧасов>;
ТекСтрока["ВидВремени" + Постфикс] = <НужныйВидВремени>;

Конецесли;

//КонецЦикла по списку сотрудников

...............

ДокументОбъект.ДанныеОВремени.Загрузить(Результат.ДанныеОВремени);
Показать
19. ТатьянкаО 02.02.24 13:34 Сейчас в теме
Добавить в конец списка сотрудника с новым видом времени в табель получилось, но строчки не объединяются
Оставьте свое сообщение

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