Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 20:23

Документы одного вида в одном макете

Автор asmut, 16 мая 2014, 15:39

0 Пользователей и 1 гость просматривают эту тему.

asmut

Приветствую.
Задача стоит следующим образом: несколько одинаковых документов поместить на один табличный документ и желательно в две колонки.
Курил мануал, читал google, не сообразил. Кто что может подсказать?




&НаКлиенте
Процедура Печать(Команда)
    ТабДок = Новый ТабличныйДокумент;
    ПечатьАкта(ТабДок);
   
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
   
КонецПроцедуры

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



cska-fanat-kz

1. Создаете чистый табдок.
2. Создаете функцию, возвращающую табдок, заполненный печатной формой документа
3. Крутите цикл по документам
4. Нечетный док делаете Вывести() (метод у чистого табдока естественно), а четный Присоединить()
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

asmut

Цитата: cska-fanat-kz от 16 мая 2014, 15:56
1. Создаете чистый табдок.
2. Создаете функцию, возвращающую табдок, заполненный печатной формой документа
3. Крутите цикл по документам
4. Нечетный док делаете Вывести() (метод у чистого табдока естественно), а четный Присоединить()

Хорошая логика.
Но мне бы кусочек кода а то я не понял что крутить, я уже все вертел))
Заранее благодарен
Добавлено: 18 мая 2014, 17:34


Цитата: asmut от 16 мая 2014, 19:15
Цитата: cska-fanat-kz от 16 мая 2014, 15:56
1. Создаете чистый табдок.
2. Создаете функцию, возвращающую табдок, заполненный печатной формой документа
3. Крутите цикл по документам
4. Нечетный док делаете Вывести() (метод у чистого табдока естественно), а четный Присоединить()

Хорошая логика.
Но мне бы кусочек кода а то я не понял что крутить, я уже все вертел))
Заранее благодарен

Не работает в тонком клиенте. Я по УФ программирую. Выручайте господа

cska-fanat-kz

Сделайте печатную форму (любую, от фонаря) конструктором печати - увидите как все должно быть организовано в случае УФ.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

asmut

Цитата: cska-fanat-kz от 18 мая 2014, 22:23
Сделайте печатную форму (любую, от фонаря) конструктором печати - увидите как все должно быть организовано в случае УФ.


Да я разбираюсь в УФ достаточно хорошо чтобы не задавать глупых вопросов. Я конфигурацию с нуля написал "Инвентаризацию". Я просто понять не могу как реализовать мою проблему, раньше таких вопросов не вставало. Пускаю по циклу табдок, который каждый раз на сервере заполняется и возвращает. Все равно имею один макет на табдоке с последними данными. т.е. перезапись идет.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск