Перейти к содержимому

Фотография

Работа с таблицами в 1С7реализация 2-х колонок на одной странице


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 15

#1
-Zen2004-

-Zen2004-
  • Завсегдатай
  • 136 сообщений
Имеется большая таблица как мне построить эту таблицу в две колонки на одной странице.
Приблизительно так.
сейчас а надо
-------- начало страницы|-----------------------------
|1.Товар | |1.Товар |4.Товар
|2.Товар | |2.Товар |5.Товар
|3.Товар | |3.Товар |6.Товар
-------- конец страницы-|------------------------------
|4.Товар | |7.Товар
|5.Товар | |8.Товар
|6.Товар |
|7.Товар |

Подскажите как сие реализовать если можно примером.
  • 0

#2
}I{EHbKA

}I{EHbKA
  • В доску свой
  • 2 658 сообщений
немного непонял

тебе надо две табличных части в документе ?
  • 0

#3
makfromkz

makfromkz
  • Свой человек
  • 587 сообщений
Наверное ему надо несколько колонок(3) в выходной таблице
преобразовать в 2 колонки, не трогая код обработки\отчета\печати дока

решение1:
все перетащить в Ексель и там ручками

решение 2:
1)прочитать mxl-таблицу
2) подсчитать число ячеек с инфо (непустых) методом Область(i,j).Текст
3)вывести в 2 колонки
цикл чтения внутренний по строкам, внешний по столбцам
внутри цикл в цикле вывода: внешний по строкам, внутренний по столбцам от 1 до 2

и все
  • 0

#4
-Zen2004-

-Zen2004-
  • Завсегдатай
  • 136 сообщений
Немного не так вы меня понели , мой пример просто отобразился не правильно.
обычно в 1с отчет идет вниз перескакивая на слудуюшую страницу. дапустим вывести цикл от 1 до 100 а мне нужно чтоб на одной стронице было две колонки тоесть доходит допусти строчка 50 до конца страницы она должна не переходить на следующуюю страницу а во второй столбец на этой же странице.
Ели можно примером.
  • 0

#5
-Zen2004-

-Zen2004-
  • Завсегдатай
  • 136 сообщений

Немного не так вы меня понели , мой пример просто отобразился не правильно.
обычно в 1с отчет идет вниз перескакивая на слудуюшую страницу. дапустим вывести цикл от 1 до 100 а мне нужно чтоб на одной стронице было две колонки тоесть доходит допусти строчка 50 до конца страницы она должна не переходить на следующуюю страницу а во второй столбец на этой же странице.
Ели можно примером.

И таблицу я не читаю из mxl файла а создаю сам.
Вообшем обычный отчет.
Хотя я может неправильно понел.
  • 0

#6
Вини

Вини
  • В доску свой
  • 2 542 сообщений
Если КолСтрок <50
Тогда Таб. ВывестиСекцию("Столбец1")
Иначе
Таб.ВывестиСекцию("Столбец2")
КонецЕсли
  • 0

#7
tooshiba

tooshiba
  • Постоялец
  • 378 сообщений
Определяешь сколько тебе надо строк НС на странице (в данном случае НС=50)
Затем делишь общее колво строк ОКС(например ОКС =120) на НС , получаешь количество колонок в твоей таблице(нет ограничений на колво колонок)
создаешь ТЗ(Таблицу значений) вида (для понимания, можно ограничиться НС и ОКС)
001|051|101
002|052|102
003|053|103
......|......|......
......|......|......
......|......|120
050|100|
Потом цикл по этой ТЗ по строкам i
внутри цикл ТЗ по столбцам j
Знач = ТЗ (i,j)
Если первый столбец тогда
Таб. ВывестиСекцию("Знач")
иначе
Таб. ПрисоединитьСекцию("Знач")

все.

Сообщение отредактировал tooshiba: 20.02.2006, 00:27:02

  • 0

#8
adk

adk
  • Гость
  • 20 сообщений

Определяешь сколько тебе надо строк НС на странице (в данном случае НС=50)
Затем делишь общее колво строк ОКС(например ОКС =120) на НС , получаешь количество колонок в твоей таблице(нет ограничений на колво колонок)
создаешь ТЗ(Таблицу значений) вида (для понимания, можно ограничиться НС и ОКС)
001|051|101
002|052|102
003|053|103
......|......|......
......|......|......
......|......|120
050|100|
Потом цикл по этой ТЗ по строкам i
внутри цикл ТЗ по столбцам j
Знач = ТЗ (i,j)
Если первый столбец тогда
Таб. ВывестиСекцию("Знач")
иначе
Таб. ПрисоединитьСекцию("Знач")

все.

сам-то понял чо написал?))
  • 0

#9
Вини

Вини
  • В доску свой
  • 2 542 сообщений


Определяешь сколько тебе надо строк НС на странице (в данном случае НС=50)
Затем делишь общее колво строк ОКС(например ОКС =120) на НС , получаешь количество колонок в твоей таблице(нет ограничений на колво колонок)
создаешь ТЗ(Таблицу значений) вида (для понимания, можно ограничиться НС и ОКС)
001|051|101
002|052|102
003|053|103
......|......|......
......|......|......
......|......|120
050|100|
Потом цикл по этой ТЗ по строкам i
внутри цикл ТЗ по столбцам j
Знач = ТЗ (i,j)
Если первый столбец тогда
Таб. ВывестиСекцию("Знач")
иначе
Таб. ПрисоединитьСекцию("Знач")

все.

сам-то понял чо написал?))


Лично я 100% понял что он хотел сказать
  • 0

#10
tooshiba

tooshiba
  • Постоялец
  • 378 сообщений
adk мыслить надо аналитически =)
  • 0

#11
Вини

Вини
  • В доску свой
  • 2 542 сообщений
Теперь я туплю ... Почти закончил общепит под станд. конфу Бухии 7,7 а вот загвоздка теперь...
В общем есть горизонтальные секции "Шапка" (ну тут понятно шапка она и в африке шапка), "Блюдо" (Наименование блюда, например шашлык), "Продукты" (состав блюда - подчиненный справочник, напр. в данном случае мясо, лук, уксус), "ИтогПоБлюду" (сколько чего там туда сюда) и сам "итог". Так вот, Блюдо, Продукты и ИтогПоБлюду сами по себе узкие и надо бы чтоб как бы оно то того, во вторую колонку перемещало а после уж и на вторую страничку.
Думаю мож вертикальную теперь сделать. В общем свежую голову надо.
З.Ы.
Таб.ВывестиСекцию("Шапка");
СуммаИТ = 0;
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Таб.ВывестиСекцию("Блюдо");
СписокПродуктов.ИспользоватьВладельца(Блюда);
СписокПродуктов.ВыбратьЭлементы();
Пока СписокПродуктов.ПолучитьЭлемент() > 0 Цикл
КоличПрод =0;
СуммаПрод = 0;
Продукт=СписокПродуктов.ТекущийЭлемент().Продукты;
ОстатокПрод = Ит.СКД("201",3,,Продукт);
Колво = СписокПродуктов.ТекущийЭлемент().Количество;
КоличПрод = Колво*Количество;
Если КоличПрод > ОстатокПрод Тогда
Сообщить("Внимание! Недостаточно продукта "+Продукт+"Нехватает "+(КоличПрод-ОстатокПрод));
СуммаПрод = 0;
Иначе
ЦенаПрод = Ит.СКД("201",,,Продукт)/ОстатокПрод;
СуммаПрод = КоличПрод*ЦенаПрод;
КонецЕсли;
Таб.ВывестиСекцию("Продукты");
Сумма = Сумма + СуммаПрод;
КонецЦикла;
Цена = СуммаПрод/Количество;
СуммаИТ = СуммаИТ + Сумма;
Таб.ВывестиСекцию("ИтогБлюдо");


КонецЦикла;
Таб.ВывестиСекцию("Итог");
  • 0

#12
tooshiba

tooshiba
  • Постоялец
  • 378 сообщений
Используй кроме горизонтальных секций еще и вертикальные
Таб.ВывестиСекцию("Блюдо|Верт1");
...
Таб.ПрисоединитьСекцию("Продукты|ВЕРТ2");
...
Таб.ПрисоединитьСекцию("ИтогБлюдо|Верт3");
  • 0

#13
Вини

Вини
  • В доску свой
  • 2 542 сообщений
Как просчитать? Ведь на 1 блюдо может уходить и 1 продукт и 20??
  • 0

#14
tooshiba

tooshiba
  • Постоялец
  • 378 сообщений
Сколько максимум столбцов помещается на страницу???
Если 5 столбцов, тогда в цикле ставишь счетчик на эти пять стобцов, когда он переваливает значение 5, тогда создаешь и заполняешь новую страницу.
  • 0

#15
Вини

Вини
  • В доску свой
  • 2 542 сообщений
2 столбца
  • 0

#16
Вини

Вини
  • В доску свой
  • 2 542 сообщений
Чета я опять сел за эту проблему, опять уперся в точку.
По идее надо СоздатьОбъект ТЗ, но!
Как быть ведь она (ТЗ) должна содержать Блюдо, Продукт, ЦенуПродукта, КоличествоПродукта, КоличествоБлюда. Выходит что Блюдо 1 а Продуктов куча. А свернуть ТЗ по Блюду не получица, веть продукт не числожить.
  • 0


Количество пользователей, читающих эту тему: 1

пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.