колонки ТЗ

1. El_Ninio 05.09.21 04:25 Сейчас в теме
Есть ТЗ несколькими колонками вот с такими наименованиями День1 День2 День3 итд. Как подставить 1,2,3 чтоб не писать все колонки. День1 это понедельник, День2 это вторник, то есть цифры означают день недели.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Kim1C 186 05.09.21 15:06 Сейчас в теме
(1)
Доступ к колонке через имя и квадратные скобки: СтрокаТаблицы["День1"]
Для пример можно использовать вот такой код:
Для Каждого СтрТаб ИЗ ТЗ Цикл
	Для НомерДняНедели = 1 По 7 Цикл 
		ИмяКолоки = "День"+Формат(НомерДняНедели,"ЧГ=");
		СтрТаб[ИмяКолоки] = 15; //Значение колонки
	КонецЦикла;
КонецЦикла;
5. El_Ninio 05.09.21 15:42 Сейчас в теме
(4) Еще вопрос. Как заполнить одну и ту же строку по индексу?

Например вот такая задача. Заполнить данные по дням недели. Если деньнедели = 1 тогда в ТЗ колонках День1 Время1 Рвботал1 добавляю данные, потом когда деньнедели =2 тогда заполняю колонки День2 Время2 Работал2 и тд до День6 не добавляя новую строку. Как должен быть алгоритм действия.
6. Kim1C 186 05.09.21 15:46 Сейчас в теме
(5)
Тогда вам надо местами циклы поменять. Т.е. сначала бегать по дням, потом по строкам:
Для НомерДняНедели = 1 По 7 Цикл 
    Для Каждого СтрТаб ИЗ ТЗ Цикл
        ИмяКолоки = "День"+Формат(НомерДняНедели,"ЧГ=");
        СтрТаб[ИмяКолоки] = 15; //Значение колонки
        ИмяКолоки = "Время"+Формат(НомерДняНедели,"ЧГ=");
        СтрТаб[ИмяКолоки] = 15; //Значение колонки
    КонецЦикла;
КонецЦикла;
Показать
7. El_Ninio 05.09.21 20:39 Сейчас в теме
(6) А если сначала добавлю например 5-6 строк, потом во втором заходе не добавляю, а по количеству строк добавляю следующие дни. Не могу разобраться. Сначала с екселя загружаю в ТЗ. Далее в цикле сравниваю строки этой ТЗ со справочниками. Типо так СтрНайти("") если истина то справочник.Работники. НайтиПоКоду.(Возрат структура) И после этого должен добавить в данныеФормыКоллекции.
8. Kim1C 186 05.09.21 21:07 Сейчас в теме
(7) не уверен, что до конца понял суть вопроса.
Делаете чтение с экселя (это и будет наша ТЗ) выше в примере. Ее обходите и добавляете в финальную таблицу строку если нужно по условию либо находите уже существующую (например по работнику) и дозаполняете ее.
9. El_Ninio 05.09.21 21:28 Сейчас в теме
(8) Получил ТЗ с екселя. Далее делаю отбор по дню недели. Получаю 5-6 строк (массив)
Для каждого эл из массив цикл
Строка = ТаблицаНаФорме.Добавить()
Данные = СопоставлениеДанных(эл) // структура с данными День1 = 1 Работник1 = Иванов Иван
ЗаполнитьЗначениеСвойств(строка, Данные);
КонецЦикла // Первый день недели закончился. Далее сюда же заходит второй день. (Вот тут у меня же стоит ТаблицаНаФорме.Добавить()) на форме при выводе идет лестницей. Во втором дне недели могут быть совсем разные данные и среду тоже итд
10. Kim1C 186 06.09.21 05:41 Сейчас в теме
(9)
Тогда в вашем случае нужно все упаковать в цикл обхода по дням недели.
Ну и в вашу процедуру СопоставлениеДанных наверное надо передавать НомерДняНедели, чтобы правильно формировать структуру итоговых данных
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("ДеньНедели");
Для НомерДняНедели = 1 По 7 Цикл 
    СтруктураПоиска.ДеньНедели = НомерДняНедели;
    Массив = ТЗ.НайтиСтроки(СтруктураПоиска);
    Для Каждого Эл ИЗ Массв Цикл
        Строка = ТаблицаНаФорме.Добавить();
        Данные = СопоставлениеДанных(Эл,НомерДняНедели);
        ЗаполнитьЗначенияСвойств(Строка,Данные);
    КонецЦикла;
КонецЦикла;
Показать
El_Ninio; +1 Ответить
11. El_Ninio 06.09.21 11:17 Сейчас в теме
12. Kim1C 186 06.09.21 13:16 Сейчас в теме
(11) Пожалуйста) Тогда отмечайте ответ чтобы закрыть вопрос на форуме)
2. t278 57 05.09.21 05:05 Сейчас в теме
ТЗ = новый ТаблицаЗначений;
Номер=1
Для каждого Стр Из ТЗ Цикл
   ИмяКолонки = "День"+Строка(Номер);
  Стр[ИмяКолонки] = 15;
Номер = Номер +1;
конецЦикла;

Показать
El_Ninio; +1 Ответить
3. El_Ninio 05.09.21 05:18 Сейчас в теме
Оставьте свое сообщение

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