|
Цикл для перебора подразделений | ☑ | ||
---|---|---|---|---|
0
batman1978
26.12.14
✎
17:42
|
Помогите пожалуйста с написанием кода
Есть список подразделений загруженный в поле выбора из справочника подразделений, теперь надо для каждого подразделения сформировать новый отчет начал с вот этого Для к = 1 по СписокПодразделений.Количество() цикл подразд = СписокПодразделений.Получить(к) ; теперь как передать значение "подразд" в настройки скд и что бы он для него сформировал макет и т.д. пока не переберет все значения подразделения ? |
|||
1
palladyi
26.12.14
✎
17:45
|
в скд не шибко силен, но вижу такой вариант: передай в параметры сразу список всех подразделений, а результаты сгруппируй по подразделениям и разнеси в разные таблички...
|
|||
2
batman1978
26.12.14
✎
17:49
|
мне надо потом результат по каждому подразделению сохранить в отдельный файл )
и он еще на диаграмме клеит их все в одну а не на каждое подразделение свою диаграмму |
|||
3
batman1978
26.12.14
✎
17:51
|
на 8.1 на диаграмме можно только 1 ресурс использовать - а у меня их 2 .. поэтому .. подскажите лучше как в форме цикл написать для перебора подразделений и передачу значения подразделения дальше ) в скд )
|
|||
4
ДенисЧ
26.12.14
✎
18:56
|
спр = Справочники.Подразделения.Выбрать();
Пока спр.Следующий() Цикл ПередатьЗначениеДальше(спр.ссылка); КОнецЦикла |
|||
5
batman1978
27.12.14
✎
12:25
|
ДенисЧ, могу уточнить что из справочника не желательно брать, у меня есть уже загруженный список и он храниться в СписокПодразделений, можете через него подсказать ?
и мне как-то полученное значение надо передать в настройку параметров СКД - что бы он сформировал отчет на каждое значение из спискаподразделений пока Цикл не переберет их все. может правильнее будет привести весь код ? что бы вам понятнее было ? |
|||
6
batman1978
27.12.14
✎
12:29
|
Процедура ПриОткрытии()
Дата1 = НачалоМесяца(ТекущаяДата()); Дата2 = ТекущаяДата()-60*60*24; если СписокПодразделений.Количество() = 0 тогда Запрос = Новый Запрос; Запрос.УстановитьПараметр("ФлагЗакрытия",Истина); Запрос.Текст = "ВЫБРАТЬ | Подразделения.Ссылка |ИЗ | Справочник.Подразделения КАК Подразделения |ГДЕ | НЕ Подразделения.Город IS NULL | И Не Подразделения.Закрыто | И Подразделения.Магазин"; Запрос.УстановитьПараметр("IS NULL", ); Запрос.УстановитьПараметр("истина", истина ); Результат = Запрос.Выполнить(); ТЗ = Результат.Выгрузить(); Список = Новый СписокЗначений; Список.ЗагрузитьЗначения(ТЗ.ВыгрузитьКолонку("Ссылка")); // ТЗ.ВыгрузитьКолонку("Ссылка") - это массив значений из колонки "Ссылка", а "ЗагрузитьЗначения" - загружает массив в список СписокПодразделений = Список; // ограничим интерактивный выбор содержимым списка "Список" конецесли; КонецПроцедуры процедура КнопкаСформироватьНажатие (Кнопка) ОтчетОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Дата1").Значение = Дата1; ОтчетОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Дата1").Использование = Истина; ОтчетОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Дата2").Значение = Дата2; ОтчетОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Дата2").Использование = Истина; ОтчетОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить(); элементотбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подразделение"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = СписокПодразделений; Для к = 1 по СписокПодразделений.Количество() цикл подразд = СписокПодразделений.Получить(к) ; //СписокПодразделений.Получить(Подразд); СхемаКомпоновкиДанных = ОтчетОбъект.получитьмакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = ОтчетОбъект.КомпоновщикНастроек.Настройки; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; ///////////////////////////////////////////////////////////////////////////////////// ВнешниеНаборыДанных = Новый Структура; // инициализация внешних наборов данных ВнешниеНаборыДанных.Вставить("ТЗСчетчикиТек",ТЗСчетчикиСКЛТек); ////////////////////////////////////////////////////////////////////////////////////// МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных, ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ДокументРезультат = Новый ТабличныйДокумент; // задаем название для определения нового окна ДокументРезультат.Очистить(); ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); ДокументРезультат.Показать(); Для каждого Рисунок из ДокументРезультат.Рисунки Цикл Рисунок.Ширина =300; КонецЦикла; КонецЦикла; конецпроцедуры |
|||
7
ilyavorobyev
27.12.14
✎
13:06
|
(6) в цикле у тебя формируется табличный документ ДокументРезультат, его и сохраняй каждый раз в файл
|
|||
8
ilyavorobyev
27.12.14
✎
13:08
|
(6) формирование его запихай в цикл, по СписокПодразделений.Количество() и в параметр скд пихай СписокПодразделений.Получить(к)
|
|||
9
Oleg_ka
27.12.14
✎
13:22
|
Вам с кетчупом?....
Для каждого ПодразделениеСсылка Из СписокПодразделений Цикл Сообщить(ПодразделениеСсылка); КонецЦикла; .... или с майонезом? Для Счетчик = 0 По СписокПодразделений.Количество()-1 Цикл Сообщить(СписокПодразделений.Получить(Счетчик)); КонецЦикла; |
|||
10
batman1978
27.12.14
✎
15:00
|
Oleg_ka - вы смотрели код который я кинул ?
давайте еще раз обьясню - 1 оварлоыва 2 укдолапрывдл 3 пдлопавы 4 адлопвда это список подразделений он уже у нас есть - я его выбрал запросом в процедуре при открытии (по нужным мне критериям) теперь этот список - надо перебрать по одному - "оварлоыва" - и сформировать отчет и потом сохранить "укдолапрывдл" и сформировать отчет и потом сохранить (в новый файл) и так с каждым отобранным а так по вашему циклу я не сформирую для каждого сфой отчет при начальных равных параметрах для каждого одинаковые или может я неправильно понимаю вас ? |
|||
11
Славен
27.12.14
✎
15:04
|
(10) сделай в скд, вынеси в группировку подразделение, при выводе в табличный документ, разбивай его по этой группировке и сохраняй как хочешь
|
|||
12
batman1978
27.12.14
✎
15:07
|
Славен
пробывал но - задача в том что полученныый результат нужно сохранить в файл и отправить подразделению - а не один общий всем так бы я вопросы не задавал сейчас ) |
|||
13
Славен
27.12.14
✎
15:15
|
(12) и что? Отловить событие вывода в тч из скд проблема? Отлавливаешь вывод и по подразделениям-группировкам разбиваешь таб документ и сохраняешь в файлЫ. Глянь рассчетный листок, как он бьется при выводе на листы, так же можно бить по подразделениям и сохранять в файлы.
|
|||
14
batman1978
27.12.14
✎
15:29
|
Славен
и что? Отловить событие вывода в тч из скд проблема? Отлавливаешь вывод и по подразделениям-группировкам разбиваешь таб документ и сохраняешь в файлЫ. |
|||
15
batman1978
27.12.14
✎
15:29
|
а можно поподробнее ?
|
|||
16
batman1978
27.12.14
✎
15:58
|
кстати идея с групировкой помогла, стал отдельный график на отдельное подразделение - теперь полученный файл бы разбивать на подразделения и сохранить в отдельный файл и отправить по почте )
|
|||
17
batman1978
27.12.14
✎
17:03
|
и все равно идея что бы формировался для каждого подразделения новый макет - осталась не решенной - может кто подскажет как ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |