|
Вид отчета | ☑ | ||
---|---|---|---|---|
0
amadeus2010
29.03.12
✎
09:58
|
Добрый день,при формировании и выводе отчета по рейсам выводится сводная таблица с раскрытыми полями,т.е можно увидеть рейсы экспедитора,его продажи.Теперь надо чтобы список был скрытым и пользователь сам выбирал какую строку ему раскрыть полностью.Как можно это сделать?
|
|||
1
Cube
29.03.12
✎
10:02
|
Для Сч = 1 По ЭлементыФормы.Результат.КоличествоУровнейГруппировокСтрок() Цикл
ЭлементыФормы.Результат.ПоказатьУровеньГруппировокСтрок(ЭлементыФормы.Результат.КоличествоУровнейГруппировокСтрок() - Сч + 1); КонецЦикла; ЭлементыФормы.Результат.ПоказатьУровеньГруппировокСтрок(0); |
|||
2
lxs
29.03.12
✎
10:03
|
(1) что помешает пользователю нажать Ctrl+Shft+"+"?
|
|||
3
lxs
29.03.12
✎
10:04
|
(0) отчет на СКД?
|
|||
4
Cube
29.03.12
✎
10:05
|
(2) На СКД не работает и это же нажимать надо...
|
|||
5
lxs
29.03.12
✎
10:05
|
Если на СКД, то играй вариантами отчета. Кому следует видеть детализацию - им свой вариант отчета (посл. закладка), кому не следует - сокращенный вариант.
|
|||
6
lxs
29.03.12
✎
10:05
|
(4) Да ты что?
|
|||
7
lxs
29.03.12
✎
10:06
|
Развернуть/свернуть группировки не работает только там, где этих группировок нет.
|
|||
8
amadeus2010
29.03.12
✎
10:06
|
Пользователь хочет чтобы при выводе отчет список был закрытым, так при большом объеме данных ему легче так увидеть проблемные рейсы с долгами.
Отчет написан через стандартный запрос |
|||
9
lxs
29.03.12
✎
10:07
|
(8) Если группировки есть, то смотри свойства поля таб.документа и играй уровнями. Что-то вроде (1).
|
|||
10
Cube
29.03.12
✎
10:08
|
(6) А ты сам попробуй. Кстати, не сработает нигде, т.к. нужно "-" жать, а не "+" :)
|
|||
11
amadeus2010
29.03.12
✎
10:09
|
Привожу процедуру формирующую отчет,подскажите что и как изменить согласно моему вопросу
Процедура КнопкаСформироватьНажатие(Кнопка=Неопределено) Экспорт ТоварыВРейсахФильтр = ""; Если ЗначениеЗаполнено(Рейс) Тогда ТоварыВРейсахФильтр = " Рейс = &Рейс И"; ТоварыВРейсахФильтр2 = "И ТоварыНаСкладахОбороты.Регистратор.Рейс = &Рейс" КонецЕсли; //ТоварыВРейсахФильтр ЭлементыФормы.ПолеТабличногоДокумента1.Очистить(); ДатаКонца = ?(ЗначениеЗаполнено(ДатаКон),КонецДня(ДатаКон), КонецДня(ОбщегоНазначения.ПолучитьРабочуюДату())); Запрос = Новый Запрос; Запрос.УстановитьПараметр("ДатаНачала",ДатаНач); Запрос.УстановитьПараметр("ДатаКонца",ДатаКонца); Запрос.УстановитьПараметр("Рейс",Рейс); Запрос.Текст = "ВЫБРАТЬ | СУММА(ЕСТЬNULL(ЭкспедиторВозвратПокупательОбороты.КоличествоОборот, 0)) КАК ВозвратОтПокупателя, | МАКСИМУМ(ВложенныйЗапрос.ПеремещениеПриход) КАК ПеремещениеПриход, | МАКСИМУМ(ВложенныйЗапрос.ПеремещениеРасход) КАК ПеремещениеРасход, | МАКСИМУМ(ВложенныйЗапрос.КоличествоНакладная) КАК КоличествоНакладная, | ЕСТЬNULL(ВложенныйЗапрос.РегистраторРейс, ЭкспедиторВозвратПокупательОбороты.Рейс) КАК Рейс, | ЕСТЬNULL(ВложенныйЗапрос.Номенклатура, ЭкспедиторВозвратПокупательОбороты.Номенклатура) КАК Номенклатура, | ЕСТЬNULL(ВложенныйЗапрос.СерияНоменклатуры, ЭкспедиторВозвратПокупательОбороты.СерияНоменклатуры) КАК СерияНоменклатуры |ИЗ | (ВЫБРАТЬ | СУММА(ВЫБОР | КОГДА ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров | ТОГДА ВЫБОР | КОГДА ТоварыНаСкладахОбороты.Регистратор.СкладПолучатель.ТипСклада = &СкладМашина | ТОГДА ТоварыНаСкладахОбороты.КоличествоПриход | ИНАЧЕ 0 | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ) КАК ПеремещениеПриход, | СУММА(ВЫБОР | КОГДА ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров | ТОГДА ВЫБОР | КОГДА ТоварыНаСкладахОбороты.Регистратор.СкладОтправитель.ТипСклада = &СкладМашина | ТОГДА ТоварыНаСкладахОбороты.КоличествоРасход | ИНАЧЕ 0 | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ) КАК ПеремещениеРасход, | СУММА(ВЫБОР | КОГДА ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг | ТОГДА ТоварыНаСкладахОбороты.КоличествоРасход | ИНАЧЕ 0 | КОНЕЦ) КАК КоличествоНакладная, | ТоварыНаСкладахОбороты.Регистратор.Рейс КАК РегистраторРейс, | ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОбороты.СерияНоменклатуры КАК СерияНоменклатуры | ИЗ | РегистрНакопления.ТоварыНаСкладах.Обороты(, , Регистратор, ) КАК ТоварыНаСкладахОбороты | ГДЕ | (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров | ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг) | И ТоварыНаСкладахОбороты.Регистратор.Рейс.Дата МЕЖДУ &ДатаНачала И &ДатаКонца | " + ТоварыВРейсахФильтр2 + " | | СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОбороты.Регистратор.Рейс, | ТоварыНаСкладахОбороты.Номенклатура, | ТоварыНаСкладахОбороты.СерияНоменклатуры) КАК ВложенныйЗапрос | ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЭкспедиторВозвратПокупатель.Обороты(, , , " + ТоварыВРейсахФильтр + " Рейс.Дата МЕЖДУ &ДатаНачала И &ДатаКонца) КАК ЭкспедиторВозвратПокупательОбороты | ПО ВложенныйЗапрос.РегистраторРейс = ЭкспедиторВозвратПокупательОбороты.Рейс | И ВложенныйЗапрос.Номенклатура = ЭкспедиторВозвратПокупательОбороты.Номенклатура | И ВложенныйЗапрос.СерияНоменклатуры = ЭкспедиторВозвратПокупательОбороты.СерияНоменклатуры | |СГРУППИРОВАТЬ ПО | ЕСТЬNULL(ВложенныйЗапрос.РегистраторРейс, ЭкспедиторВозвратПокупательОбороты.Рейс), | ЕСТЬNULL(ВложенныйЗапрос.Номенклатура, ЭкспедиторВозвратПокупательОбороты.Номенклатура), | ЕСТЬNULL(ВложенныйЗапрос.СерияНоменклатуры, ЭкспедиторВозвратПокупательОбороты.СерияНоменклатуры) |ИТОГИ | СУММА(ВозвратОтПокупателя), | СУММА(ПеремещениеПриход), | СУММА(ПеремещениеРасход), | СУММА(КоличествоНакладная) |ПО | Рейс"; Запрос.УстановитьПараметр("СкладМашина",Перечисления.ТипыСкладов.Машина); Макет = ПолучитьМакет("Макет"); ОбластьШапки = Макет.ПолучитьОбласть("Шапка"); Если ЗначениеЗаполнено(ДатаНач) или ЗначениеЗаполнено(ДатаКонца) Тогда период = ПредставлениеПериода(НачалоДня(ДатаНач),КонецДня(ДатаКонца)); Если Период <> "" Тогда Период = " за " + период; КонецЕсли; Если не значениеЗаполнено(ДатаНач) тогда Период = " на дату " + формат(КонецДня(ДатаКон),"ДЛФ=D")+" г."; конецесли; ОбластьШапки.Параметры.Период = Период; КонецЕсли; ОБластьСтроки1 = Макет.ПолучитьОбласть("Строка1"); ОБластьСтроки2 = Макет.ПолучитьОбласть("Строка2"); ОбластьПодвала = Макет.ПолучитьОбласть("Подвал"); ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОбластьШапки); Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ЭлементыФормы.ПолеТабличногоДокумента1.НачатьАвтогруппировкуСтрок(); Пока Выборка.Следующий() Цикл ОБластьСтроки1 = Макет.ПолучитьОбласть("Строка1"); ОБластьСтроки1.Параметры.Заполнить(Выборка); ОБластьСтроки1.Параметры.Колонка1 = Выборка.Рейс; ОБластьСтроки1.Параметры.Экспедитор = Выборка.Рейс.Экспедитор; ОБластьСтроки1.Параметры.Разница = ?(Выборка.КоличествоНакладная = Null, 0 , Выборка.КоличествоНакладная) + ?(Выборка.ПеремещениеРасход = Null, 0 ,Выборка.ПеремещениеРасход) - Выборка.ВозвратОтПокупателя - ?(Выборка.ПеремещениеПриход = Null, 0 ,Выборка.ПеремещениеПриход); ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОбластьСтроки1,1); Выборка2 = Выборка.Выбрать(); Пока выборка2.Следующий() Цикл ОБластьСтроки2 = Макет.ПолучитьОбласть("Строка2"); ОБластьСтроки2.Параметры.Заполнить(Выборка2); ОБластьСтроки2.Параметры.Колонка1 = Выборка2.Номенклатура; ОБластьСтроки2.Параметры.Серия = Выборка2.СерияНоменклатуры; ОБластьСтроки2.Параметры.Разница = ?(Выборка2.КоличествоНакладная = Null, 0 , Выборка2.КоличествоНакладная) +?(Выборка2.ПеремещениеРасход = Null, 0 , Выборка2.ПеремещениеРасход) - Выборка2.ВозвратОтПокупателя - ?(Выборка2.ПеремещениеПриход = Null, 0 , Выборка2.ПеремещениеПриход); ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОБластьСтроки2,2); КонецЦикла; КонецЦикла; ЭлементыФормы.ПолеТабличногоДокумента1.ЗакончитьАвтогруппировкуСтрок(); ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОбластьПодвала); КонецПроцедуры |
|||
12
Cube
29.03.12
✎
10:10
|
(8) Ну тогда:
ТабличныйДокумент (SpreadsheetDocument) НачатьГруппуСтрок (StartRowGroup) Синтаксис: НачатьГруппуСтрок(<ИмяГруппы>, <ОткрытаЛиГруппа>) Параметры: <ИмяГруппы> (необязательный) Тип: Строка. Название группы. <ОткрытаЛиГруппа> (необязательный) Тип: Булево. Определяет необходимость открытия группы. Истина - выведенная группа будет открыта; Ложь - группа будет выведена в свернутом виде. Значение по умолчанию: Истина Описание: Начинает новую группу строк. Можно создавать вложенные группы строк. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
13
lxs
29.03.12
✎
10:11
|
(10) епт, я говорил про разворачивание группировок)
|
|||
14
lxs
29.03.12
✎
10:12
|
Вообще не вижу проблемы. Читай СП.
|
|||
15
Cube
29.03.12
✎
10:12
|
Пиши так:
ЭлементыФормы.ПолеТабличногоДокумента1.ЗакончитьАвтогруппировкуСтрок(); ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОбластьПодвала); ЭлементыФормы.ПолеТабличногоДокумента1.ПоказатьУровеньГруппировокСтрок(0); |
|||
16
amadeus2010
29.03.12
✎
10:26
|
(15) спасибо за совет, все работает
|
|||
17
amadeus2010
29.03.12
✎
11:38
|
Добрый день еще раз побеспокою вас. Как сделать так чтобы из кода (11)в отчет выводилось только определенное поле Разница а не все поля?
|
|||
18
lxs
29.03.12
✎
11:41
|
жесть
|
|||
19
amadeus2010
29.03.12
✎
11:43
|
Сделал так:
ТоварыВРейсахФильтр = ""; Если ЗначениеЗаполнено(Рейс) Тогда ТоварыВРейсахФильтр = " Рейс = &Рейс И"; ТоварыВРейсахФильтр2 = "И ТоварыНаСкладахОбороты.Регистратор.Рейс = &Рейс" КонецЕсли; //ТоварыВРейсахФильтр ЭлементыФормы.ПолеТабличногоДокумента1.Очистить(); ДатаКонца = ?(ЗначениеЗаполнено(ДатаКон),КонецДня(ДатаКон), КонецДня(ОбщегоНазначения.ПолучитьРабочуюДату())); Запрос = Новый Запрос; Запрос.УстановитьПараметр("ДатаНачала",ДатаНач); Запрос.УстановитьПараметр("ДатаКонца",ДатаКонца); Запрос.УстановитьПараметр("Рейс",Рейс); Запрос.Текст = "ВЫБРАТЬ | СУММА(ЕСТЬNULL(ЭкспедиторВозвратПокупательОбороты.КоличествоОборот, 0)) КАК ВозвратОтПокупателя, | МАКСИМУМ(ВложенныйЗапрос.ПеремещениеПриход) КАК ПеремещениеПриход, | МАКСИМУМ(ВложенныйЗапрос.ПеремещениеРасход) КАК ПеремещениеРасход, | МАКСИМУМ(ВложенныйЗапрос.КоличествоНакладная) КАК КоличествоНакладная, | ЕСТЬNULL(ВложенныйЗапрос.РегистраторРейс, ЭкспедиторВозвратПокупательОбороты.Рейс) КАК Рейс, | ЕСТЬNULL(ВложенныйЗапрос.Номенклатура, ЭкспедиторВозвратПокупательОбороты.Номенклатура) КАК Номенклатура, | ЕСТЬNULL(ВложенныйЗапрос.СерияНоменклатуры, ЭкспедиторВозвратПокупательОбороты.СерияНоменклатуры) КАК СерияНоменклатуры |ИЗ | (ВЫБРАТЬ | СУММА(ВЫБОР | КОГДА ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров | ТОГДА ВЫБОР | КОГДА ТоварыНаСкладахОбороты.Регистратор.СкладПолучатель.ТипСклада = &СкладМашина | ТОГДА ТоварыНаСкладахОбороты.КоличествоПриход | ИНАЧЕ 0 | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ) КАК ПеремещениеПриход, | СУММА(ВЫБОР | КОГДА ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров | ТОГДА ВЫБОР | КОГДА ТоварыНаСкладахОбороты.Регистратор.СкладОтправитель.ТипСклада = &СкладМашина | ТОГДА ТоварыНаСкладахОбороты.КоличествоРасход | ИНАЧЕ 0 | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ) КАК ПеремещениеРасход, | СУММА(ВЫБОР | КОГДА ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг | ТОГДА ТоварыНаСкладахОбороты.КоличествоРасход | ИНАЧЕ 0 | КОНЕЦ) КАК КоличествоНакладная, | ТоварыНаСкладахОбороты.Регистратор.Рейс КАК РегистраторРейс, | ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОбороты.СерияНоменклатуры КАК СерияНоменклатуры | ИЗ | РегистрНакопления.ТоварыНаСкладах.Обороты(, , Регистратор, ) КАК ТоварыНаСкладахОбороты | ГДЕ | (ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров | ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг) | И ТоварыНаСкладахОбороты.Регистратор.Рейс.Дата МЕЖДУ &ДатаНачала И &ДатаКонца | " + ТоварыВРейсахФильтр2 + " | | СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОбороты.Регистратор.Рейс, | ТоварыНаСкладахОбороты.Номенклатура, | ТоварыНаСкладахОбороты.СерияНоменклатуры) КАК ВложенныйЗапрос | ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЭкспедиторВозвратПокупатель.Обороты(, , , " + ТоварыВРейсахФильтр + " Рейс.Дата МЕЖДУ &ДатаНачала И &ДатаКонца) КАК ЭкспедиторВозвратПокупательОбороты | ПО ВложенныйЗапрос.РегистраторРейс = ЭкспедиторВозвратПокупательОбороты.Рейс | И ВложенныйЗапрос.Номенклатура = ЭкспедиторВозвратПокупательОбороты.Номенклатура | И ВложенныйЗапрос.СерияНоменклатуры = ЭкспедиторВозвратПокупательОбороты.СерияНоменклатуры | |СГРУППИРОВАТЬ ПО | ЕСТЬNULL(ВложенныйЗапрос.РегистраторРейс, ЭкспедиторВозвратПокупательОбороты.Рейс), | ЕСТЬNULL(ВложенныйЗапрос.Номенклатура, ЭкспедиторВозвратПокупательОбороты.Номенклатура), | ЕСТЬNULL(ВложенныйЗапрос.СерияНоменклатуры, ЭкспедиторВозвратПокупательОбороты.СерияНоменклатуры) |ИТОГИ | СУММА(ВозвратОтПокупателя), | СУММА(ПеремещениеПриход), | СУММА(ПеремещениеРасход), | СУММА(КоличествоНакладная) |ПО | Рейс"; Запрос.УстановитьПараметр("СкладМашина",Перечисления.ТипыСкладов.Машина); Макет = ПолучитьМакет("Макет"); ОбластьШапки = Макет.ПолучитьОбласть("Шапка"); Если ЗначениеЗаполнено(ДатаНач) или ЗначениеЗаполнено(ДатаКонца) Тогда период = ПредставлениеПериода(НачалоДня(ДатаНач),КонецДня(ДатаКонца)); Если Период <> "" Тогда Период = " за " + период; КонецЕсли; Если не значениеЗаполнено(ДатаНач) тогда Период = " на дату " + формат(КонецДня(ДатаКон),"ДЛФ=D")+" г."; конецесли; ОбластьШапки.Параметры.Период = Период; КонецЕсли; ОБластьСтроки1 = Макет.ПолучитьОбласть("Строка1"); ОБластьСтроки2 = Макет.ПолучитьОбласть("Строка2"); ОбластьПодвала = Макет.ПолучитьОбласть("Подвал"); ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОбластьШапки); Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ЭлементыФормы.ПолеТабличногоДокумента1.НачатьАвтогруппировкуСтрок(); Пока Выборка.Следующий() Цикл ОБластьСтроки1 = Макет.ПолучитьОбласть("Строка1"); ОБластьСтроки1.Параметры.Заполнить(Выборка); ОБластьСтроки1.Параметры.Колонка1 = Выборка.Рейс; ОБластьСтроки1.Параметры.Экспедитор = Выборка.Рейс.Экспедитор; ОБластьСтроки1.Параметры.Разница = ?(Выборка.КоличествоНакладная = Null, 0 , Выборка.КоличествоНакладная) + ?(Выборка.ПеремещениеРасход = Null, 0 ,Выборка.ПеремещениеРасход) - Выборка.ВозвратОтПокупателя - ?(Выборка.ПеремещениеПриход = Null, 0 ,Выборка.ПеремещениеПриход); //ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОбластьСтроки1,1); КонецЦикла; ЭлементыФормы.ПолеТабличногоДокумента1.ЗакончитьАвтогруппировкуСтрок(); ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОБластьСтроки1.Параметры.Разница); ЭлементыФормы.ПолеТабличногоДокумента1.ПоказатьУровеньГруппировокСтрок(0); Выдает ошибку {Отчет.ОтчетПоРейсам.Форма.ФормаОтчета(263)}: Ошибка при вызове метода контекста (Вывести): Несоответствие типов (параметр номер '1') ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(ОБластьСтроки1.Параметры.Разница); |
|||
20
lxs
29.03.12
✎
12:13
|
кури СП, е-мое!!! Как таких допускают к конфигуратору...
|
|||
21
lxs
29.03.12
✎
12:14
|
Сделай второй макет, удали в нем ненужные колонки, в коде убери заполнение тех параметров, которых в макете больше не существует и не пиши больше такого бреда, как в (19). Хоть немного почитай Простые примеры разработки что ли.
|
|||
22
lxs
29.03.12
✎
12:15
|
И хоть немного научись думать головой
|
|||
23
amadeus2010
29.03.12
✎
12:27
|
Уже сделал через добавление элемента Флажок на форму отчета.Если Флажок Истина то отбирается поле Разница. Всем спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |