Имя: Пароль:
1C
1С v8
Вопрос по секциям в макете
,
0 AnisaL
 
09.05.17
12:58
Добрый день!!! Всех с праздником!
Вот как мне секции организовать, чтобы вывести и суммы и при этом наименование двух колонок выводилось? И как сюда скрины закинуть?
1 Ufo_Attack
 
09.05.17
13:02
(0)>И как сюда скрины закинуть?
Использовать фотохостинги https://disk.yandex.ru/ , http://savepic.ru/ и другие.
2 AnisaL
 
09.05.17
13:18
3 AnisaL
 
09.05.17
13:19
(1) а как потом ссылку сюда закинуть с яндекс диска?
4 AnisaL
 
09.05.17
13:22
5 AnisaL
 
09.05.17
13:25
6 AnisaL
 
09.05.17
13:28
Вопрос в том, что секция Сумма отдельно от секции Данные (первый скрин), и поэтому Заголовок секции "Сметная стоимость монтажных и ... " выводится наполовину ( 2-й скрин)
7 AnisaL
 
09.05.17
13:29
Как мне организовать секции, чтобы заголовок выходил полностью? и суммы выводились как на скрине
8 AnisaL
 
09.05.17
13:35
(1) Вопрос то хоть понятен, надеюсь?
9 Ufo_Attack
 
09.05.17
19:18
(0) В чем смысл вертикальных областей макета?
10 AnisaL
 
10.05.17
23:08
(9) Теперь я вот так сделала, вот фотки
11 AnisaL
 
10.05.17
23:12
12 AnisaL
 
10.05.17
23:13
13 Wirtuozzz
 
10.05.17
23:21
(0) Не понял, что надо от макета?
14 Wirtuozzz
 
10.05.17
23:22
вывести сумму и наименование в одной колонке? Тогда ставьте в тип ячейки в макете "ШАБЛОН", сейчас стоит "ПАРАМЕТР"
15 AnisaL
 
10.05.17
23:24
(13) вы какие скрины смотрели, первые?
16 Wirtuozzz
 
10.05.17
23:24
ТС, тебе надо не только область строки получать, но и область колонки, их пересечение выводить.
Зачем вообще нужна область колонки? М.б. ее удалить раз не понимаешь как с ней работать?

зы. Если есть желание разобраться, то позырь как формируется ТОРГ12, сделай по аналогии.
17 Wirtuozzz
 
10.05.17
23:25
(15) Да, просто время позднее. Вкурил кажется что вы хотите от макета.
18 AnisaL
 
10.05.17
23:27
(17) Удалять бы не хотелось вертикальные секции, придется многое переписать тогда
19 Wirtuozzz
 
10.05.17
23:30
(18) Тогда посмотрите как это реализовано в ТОРГ12. Там будет что то подобное ("ШапкаТаблица|Сумма") = "Тарам пам пам" ))))
20 AnisaL
 
10.05.17
23:34
(19) там нету вертикальных секций
21 Wirtuozzz
 
10.05.17
23:38
(20) Ничего страшного, зато на итс есть.
https://its.1c.ru/db/metod8dev/content/2581/hdoc
22 Wirtuozzz
 
10.05.17
23:39
пардон, в ссылке ерунда.
23 Wirtuozzz
 
10.05.17
23:41
Если есть БП2.0, то можно посмотреть в ПФ Счет, к документу Счет на оплату, если БП нет, то:
24 Wirtuozzz
 
10.05.17
23:41
Функция ПечатьСчетаЗаказа(Тип)
    Перем ПодразделениеОтветственныхЛиц;

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.Текст ="
    |ВЫБРАТЬ
    |    Номер,
    |    Дата,
    |    ДоговорКонтрагента,
    |    Организация,
    |    Контрагент КАК Покупатель,
    |    Организация КАК Руководители,
    |    Организация КАК Поставщик,
    |    ОрганизацияПолучатель КАК Получатель,
    |    СуммаДокумента,
    |    ВалютаДокумента,
    |    УчитыватьНДС,
    |    СуммаВключаетНДС
    |ИЗ
    |    Документ.СчетНаОплатуПокупателю КАК ЗаказПокупателя
    |
    |ГДЕ
    |    ЗаказПокупателя.Ссылка = &ТекущийДокумент";

    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    
    ЧастьЗапросаДляВыбораСодержанияУслуг = ФормированиеПечатныхФорм.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("ЗаказПокупателя");
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВложенныйЗапрос.Номенклатура КАК Номенклатура,
    |    ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,
    |    ВложенныйЗапрос.Номенклатура.Код КАК Код,
    |    ВложенныйЗапрос.Номенклатура.Артикул КАК Артикул,
    |    ВложенныйЗапрос.Количество,
    |    ВложенныйЗапрос.ЕдиницаИзмерения,
    |    ВложенныйЗапрос.Цена,
    |    ВложенныйЗапрос.Сумма,
    |    ВложенныйЗапрос.СуммаНДС,
    |    ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
    |    1 КАК ID
    |ИЗ
    |    (ВЫБРАТЬ
    |        ЗаказПокупателя.Номенклатура КАК Номенклатура,
    |        ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения,
    |        ЗаказПокупателя.Цена КАК Цена,
    |        СУММА(ЗаказПокупателя.Количество) КАК Количество,
    |        СУММА(ЗаказПокупателя.Сумма) КАК Сумма,
    |        СУММА(ЗаказПокупателя.СуммаНДС) КАК СуммаНДС,
    |        МИНИМУМ(ЗаказПокупателя.НомерСтроки) КАК НомерСтроки
    |    ИЗ
    |        Документ.СчетНаОплатуПокупателю.Товары КАК ЗаказПокупателя
    |    
    |    ГДЕ
    |        ЗаказПокупателя.Ссылка = &ТекущийДокумент
    |    
    |    СГРУППИРОВАТЬ ПО
    |        ЗаказПокупателя.Номенклатура,
    |        ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
    |        ЗаказПокупателя.Цена) КАК ВложенныйЗапрос
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
    |    " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
    |    ЗаказПокупателя.Номенклатура.Код КАК Код,
    |    ЗаказПокупателя.Номенклатура.Артикул КАК Артикул,
    |    ЗаказПокупателя.Количество,
    |    ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
    |    ЗаказПокупателя.Цена,
    |    ЗаказПокупателя.Сумма,
    |    ЗаказПокупателя.СуммаНДС,
    |    ЗаказПокупателя.НомерСтроки,
    |    2
    |ИЗ
    |    Документ.СчетНаОплатуПокупателю.Услуги КАК ЗаказПокупателя
    |
    |ГДЕ
    |    ЗаказПокупателя.Ссылка = &ТекущийДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    |    ID,
    |    НомерСтроки";

    ЗапросТовары = Запрос.Выполнить().Выгрузить();

    Макет = ПолучитьМакет("СчетЗаказ");

    // Выводим шапку накладной

    СведенияОПолучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
    Если Тип = "Счет" Тогда
        ОбластьМакета       = Макет.ПолучитьОбласть("ЗаголовокСчета");
        ОбластьМакета.Параметры.Заполнить(Шапка);
        ОбластьМакета.Параметры.ИННПолучателя = СведенияОПолучателе.ИНН;
        ОбластьМакета.Параметры.КПППолучателя = СведенияОПолучателе.КПП;
        Если ТипЗнч(СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда
            Банк = ?(НЕ ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов), СтруктурнаяЕдиница.Банк, СтруктурнаяЕдиница.БанкДляРасчетов);
            БИК        = Банк.Код;
            КоррСчет   = Банк.КоррСчет;
            ГородБанка = Банк.Город;
            НомерСчета = ВернутьРасчетныйСчет(СтруктурнаяЕдиница);

            ОбластьМакета.Параметры.БИКБанкаПолучателя               = БИК;
            ОбластьМакета.Параметры.БанкПолучателя                   = Банк;
            ОбластьМакета.Параметры.БанкПолучателяПредставление      = СокрЛП(Банк) + " " + ГородБанка;
            ОбластьМакета.Параметры.СчетБанкаПолучателя              = КоррСчет;
            ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = КоррСчет;
            ОбластьМакета.Параметры.СчетПолучателяПредставление      = НомерСчета;
            ОбластьМакета.Параметры.СчетПолучателя                   = НомерСчета;
        КонецЕсли;
        
        Если ПустаяСтрока(СтруктурнаяЕдиница.ТекстКорреспондента) Тогда
            ТекстКорреспондента = СведенияОПолучателе.НаименованиеДляПечатныхФорм;
            Если ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов) Тогда
                ТекстКорреспондента = ТекстКорреспондента + " р/с " + СтруктурнаяЕдиница.НомерСчета
                + " в " + СтруктурнаяЕдиница.Банк + " " + СтруктурнаяЕдиница.Банк.Город;
            КонецЕсли;    
        Иначе
            ТекстКорреспондента = СтруктурнаяЕдиница.ТекстКорреспондента;
        КонецЕсли;        
        ОбластьМакета.Параметры.ПредставлениеПолучателя = ТекстКорреспондента;
        
        ТабДокумент.Вывести(ОбластьМакета);
    КонецЕсли;

    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Счет на оплату");
    
    ТабДокумент.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    СведенияОбОрганизации    = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата);
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(
        СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
    ТабДокумент.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    СведенияОПокупателе     = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Покупатель, Шапка.Дата);
    ОбластьМакета.Параметры.ПредставлениеПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(
        СведенияОПокупателе, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
    ТабДокумент.Вывести(ОбластьМакета);
    
    ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
        ВыводитьКоды = Истина;
        Колонка = "Артикул";
    ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
        ВыводитьКоды = Истина;
        Колонка = "Код";
    Иначе
        ВыводитьКоды = Ложь;
    КонецЕсли;

    ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");

    ТабДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
        ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка;
        ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);
    ТабДокумент.Присоединить(ОбластьСуммы);

    ОбластьКолонкаТовар = Макет.Область("Товар");
    
    Если Не ВыводитьКоды Тогда
        ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
                                            Макет.Область("КолонкаКодов").ШиринаКолонки;
    КонецЕсли;

    ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("Строка|Сумма");

    Сумма    = 0;
    СуммаНДС = 0;
    ВсегоСкидок    = 0;
    ВсегоБезСкидок = 0;

    Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл

        ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
        ТабДокумент.Вывести(ОбластьНомера);
        
        Если ВыводитьКоды Тогда
            Если Колонка = "Артикул" Тогда
                ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул;
            Иначе
                ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код;
            КонецЕсли;
            ТабДокумент.Присоединить(ОбластьКодов);
        КонецЕсли;

        ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
        ОбластьДанных.Параметры.Товар       = СокрЛП(ВыборкаСтрокТовары.Товар);
        ТабДокумент.Присоединить(ОбластьДанных);

        ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
        ТабДокумент.Присоединить(ОбластьСуммы);
        Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
        СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;

    КонецЦикла;

    // Вывести Итого
    ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("Итого|Сумма");

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

    // Вывести ИтогоНДС
    ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");
    
    ТабДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
        ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    Если СуммаНДС <> 0 Тогда
        ОбластьДанных.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
        ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
    Иначе
        ОбластьДанных.Параметры.НДС = "Без налога (НДС)";
        ОбластьСуммы.Параметры.ВсегоНДС = "-";
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);
    
    ТабДокумент.Присоединить(ОбластьСуммы);
    
    // Вывести ИтогоКОплате
    ОбластьНомера = Макет.ПолучитьОбласть("ИтогоКОплате|НомерСтроки");
    ОбластьКодов = Макет.ПолучитьОбласть("ИтогоКОплате|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("ИтогоКОплате|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоКОплате|Сумма");
    ТабДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
        ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);
    СуммаКОплате = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
    ОбластьСуммы.Параметры.ИтогоКОплате = ОбщегоНазначения.ФорматСумм(СуммаКОплате);
    ТабДокумент.Присоединить(ОбластьСуммы);
    
    // Вывести Сумму прописью
    ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
    СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
    ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + ЗапросТовары.Количество()
    + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
    ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
    ТабДокумент.Вывести(ОбластьМакета);

    // Вывести подписи
    Если Тип = "Счет" Тогда
        
        Если Шапка.Получатель.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда
            ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");
            
            Руководители = ОбщегоНазначения.ОтветственныеЛица(Шапка.Руководители, Шапка.Дата, ПодразделениеОтветственныхЛиц);
            Руководитель = Руководители.РуководительПредставление;
            Бухгалтер    = Руководители.ГлавныйБухгалтерПредставление;
            
            ОбластьМакета.Параметры.ФИОРуководителя = Руководитель;
            ОбластьМакета.Параметры.ФИОБухгалтера   = Бухгалтер;
            
        Иначе
            ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчетаПредприниматель");
            
            ФЛ = Шапка.Получатель.ИндивидуальныйПредприниматель;
            ДанныеФЛ = РегистрыСведений.ФИОФизЛиц.СрезПоследних(Дата, Новый Структура("ФизЛицо",ФЛ));
            Если ДанныеФЛ.Количество() > 0 Тогда
                Предприниматель = СокрЛП(ДанныеФЛ[0].Фамилия) + " " + Лев(СокрЛП(ДанныеФЛ[0].Имя),1) + ". " + Лев(СокрЛП(ДанныеФЛ[0].Отчество),1) + ".";
            Иначе
                Предприниматель = "";
            КонецЕсли;
            
            ОбластьМакета.Параметры.ФИОПредпринимателя = Предприниматель;
            
        КонецЕсли;
        
    Иначе
        ОбластьМакета = Макет.ПолучитьОбласть("ПодвалЗаказа");
    КонецЕсли;
    ОбластьМакета.Параметры.Заполнить(Шапка);
    ТабДокумент.Вывести(ОбластьМакета);

    Возврат ТабДокумент;

КонецФункции // ПечатьСчетаЗаказа()
25 Wirtuozzz
 
10.05.17
23:42
ОбластьНомера = Макет.ПолучитьОбласть("ИтогоКОплате|НомерСтроки");
    ОбластьКодов = Макет.ПолучитьОбласть("ИтогоКОплате|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("ИтогоКОплате|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоКОплате|Сумма");

Вот это то что вам нужно. Удачной вам рабочей ночи.
26 AnisaL
 
10.05.17
23:44
(22) ага точно)
27 AnisaL
 
10.05.17
23:46
(25) Спасибо)))