Пресловутый цикл

1. TariK 03.02.24 21:46 Сейчас в теме
Всем привет!
Есть код:
ПодразделениеРодитель = "Родитель";


Для Счетчик = 1 По Ответ Цикл 
		НоваяСтрока = 
		 "|КадроваяИсторияСотрудниковСрезПоследних.Подразделение." +  ПодразделениеРодитель + " КАК Подразделение" +ПодразделениеРодитель+ ","
		+"|КадроваяИсторияСотрудниковСрезПоследних.Подразделение." +  ПодразделениеРодитель +  ".Код КАК Подразделение" +ПодразделениеРодитель+ "Код,"
		+"|КадроваяИсторияСотрудниковСрезПоследних.Подразделение." +  ПодразделениеРодитель +  ".Наименование КАК Подразделение" +ПодразделениеРодитель+ "Наименование,"; 
		
		
        Сообщить(НоваяСтрока); // 1 2 3 4 5
    КонецЦикла;
Показать


Как переписать код, что в результате было не 5 одинаковых строк как выше, а:

|	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Код КАК ПодразделениеКод,
|	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель КАК ПодразделениеРодитель,
|	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Код КАК ПодразделениеРодительКод,

|	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Наименование КАК ПодразделениеРодительНаименование,
|	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель КАК ПодразделениеРодительРодитель,
|	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Код КАК ПодразделениеРодительРодительКод,
|	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Наименование КАК ПодразделениеРодительРодительНаименование,
|	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель КАК ПодразделениеРодительРодительРодитель
|	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Код КАК ПодразделениеРодительРодительРодительКод,
|	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Наименование КАК ПодразделениеРодительРодительРодительНаименование,
Показать

и т.д. в зависимости от "Ответ"



То есть, "Родитель" прибавлялся в строке через точку столько раз, сколько переменная "Ответ".
Про запрос через точку писать не надо, знаю что страшно))) Но это будет выполняться в нерабочее время и раз в неделю.

Смысл данного запроса, вытащить столько родителей подразделений в строку табличной части, сколько есть.
По теме из базы знаний
Найденные решения
4. Said-We 04.02.24 03:48 Сейчас в теме
(1) Не пойму в чем сложность? Обычный цикл.
https://onecompiler.com/sqlite/423drapvm

(2) При использовании функции, получится цикл в цикле. Проще переменную объявить и наращивать.
стр = "";
Для... Цикл
    стр = ".родитель"+стр;
    текст = текст+"тили-тили"+ стр +"трали-вали";
КонецЦикла;
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user856012 14 03.02.24 22:25 Сейчас в теме
(1)
То есть, "Родитель" прибавлялся в строке через точку столько раз, сколько переменная "Ответ".
И в чем проблема? Всего-то, написать простейшую функцию, в которую передается переменная "Счетчик" (и, судя по приведенному образцу, строка-разделитель - или точка (при вызове до КАК), или пустая строка - после КАК):
Функция ВсеРодители(СколькоИх, СтрТочка)
   Родители = "";
   Для Колво = 1 По СколькоИх Цикл
      Родители = Родители + СтрТочка + "Родитель";
   КонецЦикла;
   Возврат Родители;
КонецФункции


и потом использовать ее приблизительно так:
НоваяСтрока = 
         "|КадроваяИсторияСотрудниковСрезПоследних.Подразделение" + ВсеРодители(Счетчик,".") + " КАК Подразделение" + ВсеРодители(Счетчик,"") + ","
        +"|КадроваяИсторияСотрудниковСрезПоследних.Подразделение" + ВсеРодители(Счетчик,".") +  ".Код КАК Подразделение" + ВсеРодители(Счетчик,"") + "Код,"
        +"|КадроваяИсторияСотрудниковСрезПоследних.Подразделение" + ВсеРодители(Счетчик,".") +  ".Наименование КАК Подразделение" + ВсеРодители(Счетчик,"") + "Наименование,"; 
5. TariK 04.02.24 10:02 Сейчас в теме
(2) Спасибо! Но получилось без вывода всей иерархии, а только самую верхнюю:
|КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель КАК ПодразделениеРодительРодительРодительРодительРодитель,|КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель.Код КАК ПодразделениеРодительРодительРодительРодительРодительКод,|КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель.Наименование КАК ПодразделениеРодительРодительРодительРодительРодительНаименование,
|КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель КАК ПодразделениеРодительРодительРодительРодительРодитель,|КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель.Код КАК ПодразделениеРодительРодительРодительРодительРодительКод,|КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель.Наименование КАК ПодразделениеРодительРодительРодительРодительРодительНаимено­вание,
|КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель КАК ПодразделениеРодительРодительРодительРодительРодитель,|КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель.Код КАК ПодразделениеРодительРодительРодительРодительРодительКод,|КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель.Наименование КАК ПодразделениеРодительРодительРодительРодительРодительНаимено­вание,
|КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель КАК ПодразделениеРодительРодительРодительРодительРодитель,|КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель.Код КАК ПодразделениеРодительРодительРодительРодительРодительКод,|КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель.Родитель.Родитель.Родитель.Родитель.Наименование КАК ПодразделениеРодительРодительРодительРодительРодительНаимено­вание,
3. Fox-trot 164 04.02.24 01:28 Сейчас в теме
рекомендую начать использовать функцию СтрЗаменить(), чтоб текст более читабельным был
6. TariK 04.02.24 10:03 Сейчас в теме
(3) хочу получить нужный код, записать его в переменную, а потом через СтрЗаменить() вставить в запрос
4. Said-We 04.02.24 03:48 Сейчас в теме
(1) Не пойму в чем сложность? Обычный цикл.
https://onecompiler.com/sqlite/423drapvm

(2) При использовании функции, получится цикл в цикле. Проще переменную объявить и наращивать.
стр = "";
Для... Цикл
    стр = ".родитель"+стр;
    текст = текст+"тили-тили"+ стр +"трали-вали";
КонецЦикла;
Прикрепленные файлы:
7. TariK 04.02.24 10:16 Сейчас в теме
(4) Спасибо! Тут ближе к теме, но почему-то в результате идет перескок с 1 родителя сразу на 3
Прикрепленные файлы:
8. TariK 04.02.24 11:40 Сейчас в теме
(4)
Разобрался. Все отлично! Спасибо за подсказку!!!
Оставьте свое сообщение

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