Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/10: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Denzo
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 64
1

Печать в несколько колонок

15.06.2015, 22:38. Просмотров 1995. Ответов 11
Метки нет (Все метки)

Хочу разобраться как напечатать выбранные элементы справочника через подбор в несколько колонок. На примере печати ценников, но проблема в том что каждый элемент справочника имеет табличную часть с данными. Из-за этого ничего не получается.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Функция ПечатьЦенника() Экспорт
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "Печать обложек";
    Макет = ПолучитьМакет("Обложка_DV1");
    ОбластьОбложки = Макет.ПолучитьОбласть("Строка|Столбец");
    ТекСтолбец = 0;
    ТекСтрока  = 0;
    
    Для Каждого СтрокаТаблицы Из Товары Цикл
        ОбластьОбложки.Параметры.Заполнить(СтрокаТаблицы);
        ОбластьОбложки.Параметры.Наименование = СтрокаТаблицы.НаименованиеТовары.Наименование;
        ОбластьШапки = Макет.ПолучитьОбласть("Содержание");
        Для каждого Стр из СтрокаТаблицы.НаименованиеТовары.СодержаниеКассеты цикл
    ОбластьОбложки.Параметры.Заполнить(Стр);
          КонецЦикла;
    Если ТекСтолбец = 0 Тогда           
        ТабДокумент.Вывести(ОбластьОбложки);
    Иначе
        ТабДокумент.Присоединить(ОбластьОбложки);
    КонецЕсли;
ТекСтолбец = ТекСтолбец + 1;
Если ТекСтолбец = 5 Тогда
    ТекСтрока  = ТекСтрока + 1;
    ТекСтолбец = 0;
КонецЕсли;
Если ТекСтрока = 3 Тогда
    ТекСтрока = 0;
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
    КонецЦикла;
    
 
    ТабДокумент.ТолькоПросмотр = Истина;
 
    Возврат ТабДокумент;
 
КонецФункции // ПечатьЦенника()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2015, 22:38
Ответы с готовыми решениями:

Кнопка Печать на форме Печать документов
в 1С v8.2 Управление производственным предприятием на форму "Печать документов"...

Группировка колонок ТЗ
Добрый день нужна помошь. Есть таблица из 3 значений Цена,Количество,вес. И...

Группировка колонок в отчете
Доброго дня! Пишу отчет по жалобам, задача сделать группировку по...

Добавление колонок в цикле
добавление колонок в цикле Для х=0 По сч-1 Цикл Колонка = "к"+х;...

Авто. заполнение колонок
Подскажите пожалуйста. Есть справочник Номенклатура, как сделать при заполнении...

11
Dethmontt
Модератор
Эксперт 1С
2617 / 2417 / 407
Регистрация: 10.03.2011
Сообщений: 8,595
Записей в блоге: 1
Завершенные тесты: 1
15.06.2015, 23:04 2
Цитата Сообщение от Denzo Посмотреть сообщение
Для Каждого СтрокаТаблицы Из Товары Цикл
* * * * ОбластьОбложки.Параметры.Заполнить(СтрокаТаблицы);
Цитата Сообщение от Denzo Посмотреть сообщение
Для каждого Стр из СтрокаТаблицы.НаименованиеТовары.СодержаниеКассеты цикл
* * ОбластьОбложки.Параметры.Заполнить(Стр);
Так ты уже определись откуда тебе заполнять то надо...
0
Denzo
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 64
16.06.2015, 08:12  [ТС] 3
Не первый цикл перебирает форму списка с выбранными элементами справочника, а второй цикл делает перебор табличной части выбранного элемента справочника. При таком коде получается так
Печать в несколько колонок
,
Если делать так:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "Печать обложек";
    Макет = ПолучитьМакет("Обложка_DV1");
    //ОбластьОбложки = Макет.ПолучитьОбласть("Строка|Столбец");
    ТекСтолбец = 0;
    ТекСтрока  = 0;
    ОбластьШапки1 = Макет.ПолучитьОбласть("Шапка");
 
    Для Каждого СтрокаТаблицы Из Товары Цикл
        ОбластьШапки1.Параметры.Заполнить(СтрокаТаблицы);
        ОбластьШапки1.Параметры.Наименование = СтрокаТаблицы.НаименованиеТовары.Наименование;
        ТабДокумент.Вывести(ОбластьШапки1);
        ОбластьШапки = Макет.ПолучитьОбласть("Содержание");
        Для каждого Стр из СтрокаТаблицы.НаименованиеТовары.СодержаниеКассеты цикл
    ОбластьШапки.Параметры.Заполнить(Стр);
        ТабДокумент.Вывести(ОбластьШапки);
        ТабДокумент.
 
          КонецЦикла;
    Если ТекСтолбец = 0 Тогда           
        //ТабДокумент.Вывести(ОбластьШапки1);
        
    Иначе
        //ТабДокумент.Присоединить(ОбластьШапки1);
    КонецЕсли;
ТекСтолбец = ТекСтолбец + 1;
Если ТекСтолбец = 5 Тогда
    ТекСтрока  = ТекСтрока + 1;
    ТекСтолбец = 0;
КонецЕсли;
Если ТекСтрока = 3 Тогда
    ТекСтрока = 0;
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
    КонецЦикла;
, то тогда будет вот так,
Печать в несколько колонок
. Вообщем хочу чтобы получилось как в первом фото
0
Dethmontt
Модератор
Эксперт 1С
2617 / 2417 / 407
Регистрация: 10.03.2011
Сообщений: 8,595
Записей в блоге: 1
Завершенные тесты: 1
16.06.2015, 11:16 4
Denzo, Ты в "Тетрис" хоть раз играл?

Добавлено через 3 минуты
ТабДок.Вывести(ЧтоВыводить) - выводит все из параметра ЧтоВыводить(ТабДок) в низ документа
ТабДок.Присоеденить(ЧтоПрисоеденить) - присоединяет справа все из параметра ЧтоВыводить(ТабДок) к уже выведенным данным
0
Denzo
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 64
16.06.2015, 22:02  [ТС] 5
Ни чего не получается, вся загвоздка в ТЧ справочника.
Печать в несколько колонок
0
holostyak
0 / 0 / 0
Регистрация: 16.06.2015
Сообщений: 1
16.06.2015, 22:55 6
собирай в массив массивы областей для каждого элемента, включая табличные части. и выводи это.
загляни в типовые, там так выводят ценники и этикетки
0
Dethmontt
Модератор
Эксперт 1С
2617 / 2417 / 407
Регистрация: 10.03.2011
Сообщений: 8,595
Записей в блоге: 1
Завершенные тесты: 1
17.06.2015, 00:14 7
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ТабДок = Новый ТабДок;
ТабДоквывода = Новый ТабДок;
 
Проход = 1;
Цикл По шапкам 
   ТабДоквывода.Вывести(Шапка);
   Цикл По ТЧ 
        ТабДоквывода.Вывести(Содержание);
   КонецЦикла;
 
Если Проход = 1 Тогда
   ТабДок.Вывести(ТабДоквывода);
Иначе ТабДок.Присоединить(ТабДоквывода);
КонецЕсли;
ТабДоквывода.Очистить();
Проход = Проход + 1;
КонецЦикла;
0
Denzo
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 64
18.06.2015, 19:22  [ТС] 8
Короче, не выходит у меня каменный цветок, видимо не судьба! Спасибо за отклики!!!!
0
Dethmontt
Модератор
Эксперт 1С
2617 / 2417 / 407
Регистрация: 10.03.2011
Сообщений: 8,595
Записей в блоге: 1
Завершенные тесты: 1
18.06.2015, 21:08 9
Эх... все за вас делать надо, думать не хотите вообще...

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ТабДокумент = Новый ТабличныйДокумент;
ТабДокВывода = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "Печать обложек";
Макет = ПолучитьМакет("Обложка_DV1");
   
Проход = 1;
ОбластьШапки  = Макет.ПолучитьОбласть("Шапка");
ОбластьСтроки = Макет.ПолучитьОбласть("Содержание");
 
 Для Каждого СтрокаТаблицы Из Товары Цикл
    ОбластьШапки.Параметры.Заполнить(СтрокаТаблицы);
    ОбластьШапки.Параметры.Наименование = СтрокаТаблицы.НаименованиеТовары.Наименование;
    ТабДокВывода.Вывести(ОбластьШапки);
    
    Для каждого Стр из СтрокаТаблицы.НаименованиеТовары.СодержаниеКассеты Цикл
        ОбластьСтроки.Параметры.Заполнить(Стр);
        ТабДокВывода.Вывести(ОбластьСтроки);
    КонецЦикла;
    Если Проход = 1 Тогда           
        ТабДокумент.Вывести(ТабДокВывода);   
    Иначе
        ТабДокумент.Присоединить(ТабДокВывода);
    КонецЕсли;
    Проход = Проход + 1;
 
        //Если Проход = 5 Тогда //сбросили счетчик и начали с новой строки (число 5 - указывает сколько колонок выводить)
        //      Проход = 1;
        //КонецЕсли;
    ТабДокВывода.Очистить();
КонецЦикла;
0
Denzo
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 64
19.06.2015, 12:19  [ТС] 10
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Функция ПечатьЦенника() Экспорт
    ТабДок = Новый ТабличныйДокумент;
    ТабДокВывод = Новый ТабличныйДокумент;
    ТабДок.ИмяПараметровПечати = "Печать обложек";
    Макет = ПолучитьМакет("Обложка_DV1");
    ОбластьОбложки = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтр = Макет.ПолучитьОбласть("Содержание");
    Проход = 1;
    
    Для Каждого СтрокаТаблицы Из Товары Цикл
        ОбластьОбложки.Параметры.Заполнить(СтрокаТаблицы);
        ОбластьОбложки.Параметры.Наименование = СтрокаТаблицы.НаименованиеТовары.Наименование;
        ТабДокВывод.Вывести(ОбластьОбложки);
        Для каждого Стр из СтрокаТаблицы.НаименованиеТовары.СодержаниеКассеты цикл
                    ОбластьСтр.Параметры.Заполнить(Стр);
                    ТабДокВывод.Вывести(ОбластьСтр);
        КонецЦикла;
                Если Проход = 1 Тогда
                ТабДок.Вывести(ТабДокВывод);
                Иначе
                ТабДок.Присоединить(ТабДокВывод);
                КонецЕсли;
         Проход = Проход +1;
         ТабДокВывод.Очистить();
                
 
КонецЦикла;
К сожелению даже табличный документ не открывается
0
Dethmontt
Модератор
Эксперт 1С
2617 / 2417 / 407
Регистрация: 10.03.2011
Сообщений: 8,595
Записей в блоге: 1
Завершенные тесты: 1
19.06.2015, 13:17 11
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Функция ПечатьЦенника() Экспорт
    ТабДок = Новый ТабличныйДокумент;
    ТабДокВывод = Новый ТабличныйДокумент;
    ТабДок.ИмяПараметровПечати = "Печать обложек";
    Макет = ПолучитьМакет("Обложка_DV1");
    ОбластьОбложки = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтр = Макет.ПолучитьОбласть("Содержание");
    Проход = 1;
    
    Для Каждого СтрокаТаблицы Из Товары Цикл
        ОбластьОбложки.Параметры.Заполнить(СтрокаТаблицы);
        ОбластьОбложки.Параметры.Наименование = СтрокаТаблицы.НаименованиеТовары.Наименование;
        ТабДокВывод.Вывести(ОбластьОбложки);
        Для каждого Стр из СтрокаТаблицы.НаименованиеТовары.СодержаниеКассеты цикл
                    ОбластьСтр.Параметры.Заполнить(Стр);
                    ТабДокВывод.Вывести(ОбластьСтр);
        КонецЦикла;
                Если Проход = 1 Тогда
                ТабДок.Вывести(ТабДокВывод);
                Иначе
                ТабДок.Присоединить(ТабДокВывод);
                КонецЕсли;
         Проход = Проход +1;
         ТабДокВывод.Очистить();
                
 
КонецЦикла; 
 
//ААААААААААААААААААААААААААААААААААААААААА
//Думать вообще лень, да?
ТабДок.Показать();
0
Denzo
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 64
19.06.2015, 20:35  [ТС] 12
Не думаем, просто многое еще не знаем!!! Спасибо, заработало, правда после первой этикетки не присоединяется другая, только после второй. Надеюсь до тумкаю.
0
19.06.2015, 20:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2015, 20:35

Группировка динамических колонок в макете
Всем привет! Есть табличный документ, похожий на табель, вида: Сотрудник |...

Отчет с количеством колонок >255
Добрый день. Второй день бьюсь: интерактивно не получится, ограничение 1с,...

Динамическое добавление колонок в 1С8
Появилась проблема: необходимо создать документ, в табличных частях которого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru