Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Динамически выводимые колонки в отчет 7.7 (http://forums.kuban.ru/f1040/dinamicheski_vyvodimye_kolonki_v_otchet_7_7_a-3233391.html)

alex55 28.10.2012 10:43

Динамически выводимые колонки в отчет 7.7
 
Задача вроде простая но не как не складывается.
Вопрос: не знаю как совместить динамически выводимую шапку с динамически выводимыми строками отчета,чтобы строки попадали в нужный столбец только что сформированной шапки или одновременно с ней.
Пример задачи:
1.Априори не известно какой период выберит пользователь, но точно не меньше месяца , а то и двух и более.
2.Нужно собрать за выбранный период доки продажи в шапке которых, числится дата окончания отсрочки оплаты, ну и сумма дока (оплачен не оплачен этот док - эта часть уже реализована).
3.Собрать все эти даты, все оставшиеся задолженности опять же подокументно, сгруппировать в недели и вывести в отчет.
4.Отчет состоит из следущих колонок:
Динамически сформированные колонки за каждую дату в выбранном диапазоне сгруппированные по неделям, в строках которых напротив каждого дока сгруппированная (за неделю) сумма долга.
Ну и будет что то вроде - на 41 неделе ожидаемая оплата 10р,
на 42 - 100р. ну и так далее в зависимости от выбранного диапазона. Как это реализовать??? Всем заранее спасибо.

Reaper 28.10.2012 10:48

В конфигураторе реализовать. Чего не получается то? Шахматку смотрел уже?

alex55 28.10.2012 10:53

нет пошел смотреть

VZ 28.10.2012 12:13

0-alex55 > Вот для ЗиКи примеры:
[url]http://1c.proclub.ru/modules/mydownloads/personal.php?cid=24&lid=5048[/url]
[url]http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=5616[/url]
В первой обработке: столбцы по месяцам (в зависимости от периода выборки), во второй - по видам расчета, которые применялись к сотруднику.

qweqwe123123 28.10.2012 21:37

при обходе столбцов сравнивем дату в нашем доке с датой столбца и присваивать переменной, которая выводится в ячейке, 0 или значение из дока. выводим ячейку.

qweqwe123123 28.10.2012 21:38

второй вариант.
пихаем все цифры сначала в ТЗ. затем обходим ТЗ и выводим отчет.

alex55 31.10.2012 09:05

Приветствую всех. Огромное спасибо за дельные советы.
Решил воспользоваться советом (4), но застрял на поиске значения по координатам ячейки макета.

ИсхТабл = СоздатьОбъект("Таблица");
ИсхТабл.ИсходнаяТаблица("Таблица");
затем идет цикл, вывожу шапку отечета в которой есть дата (одна колонка, одна дата).
ИсхТабл.ПрисоединитьСекцию("Шапка|Секция_ДатаДиапазона");

и вот место где застрял пытаюсь определить значение
ячейки только, что выведено диапазона:
нужно обойти 3 строку и P колонок в зависимости от кол-ва дней:
вот исходник, но

Для Р=1 По КоличесвтоДней Цикл
НачКоорд = 10 + Р;
Адр="R3"+"C"+Строка(НачКоорд);
ЗначЯч=ИсхТабл.ЗначениеТекущейЯчейки(Адр);
Сообщить(""+Адр+" значение: "+ЗначЯч);
КонецЦикла;

ЗначЯч - выводит пустое значение, не знаю, что делать. Где не прав?????

USSR 31.10.2012 09:16

(6)Зачем считать ячейки. Проще всего использовать в цикле "ПрисоединитьСекцию"

user1C 31.10.2012 09:23

(6)
если так хочется ЗначениеТекущейЯчейки, то в жкк есть

[b]Замечание.[/b] Для того, чтобы иметь доступ к этому методу, необходимо, чтобы переменная, содержащая таблицу, была объявлена как переменная моду*ля, а не локальная переменная процедуры. В этом случае во всех процеду*рах программного модуля вы сможете использовать данный метод и, на основании значения текущей ячейки, формировать, например, более под*робные отчеты.

alex55 31.10.2012 11:37

(7) Вывожу шапку динамически с датами
а считаю для того, чтобы сравнить дату только что выведенной шапки с датой текущего документа и выкинуть в нужную колонку оставшуюся сумму долга.

alex55 31.10.2012 11:46

(8) объявил переменную "ИсхТабл" и не только ее как переменную модуля результат 0.

user1C 31.10.2012 12:04

(10)
для чего нужен этот метод прочитай в сп
если нужно узнать, что выведено в ячейке по нужному адресу обычно пользуют метод+атрибут таблицы Область(..).Текст

Sasha 31.10.2012 12:06

(9)Используй список значений. Заноси все даты из шапки в список на этапе вывода шапки.
Далее дату документа ищешь в списке. Номер позиции в списке плюс число начальных нединамических колонок и будет искомой колонкой.

alex55 31.10.2012 12:10

Разобрался ! Правильно будет так:
Для Р=1 По КоличесвтоДней Цикл
НачКоорд = 10 + Р;
Адр="R3"+"C"+Строка(НачКоорд);
ЗначЯч=ИсхТабл.Область(Адр);
Сообщить(""+Адр+" значение: "+ЗначЯч.Текст);
КонецЦикла;

тогда "ЗначЯч.Текст" выводит значение ячейки!! Всем спасибо!!

alex55 31.10.2012 12:12

(12) тоже вариант сейчас попробую!!!

alex55 31.10.2012 13:48

Ха Вот прикол, а как теперь установить в нужную ячейку свое значение? Наверное тоже через ЗначЯч=ИсхТабл.Область(Адр)???
или каки други вариаты есть????

DeiMos 31.10.2012 18:18

15-alex55 > В ячейке поставь тип "Выражение". Заполни её выражением "ТраЛяЛя".
Перед ПрисоединитьСекцию() - переменой ТраЛяЛя присваивай что тебе нужно.

USSR 31.10.2012 18:25

Уже вроде все разжевали ) Читай (16) и делай так. Забудь ты про эти ячейки. "ПрисоединитьСекцмю()" ))

qweqwe123123 31.10.2012 18:45

Для Р=НачДата По Кондата Цикл
Если Р = МойДок.ДатаДок Тогда
ЗначениеВЯчейкеМакета = Док.НужноеЗначение;
Иначе
ЗначениеВЯчейкеМакета = "";
КонецЕсли;
Если Р = НачДата Тогда
ИсхТабл.ВывестиСекцию("СтрокаМоегоМакета|
КолонкаМоегоМакета");
Иначе
ИсхТабл.ПрисоединитьСекцию("СтрокаМоегоМакета|
КолонкаМоегоМакета");
КонецЕсли;
КонецЦикла;

USSR 31.10.2012 19:09

(18)Обычно еще проще. Сначала выводится основная секция, содержащая некий объект учета (Покупатель, товар, ...), а потом в цикле по периодам (дни, недели, месяцы,...) присоединяется секция со значением требуемого ресурса. То есть условие Если Р = МойДок.ДатаДок будет лишним

qweqwe123123 31.10.2012 19:29

19-USSR > это дело вкуса. вдруг попадётся документ в выборке, который вообще в отчет не должен попадать :-))

Reaper 31.10.2012 19:57

(20) Попробуй как нибудь попрограммировать целенаправленно, а не наугад. Некоторым, мне например, нравится.

Чучундер 31.10.2012 20:05

(0) уже все есть. (Гагарин) Шахматка по долгам
.
очередная мелкая полезняшка: Раскладка долгов по контрагентам в шахматку по периодам, с разделением долгов на текущие и просроченные. Возможность задавать произвольную шкалу периодов.
.
Отчет выполнен в привычном виде для типовой конфигурации "Торговля и Склад". Включены возможности штатных механизмов: настройка/обновить, множественный фильтр и пр. Особо отличается от "аналогов" возможностью и простотой задания шкалы долгов. В упрощенном виде позволяет получить состав текущих и просроченных долгов. В развернутом виде - можно детализировать до кредитного документа (образовавшего долг) с раскладкой периодов с любой подробностью.
.
[url]http://infostart.ru/upload/iblock/851/s7.png[/url]
.
[url]http://infostart.ru/upload/iblock/ff9/s0.png[/url]
.
[url]http://infostart.ru/public/71643/[/url]

Чучундер 31.10.2012 20:06

[img]http://infostart.ru/upload/iblock/851/s7.png[/img]
[img]http://infostart.ru/upload/iblock/ff9/s0.png[/img]

Чучундер 31.10.2012 20:10

возможно пригодится
.
1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Альтернативный вариант типового графика платежей в новой "обертке" с некоторыми упрощениями: позволяет видеть долги в привычном для бухгалтера/менеджера календаре-ежедневнике...
.
... график платежей (облегченная версия) учитывает только "реализации" с отсрочкой платежа;
... два режима формирования: истинный и накопительный:
- истинный: отвечает на вопрос "какую сумму платежа ожидаем в данный день?";
- накопительный: отвечает на вопрос "какую сумму платежа ожидаем в данный день при условии если клиент продинамит предыдущую запланированную оплату?"
... сложновато? а кто обещал, что будет легко?
поясню на примере: сегодня, 29 августа, и типа
звонит клиент и говорит, "...слышь, Петрович, я у тебя там на отсрочке платежа сижу в 21 день, так вот у мну сейчас денег нет - товар в грузии застрял из-за [filolog]сцуко[/filolog] Сцукашвили... и долго не будет, поэтому все что я тебе _должен буду платить по отсрочке - ты на эти деньги не рассчитывай, я все тебе прощаю ;-), заплатить смогу только не раньше середины октября - ты мне можешь сказать, сколько я буду должен заплатить, ну, например, 25 октября?"... я смело отвечаю: могу! жмакаю в октябрь и смотрю 2 цифры.. агамс... если будешь платить 25 октября - то придется проплатить 13 лимонов + 3 лимона того, что уже просрачил на сегодня.. итого 16 лимонов... проценты за просрачку я с тебя не возьму - проставишься баней и девочками... ок? и все путем...
.
[img]http://infostart.ru/upload/iblock/63e/2008-09-01_203423.jpg[/img]
[img]http://infostart.ru/upload/iblock/3b0/2008-08-29__002.jpg[/img]
.
[url]http://infostart.ru/public/16293/[/url]

DeiMos 31.10.2012 20:14

Предлагаю забанить Чучундера НАВСЕГДА.

По причинам:
1) Развращает своими разработками юные неокрепшие мозги типа (0);
2) Скрытая реклама детектед;
3) И ваще он небритый и наглый.

alex55 02.11.2012 09:45

НУ КРАСАВА!!! Вау!!!

alex55 02.11.2012 09:47

(22-24)КРАСАВА!!!


Текущее время: 14:11. Часовой пояс GMT +3.