Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как работать с адресами ячеек таблицы?  (Прочитано 13070 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
kiser
Участник

by
Offline Offline

« : 13-07-2010 07:00 » 

Добрый день.
Возникла необходимость сформировать таблицу для печати.
Но дело в том, что нужно сначала напечатать одну колонку, а потом только рядом вторую. С построчной печатью все ясно, но она тут не подходит.
Поэтому нужно как-то запоминать адрес первой ячейки первого столбца, чтоб потом начать печать в соседнюю колонку.
Не смог в мануале найти как получить адрес текущей ячейки в таблице и как потом переместиться по нужному адресу.
Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #1 : 14-07-2010 06:37 » 

Есть в мануале
метод ПрисоединитьСекцию()      

Таблица с секциями
Вертикальные "Колонка1", "Колонка2" и тд
Горизонтальная "Строка"

Таб=СоздатьОбъект("Таблица")
...
Таб.ВывестиСекцию(("Колонка1|Строка"));
Таб.ПрисоединитьСекцию("Колонка2|Строка");
....
Таб.ПрисоединитьСекцию("КолонкаN|Строка");

Записан
kiser
Участник

by
Offline Offline

« Ответ #2 : 14-07-2010 07:12 » 

Это не то, поскольку ячейки выводятся слева направо и снизу вверх, а мне нужно сначала вывести одну колонку, состоящую из нескольких строк, потом подняться выше и вывести рядом вторую колонку
Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #3 : 14-07-2010 08:01 » 

kiser,
если сложный отчет, ты всегда можешь предварительно рассчитать значения, а потом вывести так, как удобнее
Я часто использую таблицу значений, из которой затем и произвожу печать
« Последнее редактирование: 14-07-2010 08:06 от AndyG » Записан
kiser
Участник

by
Offline Offline

« Ответ #4 : 14-07-2010 08:57 » 

Дело в том, что используются две таблицы значений, нужно сначала вывести столбец данных из одной, потом рядом из другой, все бы ничего, но количество данных в них могут быть различны чтобы как-то циклом выводить параллельно.
Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #5 : 14-07-2010 09:16 » 

может суть задачи пояснишь?
я думаю нет ничего невозможного:)
а вообще, там где 2 там и 3:)
я использовал и большее количество промежуточных ТЗ, главное результат.
Записан
kiser
Участник

by
Offline Offline

« Ответ #6 : 14-07-2010 10:09 » new

Суть: переделываю расчетники по з/п.
В одну таблицу значений заношу все начисления, во вторую все удержания по каждому сотруднику.
В расчетнике нужно в один столбец писать все начисления для сотрудника, во вторую все удержания.
Для каждого сотрудника может быть разное кол-во начислений и удержаний или не быть вовсе.
Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #7 : 14-07-2010 20:09 » 

Тоже самое я делал когдато:))))
1ТЗ - начисления
2ТЗ - удержания
3ТЗ - сводная
вот и все:)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 14-07-2010 21:42 » 

...в один столбец писать все начисления для сотрудника, во вторую все удержания.
Как верно отметил AndyG твоя задача легко сводится к одной ТЗ.
Если только по 1 цифре из каждой ТЗ, то:
1. ТЗ1.Свернуть("Сотруник","СуммаНачислений");
2. ТЗ2.Свернуть("Сотруник","СуммаУдержаний");
3. ТЗ1.НоваяКолонка("СуммаУдержаний");
4. перенести все данные из ТЗ2 в ТЗ1 (ВыбратьСтроки(), ПолучитьСтроку(), НоваяСтрока())
5. ТЗ1.Свернуть("Сотруник","СуммаНачислений,СуммаУдержаний");
6. Вывести ТЗ1 в таблицу

пп. 1 и 2 не обязательны и нужны для ускорения работы: Свернуть() для ТЗ свыше 10000 строк работает долго и время работы растет нелинейно
Записан
kiser
Участник

by
Offline Offline

« Ответ #9 : 16-07-2010 06:45 » 

1. ТЗ1.Свернуть("Сотруник","СуммаНачислений");
2. ТЗ2.Свернуть("Сотруник","СуммаУдержаний");
В том то и дело, что не нужно сворачивать, поскольку нужно подробно выводить какие у кого начисления и удержания и суммы по каждому из них.
Если б только общую сумму, тогда конечно все просто. А если у человека 5 начислений и 2 удержания, или 1 и 10, как тогда быть?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 18-07-2010 05:19 » 

Тоже ничего сложного:
1. Выгрузи в список все возможные начисления/удержания в нужном порядке, в другой список - всех сотрудников
2. Объедини таблицы
3. Добавь в таблицу поле индекса: Сотрудник+Начисление/удержание
4. Внешний цикл - по сотрудникам, внутренний - по начислениям/удержаниям
5. Получи из таблицы значение по индексу, если не нашел - значит 0
6. Присоедини секцию с суммой
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines