|
Присоединить() шапку | ☑ | ||
---|---|---|---|---|
0
PeaceDeath
15.03.13
✎
12:52
|
Всем привет!!
проблема очередной раз с присоединением прошу помочь... ОбластьШапки = Макет.ПолучитьОбласть("Шапка|ПерваяЧастьДопДеталей"); ОбластьДеталей = Макет.ПолучитьОбласть("Детали|ПерваяЧастьДопДеталей"); ОбластьДопДеталей = Макет.ПолучитьОбласть("Детали|ДеталиДоп"); ОбластьДинШап = Макет.ПолучитьОбласть("Шапка|ДеталиДоп"); ///затем идет запрос ТабДок.Очистить(); ТабДок.НачатьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьШапки); Пока ВыборкаДетали.Следующий() Цикл Для Каждого ЭлементаШапки из РезультатСтатус Цикл ПараметрШапки = Новый Структура; ПараметрШапки.Вставить("Статья", ЭлементаШапки.СтатьяЗатрат); ПараметрШапки.Вставить("Сотрудник", ЭлементаШапки.Сотрудник); Если ПараметрШапки.Сотрудник = ВыборкаДетали.Сотрудник Тогда ОбластьДинШап.Параметры.СтатьяЗатрат = СокрЛП(ПараметрШапки.Статья); ТабДок.Присоединить(ОбластьДинШап); ////ВОТ ЗДЕСЬ ТАБДОК.ПРИСОЕДИНИТЬ(ОБЛАСТЬДИНШАПКИ) Иначе КонецЕсли; КонецЦикла; Н=1; ОбластьДеталей.Параметры.Ном = Н; ОбластьДеталей.Параметры.Сотрудник = ВыборкаДетали.Сотрудник; ОбластьДеталей.Параметры.МестоНазначения = ВыборкаДетали.МестоНазначения; ОбластьДеталей.Параметры.Должность = ВыборкаДетали.Должность; ОбластьДеталей.Параметры.ДатаОтправки = Лев(ВыборкаДетали.ДатаОтправки, 10); ОбластьДеталей.Параметры.ДатаПрибытия = Лев(ВыборкаДетали.ДатаПрибытия, 10); ОбластьДеталей.Параметры.КоличествоДней = (ВыборкаДетали.ДатаПрибытия - ВыборкаДетали.ДатаОтправки)/60/60/24; ОбластьДеталей.Параметры.ЦельПоездки = ВыборкаДетали.ЦельПоездки; ТабДок.Вывести(ОбластьДеталей); Для Каждого Элемент из РезультатСтатус Цикл Пар = Новый Структура; Пар.Вставить("Сотрудник", Элемент.Сотрудник); Пар.Вставить("Статья", Элемент.СтатьяЗатрат); Пар.Вставить("Сумма", Элемент.СуммаФактическаяОборот); Если Пар.Сотрудник = ВыборкаДетали.Сотрудник Тогда ОбластьДопДеталей.Параметры.СтатьяЗатрат = СокрЛП(Пар.Статья.Name); ОбластьДинШап.Параметры.СтатьяЗатрат = СокрЛП(Пар.Статья.Name); ОбластьДопДеталей.Параметры.Сумма = Пар.Сумма; ТабДок.Присоединить(ОбластьДопДеталей); Иначе КонецЕсли; КонецЦикла; Н=Н+1; КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); |
|||
1
PeaceDeath
15.03.13
✎
12:56
|
Если закоментировать это
// Для Каждого ЭлементаШапки из РезультатСтатус Цикл // ПараметрШапки = Новый Структура; // ПараметрШапки.Вставить("Статья", ЭлементаШапки.СтатьяЗатрат); // ПараметрШапки.Вставить("Сотрудник", ЭлементаШапки.Сотрудник); //Если ПараметрШапки.Сотрудник = ВыборкаДетали.Сотрудник Тогда // ОбластьДинШап.Параметры.СтатьяЗатрат = СокрЛП(ПараметрШапки.Статья); // ТабДок.Присоединить(ОбластьДинШап); //Иначе // КонецЕсли; //КонецЦикла; то получится след. http://img13.imageshost.ru/img/2013/03/15/image_5142e3c5a5852.png То есть в коде ниже проблем быть не должно. а после того как я снимаю коммент получаю это http://img13.imageshost.ru/img/2013/03/15/image_5142e4a7f3e2e.png |
|||
2
Chikko
15.03.13
✎
12:58
|
Потому что:
Синтаксис: Присоединить(<Таблица>, <Уровень>, <ИмяГруппы>, <Открыта>) Описание: Присоединяет табличный документ к результирующему табличному документу, помещая его в следующей колонке правее самой правой выведенной колонки, начиная со строки, с которой выводился предыдущий табличный документ. Используй "вывести". |
|||
3
PeaceDeath
15.03.13
✎
13:00
|
||||
4
PeaceDeath
15.03.13
✎
13:03
|
||||
5
Chikko
15.03.13
✎
13:08
|
ой сори, не обратил внимание что там пересечение. ну так он и подцепляет к последней строке.
а что вообще получить планируется? длинный док со всеми статьями затрат? |
|||
6
cw014
15.03.13
✎
13:10
|
Пипец структурированность кода
|
|||
7
PeaceDeath
15.03.13
✎
13:14
|
(5) Да
и если нет такой статьиЗатрат у данного сотрудника то просто empty@ то есть пустую строку. |
|||
8
cw014
15.03.13
✎
13:16
|
(0) ///затем идет запрос
Где млин этот запрос? |
|||
9
PeaceDeath
15.03.13
✎
13:16
|
(8)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ДанныеПоКомандировкамОбороты.Организация, | ДанныеПоКомандировкамОбороты.Сотрудник, | ДанныеПоКомандировкамОбороты.ДатаОтправки, | ДанныеПоКомандировкамОбороты.ДатаПрибытия, | ДанныеПоКомандировкамОбороты.МестоНазначения, | ДанныеПоКомандировкамОбороты.Позиция КАК Должность, | ДанныеПоКомандировкамОбороты.ЦельПоездки, | СУММА(ДанныеПоКомандировкамОбороты.СуммаФактическаяОборот) КАК СуммаФактическаяОборот |ИЗ | РегистрНакопления.ДанныеПоКомандировкам.Обороты(&НачПериод, &КонПериод, , ) КАК ДанныеПоКомандировкамОбороты | |СГРУППИРОВАТЬ ПО | ДанныеПоКомандировкамОбороты.Сотрудник, | ДанныеПоКомандировкамОбороты.Организация, | ДанныеПоКомандировкамОбороты.ДатаОтправки, | ДанныеПоКомандировкамОбороты.ДатаПрибытия, | ДанныеПоКомандировкамОбороты.МестоНазначения, | ДанныеПоКомандировкамОбороты.Позиция, | ДанныеПоКомандировкамОбороты.ЦельПоездки"; Запрос.УстановитьПараметр("НачПериод", ЭлементыФормы.НачПериод.Значение); Запрос.УстановитьПараметр("КонПериод", ЭлементыФормы.КонПериод.Значение); Результат = Запрос.Выполнить(); РЗ = Результат.Выгрузить(); ВыборкаДетали = Результат.Выбрать(); Статья = Новый Запрос; Статья.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | СУММА(ДанныеПоКомандировкамОбороты.СуммаФактическаяОборот) КАК СуммаФактическаяОборот, | ДанныеПоКомандировкамОбороты.СтатьяЗатрат, | ДанныеПоКомандировкамОбороты.Сотрудник, | ДанныеПоКомандировкамОбороты.Организация, | ДанныеПоКомандировкамОбороты.ДатаОтправки, | ДанныеПоКомандировкамОбороты.ДатаПрибытия, | ДанныеПоКомандировкамОбороты.МестоНазначения |ИЗ | РегистрНакопления.ДанныеПоКомандировкам.Обороты(&НачПериод, &КонПериод, , ) КАК ДанныеПоКомандировкамОбороты | |СГРУППИРОВАТЬ ПО | ДанныеПоКомандировкамОбороты.Сотрудник, | ДанныеПоКомандировкамОбороты.СтатьяЗатрат, | ДанныеПоКомандировкамОбороты.Организация, | ДанныеПоКомандировкамОбороты.ДатаПрибытия, | ДанныеПоКомандировкамОбороты.ДатаОтправки, | ДанныеПоКомандировкамОбороты.МестоНазначения"; Статья.УстановитьПараметр("НачПериод", ЭлементыФормы.НачПериод.Значение); Статья.УстановитьПараметр("КонПериод", ЭлементыФормы.КонПериод.Значение); СтатьяРез = Статья.Выполнить().Выбрать(); РезультатСтатус = Статья.Выполнить().Выгрузить(); |
|||
10
cw014
15.03.13
✎
13:16
|
И что такое РезультатСтатус?
|
|||
11
cw014
15.03.13
✎
13:17
|
??? А нафига два запроса?
|
|||
12
PeaceDeath
15.03.13
✎
13:17
|
Статьи по твоему для чего! (11)
|
|||
13
PeaceDeath
15.03.13
✎
13:18
|
ну ты сам понимаешь че говоришь?
в одном значение Статьи нет, во втором нужно все кроме Статьи |
|||
14
Chikko
15.03.13
✎
13:24
|
О, де-то вчера была эта тема с запросами=)
|
|||
15
PeaceDeath
15.03.13
✎
13:25
|
(14) Да и благодаря del123 Все суммы выходят как положено!
|
|||
16
cw014
15.03.13
✎
13:32
|
(15) Самое быстрое решение - разбить на два табличных поля, по оконцове приткнуть детали к основному общим чохом
|
|||
17
PeaceDeath
15.03.13
✎
13:32
|
ну так как быть с присоединением?
Может все статьи вытащить, а потом их заполнить?? |
|||
18
Chikko
15.03.13
✎
13:33
|
Ну так эта... Сначала надо шапку прицеплять, а потом под ней троки. Тока вот могут перепутаться=)
А строка "детали" одна походу будет. Переделай знач, сразу всю область деталидоп заполняй и присоединяй. |
|||
19
PeaceDeath
15.03.13
✎
13:33
|
(16) ТОесть в коде что убирать??
или все в одной структуре сделать вы имели ввиду? |
|||
20
PeaceDeath
15.03.13
✎
13:33
|
щаз попробую!! :)
|
|||
21
cw014
15.03.13
✎
13:37
|
(19) Я имею ввиду создай переменную
ТабДокДетали = Новый ТабличныйДокумент; Заполняй паралельно с ТабДок, только в ТабДок присоединяй статьи, которых не было, а в ТабДокДетали выводи по строкам и статьям В оконцове делай ТабДок.Вывести(ТабДокДетали); |
|||
22
cw014
15.03.13
✎
13:37
|
Только контролируй, что у тебя значение совпадает с положением этой статьи затрат в шапке
|
|||
23
cw014
15.03.13
✎
13:37
|
А вообще возьми построитель отчета или СКД - там все это элементарно
|
|||
24
PeaceDeath
15.03.13
✎
13:38
|
(21) Круто!! Благодарю =)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |