|   |   | 
| 
 | Передача параметра в функцию по условию | ☑ | ||
|---|---|---|---|---|
| 0
    
        dft2014 21.08.19✎ 17:40 | 
        УФ
 Помогите с алгоритмом! Есть таблица значений, отсортированная по "РЕГИОН". Мне надо передать (в новую функцию) подразделения в виде массива (или чего-то другого), сгруппированные по "РЕГИОНУ". Т.е. сначала должен передаться массив подразделений из региона "Восток", потом "Запад" и т.д. Как это запрограммировать? Ниже таблица значений: ПОДРАЗДЕЛЕНИЕ РЕГИОН Подразделение7 Восток Подразделение5 Восток Подразделение1 Запад Подразделение2 Север Подразделение6 Север Подразделение3 Север Подразделение4 Юг | |||
| 1
    
        Cyberhawk 21.08.19✎ 17:42 | 
        Получаешь различные значения колонки Регион.
 Далее в цикле отбор строк из ТЗ по каждому региону и накопление сопутствующих данных. | |||
| 2
    
        dft2014 21.08.19✎ 17:43 | 
        +(0) Код ниже передает последовательно по одному подразделению в функцию в качестве параметра. А мне надо передавать массив подразделений, сгруппированный по региону. Как это сделать?
 Для каждого СтрокаТЗ из ТабЗнач Цикл ТабДок = СформироватьНаСервере(СтрокаТЗ.Подразделения, Дата); КонецЦикла; | |||
| 3
    
        dft2014 21.08.19✎ 17:44 | 
        (1) Вот как это делать?     | |||
| 4
    
        hhhh 21.08.19✎ 17:50 | 
        (3)     ТабДок = СформироватьНаСервере(массивподразделений, Дата);     | |||
| 5
    
        dft2014 21.08.19✎ 17:53 | 
        (4) Это очевидно! А вот как разнести подразделения по регионам?     | |||
| 6
    
        eTmy 21.08.19✎ 17:53 | 
        Это еще очевидней)))     | |||
| 7
    
        IOANNscrp 21.08.19✎ 17:54 | 
        (3) Свернуть тз по региону, пробежаться по каждому региону и найти в исходной таблице подразделения с этим регионом, сформировать массив подразделений и передать регион
 ТабДок = СформироватьНаСервере(массивподразделений,регион, Дата); | |||
| 8
    
        hhhh 21.08.19✎ 17:57 | 
        (7) ну регион можно не передавать     | |||
| 9
    
        IOANNscrp 21.08.19✎ 17:58 | 
        (8) соглы     | |||
| 10
    
        dft2014 21.08.19✎ 18:01 | 
        Вот так пишу, но получается какая-то чушь:
 Если Объект.ТабличнаяЧасть.Количество()>0 Тогда Объект.ТабличнаяЧасть.Сортировать("Регион Возр"); СтароеЗначение = ""; ТекущееЗначение = ""; мПодразделения = Новый Массив; Для Каждого СтрокаТЧ из Объект.ТабличнаяЧасть Цикл ТекущееЗначение = СтрокаТЧ.Подразделение; Если СтароеЗначение <> ТекущееЗначение Тогда Если СтрокаТЧ > 1 тогда ТабДок = СформироватьНаСервере(мПодразделения, Дата); КонецЕсли; мПодразделения.Очистить(); КонецЕсли; мПодразделения.Добавить(СтрокаТЧ.Подразделения); ТабДок = СформироватьНаСервере(мПодразделения, Дата); СтароеЗначение = ТекущееЗначение; КонецЦикла; КонецЕсли; | |||
| 11
    
        dft2014 21.08.19✎ 20:05 | 
        Ап!     | |||
| 12
    
        Dmitry77 21.08.19✎ 21:14 | 
        Подсказка.
 1. свернуть тз по регионам. 2. воспользоваться фуркцией "НайтиСтроки" | |||
| 13
    
        Alex87r 21.08.19✎ 21:22 | 
        1. Копируешь ТЗ в новую таблицу
 2. Сворачиваешь новую ТЗ по региону. 3. Запускаешь цикл по новой таблице, используя функцию найти строки Код примерно такой Для Каждого Регион ИЗ новаяТаб Цикл МасСтрок = СтараяТЗ.НАйтиСтроки(Новый структура("регион", Регион)); ТвояНоваяФункция(масСтрок); КонецЦикла | |||
| 14
    
        dft2014 22.08.19✎ 16:52 | 
        (12), (13) СПАСИБО!!! Все получилось, ниже итоговый код:
 &НаСервере Процедура СформироватьНаСервере() ТаблЗнач = Новый ТаблицаЗначений; мПодразделения = Новый Массив; Если Объект.ТабличнаяЧасть.Количество()>0 Тогда ТаблЗнач = Объект.ТабличнаяЧасть.Выгрузить(); ТаблЗнач.Свернуть("Регион"); Для каждого СтрокаТЗ ИЗ ТаблЗнач Цикл Отбор = Новый Структура("Регион", СтрокаТЗ.Регион); мПодразделения = Объект.ТабличнаяЧасть.НайтиСтроки(Отбор); ТабДок = СформироватьНаСервере(мПодразделения, Объект.ДатаОтчета); КонецЦикла; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Сформировать(Команда) СформироватьНаСервере(); КонецПроцедуры | |||
| 15
    
        Simod 23.08.19✎ 11:26 | 
        (14) Тут еще есть что дорабатывать. И стоит вызов СформироватьНаСервере() из СформироватьНаСервере().     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |