Форум программистов, компьютерный форум, киберфорум
Наши страницы

1С: Собственные программы

Войти
Регистрация
Восстановить пароль
 
 
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,195
#1

Колонки в макете - 1С/1C 8.x

07.02.2018, 15:17. Просмотров 748. Ответов 27
Метки нет (Все метки)

Добрый день! Не могу понять как создать колонки с датами. Объясню что надо:
Я выбираю период с 01.02.2018 по 28.02.2018, формирую макет, в макете появилась таблица с 28 колонками, в шапке каждой колонки дата от 01.02.2018 по 28.02.2018.
В макете я в шапке колонка добавил параметр "Дата". Пытался различными способами но не могу найти нормальное объяснение. Используют Присоединить(), но как этим пользоваться не понятно.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
    ТабДок.Очистить();
    Макет=ПолучитьМакет("Макет");
    ОбластьШапка=Макет.ПолучитьОбласть("Шапка");
    Период="за "+ПредставлениеПериода(НачалоДня(НачПериода),КонецДня(КонПериода),);
    ОбластьШапка.Параметры.Период=Период;
    ОбластьШапка.Параметры.Регион=АбонентскийУчасток;
    ТабДок.Вывести(ОбластьШапка);   
 
    ДатаТЗ=НачалоДня(НачПериода);
    Пока ДатаТЗ<=КонПериода Цикл
        ОбластьШапкаДата=Макет.ПолучитьОбласть("ШапкаДата");
        ОбластьШапкаДата.Область().Текст=ДатаТЗ;
        ОбластьШапкаДата.Область().ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
        ДатаТЗ=ДатаТЗ+24*60*60;
        ТабДок.Присоединить(ОбластьШапкаДата);
    КонецЦикла;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2018, 15:17
Я подобрал для вас темы с готовыми решениями и ответами на вопрос 1C 8.x Колонки в макете (1С):

Ошибка Неверное имя колонки При добавлении колонки ТЗ - 1С
Народ, подскажите что не правильно, Выдет ошибку.Результат отчета помещаю в таблицу значений &amp;НаСервере Процедура ПолучитьТЗИзМакета()...

1C 8.x Расшифровка в макете - 1С
Есть отчет, в нем форма и макет. Макет открывается в отдельном окне, в него выводиться вся инф. Нужно для макета сделать расшифровку, т е...

Заполнение таблицы в макете - 1С
Здравствуйте. В макете печатной формы есть таблица. Данные из таблицы берутся из запроса. Проблема в том, что при заполнении параметров,...

1C 8.x Группировка строк в макете - 1С
Как вывести группировку, нужен именно такой пример:

Ошибка в макете Документа - 1С
Здравствуйте друзья! Прошу Вас об очередной помощи. Не могу найти ошибку в модуле менеджера документа &quot;Заправка Маркера&quot; Процедура...

1C 8.x Гиперссылка на ячейку в макете - 1С
Можете показать пример как в макете нажимая на ячейку с текстом (имеет гиперссылку ) чтобы открывался файл &quot;Файл.dot&quot;.

27
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,195
16.02.2018, 10:50  [ТС] #16
wwall, спасибо за помощь, я с большинство кода разобрался и подправил ошибки, вот что получилось
Кликните здесь для просмотра всего текста
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |   Групповые.КороткийАдрес КАК Адрес,
    |   НачислениеГаза.ДатаДок КАК ДатаДок,
    |   НачислениеГаза.Количество
    |ИЗ
    |   РегистрНакопления.НачислениеГаза КАК НачислениеГаза
    |       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Групповые КАК Групповые
    |       ПО НачислениеГаза.Групповая = Групповые.Ссылка
    |ГДЕ
    |   Групповые.АбонентскийУчасток = &АбонентскийУчасток
    |   И НачислениеГаза.ДатаДок МЕЖДУ &ДатаНач И &ДатаКон
    |
    |УПОРЯДОЧИТЬ ПО
    |   ДатаДок";
    
    Запрос.УстановитьПараметр("ДатаНач",НачПериода);
    Запрос.УстановитьПараметр("ДатаКон",КонПериода);
    Запрос.УстановитьПараметр("АбонентскийУчасток",АбонентскийУчасток); 
    РезультатТЗ = Запрос.Выполнить().Выгрузить();
    //Результат.Сортировать("Адрес Возр");
    
    СтрокаГрупировки = "";
    
    Для каждого х из РезультатТЗ цикл
        НомерДня = ДеньГода(х.ДатаДок);
        ИмяКолонки = "_"+НомерДня;
        Если РезультатТЗ.Колонки.Найти(ИмяКолонки) = Неопределено тогда
            РезультатТЗ.Колонки.Добавить(ИмяКолонки,новый ОписаниеТипов("Число"),Формат(х.ДатаДок,"ДФ=dd.MM.yyyy"));
            СтрокаГрупировки = СтрокаГрупировки + "," +ИмяКолонки;
        КонецЕсли;
        х[ИмяКолонки] = х.Количество;
    КонецЦикла;
    
    РезультатТЗ.Свернуть("Адрес",СтрокаГрупировки); 
    РезультатТЗ.Сортировать("Адрес Возр");
    
    ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
    ТабДок.Очистить();
    Макет=ПолучитьМакет("Макет");
    ОбластьШапка=Макет.ПолучитьОбласть("Шапка");
    Период="за "+ПредставлениеПериода(НачалоДня(НачПериода),КонецДня(КонПериода),);
    ОбластьШапка.Параметры.Период=Период;
    ОбластьШапка.Параметры.Регион=АбонентскийУчасток;
    ТабДок.Вывести(ОбластьШапка);
    //ОбластьШапкаДата1=Макет.ПолучитьОбласть("R6C1");
    //ТабДок.Вывести(ОбластьШапкаДата1);
    
    ОбластьШапкаДата = Макет.ПолучитьОбласть("ШапкаДата|Дата");
    // добавим колонки
    для каждого х из РезультатТЗ.Колонки цикл
        ОбластьШапкаДата.Параметры.ДатаЗал = х.Заголовок;
        ТабДок.Присоединить(ОбластьШапкаДата);
    КонецЦикла;
    
    СтрокаДанных = макет.ПолучитьОбласть("Строка");
    СтрокаДанныхДата = макет.ПолучитьОбласть("Строка|Дата");
    
    /// выводим данные
    Для каждого СтрокаВывода Из РезультатТЗ цикл
        СтрокаДанных.Параметры.Адрес = СтрокаВывода.Адрес;
        ТабДок.Вывести(СтрокаДанных);
        
    для Каждого  х из РезультатТЗ.Колонки цикл
        СтрокаДанныхДата.Параметры.Данные = СтрокаВывода[х.Имя];
        ТабДок.Присоеденить(СтрокаДанных);
    КонецЦикла;
        
    КонецЦикла;
    
    ОбластьШапкаДата3=Макет.ПолучитьОбласть("R6C3");
    ТабДок.Присоединить(ОбластьШапкаДата3); 
    
    
    ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Портрет;
    ТабДок.АвтоМасштаб=Истина;
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь; 
    ТабДок.ПовторятьПриПечатиСтроки=ТабДок.Область("R4:R5");  
    ТабДок.Показать();

но в последней части кода когда идет вывод данных какая та ошибка, не могу понять как подставить данные по дате и адресу. вот эта часть кода
1C
1
2
3
4
5
6
...
        для Каждого  х из РезультатТЗ.Колонки цикл
            СтрокаДанныхДата.Параметры.Данные = СтрАдрес[х.Имя];
            ТабДок.Присоединить(СтрокаДанных);
        КонецЦикла;
...
0
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,195
21.02.2018, 09:24  [ТС] #17
Может кто подскажет?
0
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,195
26.02.2018, 16:06  [ТС] #18
разобрался, но все равно не понятно, почему удваивает адрес

Кликните здесь для просмотра всего текста
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
    ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
    ТабДок.Очистить();
    Макет=ПолучитьМакет("Макет");
    ОбластьШапка=Макет.ПолучитьОбласть("Шапка");
    Период="за "+ПредставлениеПериода(НачалоДня(НачПериода),КонецДня(КонПериода),);
    ОбластьШапка.Параметры.Период=Период;
    ОбластьШапка.Параметры.Регион=АбонентскийУчасток;
    ТабДок.Вывести(ОбластьШапка);
    
    ОбластьШапкаДата = Макет.ПолучитьОбласть("ШапкаДата|Дата");
    СтрокаДанных = макет.ПолучитьОбласть("Строка");
    СтрокаДанныхДата = макет.ПолучитьОбласть("Строка|Дата");
 
    // добавим колонки
    для каждого Колонка  из РезультатТЗ.Колонки цикл
        ОбластьШапкаДата.Параметры.ДатаЗал = Колонка.Заголовок;
        ТабДок.Присоединить(ОбластьШапкаДата);
    КонецЦикла; 
    /// выводим данные
    
    Для каждого Стр Из РезультатТЗ цикл
        СтрокаДанных.Параметры.Адрес = Стр.Адрес;
        ТабДок.Вывести(СтрокаДанных);
        
        для Каждого Колонка из РезультатТЗ.Колонки цикл
        СтрокаДанныхДата.Параметры.Данные = Стр[Колонка.Имя];
        ТабДок.Присоединить(СтрокаДанныхДата);
    КонецЦикла; 
    КонецЦикла; 
    ОбластьШапкаДата3=Макет.ПолучитьОбласть("R6C3");
    ТабДок.Присоединить(ОбластьШапкаДата3);
0
Миниатюры
Колонки в макете  
polax
605 / 379 / 122
Регистрация: 16.01.2015
Сообщений: 1,276
26.02.2018, 17:01 #19
Ermak27, Цикл в цикле, который добавляет строку под область Строка/Дата и следующим проходом первый цикл заполняет эту строку адресом повторно.
Вам советовали СКД . Не получилось? На СКД ваш отчет делается за 10-15 мин практически без кода, только правильный запрос в конструкторе и настройки СКД

Добавлено через 4 минуты
Тогда уж сделайте макет со всеми датами в колонках (все-равно на скрине присутствуют все даты месяца), чтобы не присоединять области. Область одна - Строка. и одним циклом заполняете параметры этой области, все будет в одну строку.
0
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,195
26.02.2018, 18:10  [ТС] #20
polax, скд не пробовал, охота с этим домучится. Я разобрался что идет повтор но если я закоментирую вывод Адреса тогда будет пустая строка, как ее убрать не знаю. Вывести все даты месяца в колонку не вариант так как месяца и года меняются.
0
polax
605 / 379 / 122
Регистрация: 16.01.2015
Сообщений: 1,276
26.02.2018, 20:59 #21
Ermak27, а если убрать из первого цикла?
1C
1
2
3
4
5
6
7
8
9
10
11
Для каждого Стр Из РезультатТЗ цикл
        //СтрокаДанных.Параметры.Адрес = Стр.Адрес;
      //  ТабДок.Вывести(СтрокаДанных);
        
        для Каждого Колонка из РезультатТЗ.Колонки цикл
        СтрокаДанныхДата.Параметры.Данные = Стр[Колонка.Имя];
        ТабДок.Присоединить(СтрокаДанныхДата);
        СтрокаДанных.Параметры.Адрес = Стр.Адрес;
        ТабДок.Вывести(СтрокаДанных); 
    КонецЦикла; 
    КонецЦикла;
1
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,195
27.02.2018, 09:26  [ТС] #22
polax, получилось что то не то
0
Миниатюры
Колонки в макете  
polax
605 / 379 / 122
Регистрация: 16.01.2015
Сообщений: 1,276
27.02.2018, 15:46 #23
Ermak27, Точно - не то. Не мучались бы. Ну сделайте на СКД
0
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,195
27.02.2018, 16:26  [ТС] #24
polax, давно не работал с скд, надо вспоминать
0
Dethmontt
Модератор
Эксперт 1С
2570 / 2378 / 388
Регистрация: 10.03.2011
Сообщений: 8,402
Записей в блоге: 1
Завершенные тесты: 1
28.02.2018, 02:18 #25
Ermak27, нужно вывести адрес, потом присоединять к нему значения
и т.д.

Добавлено через 3 минуты
отдельный цикл по сгруппированным адресам и поиск значений Адрес+дата
если нашли присоединяем значение, не нашли присоединяем пустую ячейку
0
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,195
28.02.2018, 08:58  [ТС] #26
Dethmontt, мне не понятно как искать значение Адрес+дата в ТабДок, там же нет колонок, как искать?
0
Dethmontt
Модератор
Эксперт 1С
2570 / 2378 / 388
Регистрация: 10.03.2011
Сообщений: 8,402
Записей в блоге: 1
Завершенные тесты: 1
01.03.2018, 01:16 #27
Цитата Сообщение от Ermak27 Посмотреть сообщение
в ТабДок
не надо искать в ТабДок, искать надо в ТЗ,
а в ТабДок выводить
0
Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,195
02.03.2018, 09:55  [ТС] #28
Dethmontt, не понимаю
делаю так но какая та фигня
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Для каждого Стр Из РезультатТЗ цикл
        СтрокаДанных.Параметры.Адрес = Стр.Адрес;
        ТабДок.Вывести(СтрокаДанных);       
    КонецЦикла; 
    
    Для каждого Стр Из РезультатТЗ цикл
    Для каждого Колонка Из РезультатТЗ.Колонки цикл
        Отбор = Новый Структура();
        Отбор.Вставить("Адрес",Стр.Адрес);
        Отбор.Вставить(Колонка.Заголовок,Колонка.Заголовок);
        Строки = РезультатТЗ.НайтиСтроки(Отбор);
        Если Строки.Количество()>0 Тогда
            
        КонецЕсли;
    КонецЦикла; 
    КонецЦикла;
0
02.03.2018, 09:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2018, 09:55
Привет! Вот еще темы с ответами:

1C 8.x Группировка строк в макете Печать - 1С
Есть макет Печать, по справочнику Курсы. Нужно чтобы имя каждого преподавателя выводилось только один раз и за каждым преподом все его...

1C 8.x Отобразить родительские документы в макете - 1С
Приветствую всех, вопрос возник с отображением в макете родительских документов (в служебном сообщении их получаю). Есть ВПФ ТОРГ-12,...

1C 8.x Удалить пустую ячейку в макете - 1С
Как вывести в отчет, если выбр Груп то Бренд и Товар, очистить поля или строку в макете, или Бренд то Груп и Товар очистить, Товар ...

1C 8.x Присоединение 2 строк к 1 ячейке в макете - 1С
Хочу к 1 ячейке которая занимает 3 строки справа добавить 3 строки, 1 получилось вывести как на рисунке. а вот еще 2 строки добавить не...


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

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

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