Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Печатные формы
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
Salex
Добрые люди! Помогите пожалуйста.
Суть проблемы:
упрощенно выглядит так:
в табличный документ вывожу 2 поля рядом друг с другом "Продукция" и "Материалы" (на одно наименование продукции идет несколько наименований материалов)
решаю так: первая область имеет 2 параметра (<Продукция> и <Материалы>), следующие области присоединяю с одним параметром (<Материалы>)
Бухгалтеру нужно чтобы ячейки в столбике "Продукция" пообъединялись на количество строк в столбике "Материалы". Как это сделать - ума не приложу
Помогите!!!

Графически нужно что-то такое
___________________________________________
| Продукция1 |Материал1
| |Материал2
| |Материал3
| |Материал4
| |Материал5
| |Материал6
__________________________________________
| Продукция2 |Материал1
|
|

И ячейка с продукцией должна быть объединенной


Заранее благодарен
Salex
Табличка поехала: материалы должны быть под материалами, а ячейки под продукцией- объединиться с первой непустой
___________________________________________
| Продукция1 |Материал1
| |Материал2
| |Материал3
| |Материал4
| |Материал5
| |Материал6
__________________________________________
| Продукция2 |Материал1
|
|
Ardi
x
Salex
Цитата(Ardi @ 26.04.11, 23:35) необходимо зарегистрироваться для просмотра ссылки
Нарисуй это тупо рамками. Без реального объединения.


Это первое, что мне пришло на ум. Так и сделал сразу - не прокатило. Не пойму, что они с этим документом дальше делают, но уперлись "объедини да объедини..."

По ходу там у продукции наименование длинное, и если просто рамками делать - строчка с продукцией увеличивается и на печати некрасиво получается (это мои догадки)
Ardi
Цитата(Salex @ 27.04.11, 0:44) необходимо зарегистрироваться для просмотра ссылки
строчка с продукцией увеличивается и на печати некрасиво получается

Блин.
Salex
Все
Спать пошел, утро ночи мудренее, мож завтра кто-нить чего-нить и подскажет....
DartRomanius
Цитата(Salex @ 27.04.11, 1:01) необходимо зарегистрироваться для просмотра ссылки
Все
Спать пошел, утро ночи мудренее, мож завтра кто-нить чего-нить и подскажет....


В процедуре вывода в таблицу запоминать начальные и конечные строки для разделов
которые надо объединить (в данном случае строки и столбцы продукции).
Запоминать их скажем в таблицу значений. Потом, после вывода строчной части пройтись по таблице и объединить нужные ячейки.

ЗЫ: Насколько я помню 8-ка это позволяет, если нет с тем же успехом через скажем OLE использовать Excel, там точно можно.
А вообще изврат ИМХО. Хотя и не такое приходилось делать smile.gif
Salex
Цитата(DartRomanius @ 27.04.11, 7:35) необходимо зарегистрироваться для просмотра ссылки
В процедуре вывода в таблицу запоминать начальные и конечные строки для разделов
которые надо объединить (в данном случае строки и столбцы продукции).


и как запоминать?
вот например код:
ТабДокумент=Новый Табличный документ;
Макет = ПолучитьМакет("Макетик");
...
ОбластьСтрока=Макет.ПолучитьОбласть("Строка");

...
//???как определить текущие координаты на ТабДокументе?

Сч=1;
Для каждого СтрокаМатериалы из Материалы Цикл
   Если Сч=1 Тогда
        ОбластьСтрока.Параметры.Продукция=Продукция;
   КонецЕсли;
  
   ОбластьСтрока.Параметры.Материал=СтрокаМатериалы.Номенклатура;
   Сч=Сч+1;
   ТабДокумент.Вывести(ОбластьСтрока);
КонецЦикла;

...


В принципе я счетчиком подсчитаю сколько строк я вывел, НО как мне определить координаты перед выводом областей строк?
Batchir
А я вообще не понял сути проблемы.
Если хотите выводить все последующие материалы под продукцией, то создайте отдельную строку макета и выводите в том виде как вам надо, а не мудрите с объединением.

Обычно такие задачи делаются немного по другому алгоритму:
1. Выводится элемент верхней группировки
2. выполняется команда начала группы строк
3. Выводятся элементы нижней группировки
4. Выполняется команда конца группы строк

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

ВыборкаВерхнейГруппы = РЗ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ВерхняяГруппа");
Пока ВыборкаВерхнейГруппы.Следующий Цикл

      // заполняем параметры и выводим строку табличного документа верхней группировки

      ТабДок.НачатьАвтогруппировкуСтрок();
      ТабДок.НачатьГруппуСтрок(,Ложь); // второй параметр указывает на то будет ли по умолчанию раскрыта группировка строк
      ВыборкаНижнейГруппы = ВыборкаВерхнейГруппы.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"НижняяГруппа");
      Пока ВыборкаНижнейГруппы.Следующий Цикл

            // заполняем параметры и выводим строку табличного документа нижней группировки

      КонецЦикла;
      ТабДок.ЗакончитьГруппуСтрок();
      ТабДок.ЗакончитьАвтогруппировкуСтрок();


КонецЦикла;


Если применить к вашей задаче, то получится отчет по продукциям, а если нужно посмотреть в разрезе материалов то, достаточно будет в отчете изменить уровень группировки строк или нажать на "+" для отдельной интересующей продукции
Salex
Цитата(Batchir @ 28.04.11, 10:41) необходимо зарегистрироваться для просмотра ссылки
Обычно такие задачи делаются немного по другому алгоритму:


Уважаемые коллеги! Если бы я столкнулся с обычной задачей, я бы не выносил вопрос на обсуждение на форуме! Я считаю что эта тема нестандартная и многим могла бы быть интересной.

Цитата(Batchir @ 28.04.11, 10:41) необходимо зарегистрироваться для просмотра ссылки
А я вообще не понял сути проблемы.


Объясняю: генеральный директор моего заказчика - авторитарный тип. Он нарисовал определенный вид отчета и требует от подчиненных неукоснительного соблюдения формы. Сейчас работники получают данные из 1Ски стандартными отчетами и рисуют ему этот отчет ручками в Экселе. Заказчику легче заплатить программисту денег, чем переубедить шефа изменить форму отчета.

Цитата(Batchir @ 28.04.11, 10:41) необходимо зарегистрироваться для просмотра ссылки
Если хотите выводить все последующие материалы под продукцией
.

не хочу выводить "под продукцией", я такого не писал. Я писал:
"в табличный документ вывожу 2 поля рядом друг с другом "Продукция" и "Материалы" " - это значит 2 блока рядом друг с другом и в первом блоке требуется объединить ячейки на высоту второго блока.

Если бы не было особого требования к форме вывода, я бы с легкостью воспользовался системой компоновки данных, визуальными средствами сделал бы форму отчета и не парился...
Ardi
Область = ТабДок.Область(2,2,3,3);
Область.Объединить();


ОбластьШапкаТаблицы.Область(1,2,1,9+КоличествоКолонокПодЗаказ).Объединить();
ОбластьШапкаТаблицы.Область(1,2,1,9+КоличествоКолонокПодЗаказ).ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная);
Zaval
Упс... это уже интересно.

Предложены пути решения. Что не устраивает?
Картинку реализации результата и свои претензии - в студию!

Если продолжаем истерить - платить программисту, добро пожаловать в Стол Заказов.
Batchir
Цитата(Zaval @ 29.04.11, 23:17) необходимо зарегистрироваться для просмотра ссылки
Упс... это уже интересно.

Предложены пути решения. Что не устраивает?
Картинку реализации результата и свои претензии - в студию!

Если продолжаем истерить - платить программисту, добро пожаловать в Стол Заказов.


А ещё лучше показать сам экселевский файл, тот который делают ручками, а хотят видеть в 1С-ке, потому что их первого поста непонятно что нужно, и выглядит это именно так что хотите видеть материл под продукцией
Salex
Спасибо всем!

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

решил проблему через использование:

Область.Объединить()

а высоту вычислял используя метод:

до вывода
НачПоз=ТабДокумент.ВысотаТаблицы;

после вывода снова :
КонПоз=ТабДокумент.ВысотаТаблицы;

и потом:
ТабДокумент.Область(НачПоз,6,КонПоз,6).Объединить();


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