7.7 Показать нужные колонки таблицы на печать

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Samouchka, 3 май 2013.

  1. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Здравствуйте. Как можно показать после выполнения запроса нужные колонки таблицы на печать? Секция Документ1-это строка запроса (горизонтальная секция), содержит данные по нескольким колонкам. Пробую вывести вертикальную секцию Дата1, если колонка выбрана, но она выводится всё время. Скриншот таблицы во вложении. А если закомментировать Таб.ВывестиСекцию("Документ1"), тогда колонка пустая если выбрана, хотя должна заполнится. Результат судя по коду ожидаемый, но как написать правильный код? Вот мой ошибочный код:

    Код:
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    Таб.ВывестиСекцию("Документ1");
    Если ДатаДокумента=1 Тогда
    Таб.ВывестиСекцию("Дата1");
    КонецЕсли;
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Результат", "");

    Вложения:

  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Для вывода вертикальных секций юзаем "|"
    Т.е. Примерно так
    Код:
    Таб.ВывестиСекцию("Заголовок|Дата1");
    
    Последующие вертикальные колонки "прилепляются" методом ПрисоединитьСекцию
    Опишите задачу более детально. Складывается впечатление что вертикальные секции вам и не нужны вовсе.....
  3. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Здравствуйте. Извините, но при использовании тега "код 1С" у меня ошибка. Если можно подскажите. Поэтому, тегами пока не могу пользоваться.
    Сведения об ошибке на веб-странице
    Агент пользователя: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MRSPUTNIK 2, 4, 0, 432; BTRS6335; GTB7.4; .NET CLR 2.0.50727)
    штамп времени: Sat, 4 May 2013 05:08:06 UTC


    Сообщение: Объект не поддерживает это свойство или метод
    Строка: 900
    Символ: 2
    Код: 0
    URI-код: http://www.1c-pro.ru.../js/ips.like.js

    Код:
    Моя таблица - это результат запроса:
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Дата1 = Регистр.ПолныйОтчетРег.Дата;
    |Килентяра = Регистр.ПолныйОтчетРег.Килентяра;
    |Документ1 = Регистр.ПолныйОтчетРег.Документ;
    |Номер = Регистр.ПолныйОтчетРег.Номер;
    |ПриходЗакупка = Регистр.ПолныйОтчетРег.ПриходЗакупка;
    |ПриходРозница = Регистр.ПолныйОтчетРег.ПриходРозница;
    |ВозвратЗакупка = Регистр.ПолныйОтчетРег.ВозвратЗакупка;
    |ВозвратРозница = Регистр.ПолныйОтчетРег.ВозвратРозница;
    |ВернулПокупатель = Регистр.ПолныйОтчетРег.ВернулПокупатель;
    |РасходДенег = Регистр.ПолныйОтчетРег.РасходДенег;
    |Продажи = Регистр.ПолныйОтчетРег.Продажи;
    |Скидки = Регистр.ПолныйОтчетРег.Скидки;
    |Накидки = Регистр.ПолныйОтчетРег.Накидки;
    |Списали = Регистр.ПолныйОтчетРег.Списали;
    |ПриходСДрСкладов = Регистр.ПолныйОтчетРег.ПриходСДрСкладов;
    |ОтпущеноДрСкладам = Регистр.ПолныйОтчетРег.ОтпущеноДрСкладам;
    |Переоценка = Регистр.ПолныйОтчетРег.Переоценка;
    |БралиВДолг = Регистр.ПолныйОтчетРег.БралиВДолг;
    |ПогашалиДолг = Регистр.ПолныйОтчетРег.ПогашалиДолг;
    |Функция ПриходЗакупкаПриход = Приход(ПриходЗакупка);
    |Функция ПриходРозницаПриход = Приход(ПриходРозница);
    |Функция ВозвратЗакупкаПриход = Приход(ВозвратЗакупка);
    |Функция ВозвратРозницаПриход = Приход(ВозвратРозница);
    |Функция ВернулПокупательПриход = Приход(ВернулПокупатель);
    |Функция РасходДенегПриход = Приход(РасходДенег);
    |Функция ПродажиПриход = Приход(Продажи);
    |Функция СкидкиПриход = Приход(Скидки);
    |Функция НакидкиПриход = Приход(Накидки);
    |Функция СписалиПриход = Приход(Списали);
    |Функция ПриходСДрСкладовПриход = Приход(ПриходСДрСкладов);
    |Функция ОтпущеноДрСкладамПриход = Приход(ОтпущеноДрСкладам);
    |Функция ПереоценкаПриход = Приход(Переоценка);
    |Функция БралиВДолгПриход = Приход(БралиВДолг);
    |Функция ПогашалиДолгПриход = Приход(ПогашалиДолг);
    |Группировка Дата1;
    |Группировка Номер;
    |Группировка Килентяра;
    |Группировка Документ1;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
    // Заполнение полей Дата1
    //Таб.ВывестиСекцию("Дата1");
    Пока Запрос.Группировка(2) = 1 Цикл
    // Заполнение полей Номер
    //Таб.ВывестиСекцию("Номер");
    Пока Запрос.Группировка(3) = 1 Цикл
    // Заполнение полей Килентяра
    //Таб.ВывестиСекцию("Килентяра");
    Пока Запрос.Группировка(4) = 1 Цикл
    // Заполнение полей Документ1
    Таб.ВывестиСекцию("Документ1");
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    // Заполнение полей "Итого"
    Таб.ВывестиСекцию("Итого");
    Дальше надо оставить в таблице нужные колонки (они соответствуют функциям запроса и группировкам. 15 функций и 4 группировки, т.е. максимально 19 колонок может быть). Надо либо скрыть не выбранные, либо вывести выбранные колонки. Пробовал создать вертикальную секцию - безуспешно. В идеале вообще лучше запрос выполнить по нужным функциям, т.е. поставить условие выбора в каждую функцию. Да только если колонка будет пустая, она всё равно попадет в таблицу. Как же дописать код:
    Если ДатаДокумента=1 Тогда
    //тут надо ввывести все строки запроса с колонкой Дата1
    КонецЕсли;
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
    ..........................................................................
    КонецПроцедуры
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Т.е. вам нужно выводить функции (в колонках) в зависимости от флагов на форме отчета? Я правильно понял?
  5. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Да. Именно так. Причем если флаг на форме отчета снят, то надо не только не выводить функцию, но и в таблице эту колонку не показывать. Или хотя бы просто сделать колонку с этой функцией невидимой на худой конец. Желательно бы ещё управлять видимостью колонок Дата1, Номер, Килентяра, Документ1, но если не получится - то чёрт с ними, в принципе их всегда можно показывать.
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Так у вас уже практически все готово...
    Оформите вертикальные секции и все..
    Код:
    Таб.ВывестиСекцию("Заголовок|Дата1");
    
    Если Закупка=1 Тогда
    Таб.ПрисоединитьСекцию("Заголовок|Закупка");
    КонецЕсли;
    
    Если Розница=1 Тогда
    Таб.ПрисоединитьСекцию("Заголовок|Розница");
    КонецЕсли;
    ну и т.д.
    
  7. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Сделал всё как Вы сказали для колонки ПриходЗакупкаПриход, но не получил желаемого результата. Видимо, что-то не так поняли. Описываю задачу на рисунках.
    Рисунок 1 - диалог выбора колонок,
    рисунок 2 - то что получается с Вашим кодом если флаг "Приход по цене закупки" опущен: колонка видна по-прежнему,
    рисунок 3 - как Ваш код сработал при поднятом флаге: та же таблица плюс в левом нижнем углу вывелась одна ячейка "ПриходЗакупкаПриход"
    рисунок 4 - то что должно получится с опущенным флагом: без колонки "ПриходЗакупкаПриход".

    Вложения:

  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Выложите сам отчет. Совершенно не ясно как вы там "начудили".
  9. Vlan
    Offline

    Vlan Гость Гость

    С учетом большого количества колонок, я бы поступил по-другому:
    В таблице сделать универсальную вертикальную секцию с переменными в шапке и строчной части.
    Результат запроса выгрузить в таблицу значений. Потом удалить "ненужные" колонки.
    По количеству оставшихся колонок организовать цикл для шапки, присоединяя секции и присваивая переменной каждой новой секции название колонки ТЗ.
    Начать цикл по строкам ТЗ. По аналогии с шапкой присоединять секции, присваивая переменным значения из каждой ячейки ТЗ.

    Будет время, покажу на примере.
  10. Vlan
    Offline

    Vlan Гость Гость

    Вот примерно так это выглядит (см. приложение)

    Вложения:

    • 06.ert
      Размер файла:
      13,5 КБ
      Просмотров:
      16

Поделиться этой страницей