7.7 вложенные секции

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем shtorm512, 11 апр 2011.

  1. TopicStarter Overlay
    shtorm512
    Offline

    shtorm512 Опытный в 1С

    Регистрация:
    12 мар 2011
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    HELP! Как можно внутри секции "Строка", убрать не нужные секции(например "Код"), если они не прошли параметры условия?

    Посмотреть вложение 7000

    Вложения:

  2. TopicStarter Overlay
    shtorm512
    Offline

    shtorm512 Опытный в 1С

    Регистрация:
    12 мар 2011
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Код:
    Если индекс = 1 тогда  	
    Если флКод = 1 Тогда
    //        ???????????????как удалить строку????????????
    КонецЕсли;
    таб.ВывестиСекцию("Строка");  
    КонецЕсли;	
    Если индекс = 2 тогда  
    Если флКод = 1 Тогда
    //      ???????????????как удалить строку????????????
    КонецЕсли;
    таб.ПрисоединитьСекцию("Строка|Товар");  
    Таб.ВывестиСекцию("ПодвалСтроки");
    КонецЕсли;
    
    
  3. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    а зачем тебе секция строка ? исключи ее... и выводи что тебе нужно(от условий..)код..наименование..наличие....ненужные исключай
  4. TopicStarter Overlay
    shtorm512
    Offline

    shtorm512 Опытный в 1С

    Регистрация:
    12 мар 2011
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Просто если я буду выводить секции таким образом, подряд, то когда я сделаю ПрисоединитьСекцию например код, она присоеднится к последней секции в первой колонки, к Описание. Т.е. будет смещение с пробелами, поэтому присоединяю секции строка друг к другу, чтобы были ровные колонки
  5. Бухгалтерский угодник
    Offline

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

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

    shtorm512 Опытный в 1С

    Регистрация:
    12 мар 2011
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    эм, можно пожалуйста пример?
  7. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Можно конечно выводить и пусте секции, и имя/значение передавать как выражение. Короче извратов на любой вкус.
    Ну это только 1 из вариантов (самый простой)

    Код:
    СтрВывода="";
    СтрВывода=СтрВывода+"Код "+НужноеЗначение+РазделительСтрок;
    СтрВывода=СтрВывода+"Наименование "+НужноеЗначение+РазделительСтрок;
    .....
    
    
    
    Вот и формируй строку по условию (с учетом флагов я так понял).
    В ячейке поставь СтрВывода (выражение/переносить)
  8. TopicStarter Overlay
    shtorm512
    Offline

    shtorm512 Опытный в 1С

    Регистрация:
    12 мар 2011
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    ТАк о потом он нормально вторую колонку присоеденит?


    СтрВывода я так понимаю это будет имя основной секции? ранее "Строка"
  9. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Количество колонок-то совпадает. И высоту второй 1с подправит автоматически относительно первой (или наоборот)

    Судя по скрину - не забудьте сделать объединение ячеек справа от картиник. Не лепите все в одну
  10. TopicStarter Overlay
    shtorm512
    Offline

    shtorm512 Опытный в 1С

    Регистрация:
    12 мар 2011
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    не могу вникнуть в суть

    вот сам код, может картина станет яснее

    Код:
    //Создает отчет в виде КАТАЛОГА
    Процедура Каталог(Запрос) 
    флКод    =спиВиды.Пометка(1);
    флРозн  =спиВиды.Пометка(2);
    флМОпт  =спиВиды.Пометка(3);
    флОпт    =спиВиды.Пометка(4);
    
    
    таб=СоздатьОбъект("Таблица");   
    спрШаблоны = СоздатьОбъект("Справочник.ШаблоныЦенников");
    //    Если спрШаблоны.НайтиПоНаименованию("Каталог", 0, 0)=1 Тогда
    //        ПутьИИмя = СокрЛП(спрШаблоны.Путь);
    //    Иначе     
    //        Предупреждение("Файл с шаблоном каталога не найден, используем внутренний!!"); 
    таб.ИсходнаяТаблица("Каталог1");
    //    КонецЕсли;
    
    
    КоличествоНаСтраницу=спрШаблоны.Вертикаль;
    Если КоличествоНаСтраницу=0 Тогда
    Сообщить("Не задано количество товаров для печати по вертикали. Будут выведены подряд.","I");
    КонецЕсли; 
    
    
    //Сообщить(""+ПутьИИмя);
    //таб.Открыть(ПутьИИмя);      
    
    таб.ВывестиСекцию("Шапка");
    колонка = "левая";
    //таб.Опции(0,0,таб.ВысотаТаблицы());
    
    КолТоваров=0;
    Пока Запрос.Группировка(1)>0 Цикл   
    //Назначаем имя колонки для последующего чередования. У левой колонки индекс 1, у правой 2
    Если колонка = "левая" тогда
    индекс = 1;
    иначе
    индекс = 2;
    конецесли;
    //********************************
    Товар=Запрос.Товар;      
    
    глТовар = Запрос.Товар;
    печТовар=Товар.Наименование; 
    ПечКод = Товар.Код;
    
    Если Товар.ЭтоГруппа()>0 Тогда   
    таб.ВывестиСекцию("СтрокаГруппы");
    Продолжить;
    КонецЕсли;
    
    Цена    =Товар.Розн_Цена.Получить(ТекущаяДата());
    ЦенаМОпт=Товар.Мел_Опт_Цена.Получить(ТекущаяДата());
    ЦенаОпт    =Товар.Опт_Цена.Получить(ТекущаяДата());
    
    Если Запрос.КонКол<=0 Тогда
    ФлагЗаказ="заказ";
    Иначе
    ФлагЗаказ="";
    КонецЕсли;
    
    ФлагПуть="";
    ФлагЕсть="";
    
    Пока Запрос.Группировка(2)>0 Цикл
    Если Запрос.Склад.ВДороге>0 Тогда
    Если Запрос.КонКол>0 Тогда
    ФлагПуть="в пути";
    Иначе
    ФлагПуть="";
    КонецЕсли;
    Иначе
    Если Запрос.КонКол>0 Тогда
    ФлагЕсть="на складе";
    Иначе
    ФлагЕсть="";
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;      
    СтрВывода="";
    ПечОписание = "";
    Если ПустаяСтрока(Товар.РасширенныеХарактеристики)=0 Тогда
    ПечОписание = СокрЛП(Товар.РасширенныеХарактеристики);    
    ИначеЕсли ПустаяСтрока(Товар.Параметры)=0 Тогда
    ПечОписание = СокрЛП(Товар.Параметры);
    КонецЕсли;
    
    ПечНаличие = ФлагЗаказ;
    ПечНаличие = ?(ПустаяСтрока(ФлагПуть)=0, ФлагПуть, ПечНаличие);
    ПечНаличие = ?(ПустаяСтрока(ФлагЕсть)=0, ФлагЕсть, ПечНаличие);
    
    Если индекс = 1 тогда      
    Если флКод = 1 Тогда
    СтрВывода=СтрВывода+"Код "+ПечКод+РазделительСтрок;  
    КонецЕсли;
    таб.ВывестиСекцию("СтрВывода|Товар");  
    КонецЕсли;    
    Если индекс = 2 тогда  
    Если флКод = 1 Тогда
    
    КонецЕсли;
    таб.ПрисоединитьСекцию("СтрВывода|Товар");  
    Таб.ВывестиСекцию("ПодвалСтроки");
    КонецЕсли;
    
    
    КолТоваров=КолТоваров+1;
    Если КоличествоНаСтраницу>0 Тогда
    Если КолТоваров=КоличествоНаСтраницу Тогда
    таб.НоваяСтраница();
    КолТоваров=0;
    КонецЕсли;
    КонецЕсли;
    
    
    //Меняем колонку**************************************************************************************************************************
    если колонка = "левая" тогда
    колонка = "правая";
    иначе
    колонка = "левая"
    конецесли;
    //****************************************************************************************************************************************
    
    КонецЦикла;
    
    таб.ТолькоПросмотр(1);  
    
    таб.Показать("Каталог");
    КонецПроцедуры 
    
    
    
  11. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ммм....Ну присвоили вы код. А остальные значения почему нет?
    ВСЕ (наименования/характеристики/цены) добавляем в эту же строку
  12. TopicStarter Overlay
    shtorm512
    Offline

    shtorm512 Опытный в 1С

    Регистрация:
    12 мар 2011
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    да это то я понял. Вот присваиваю я все в эту строку, а как картинку туда запихать, ну или как сам вывод сделать этой строки? ведь раньше я секции выводил, а СтрВывода это же просто строка
  13. Бухгалтерский угодник
    Offline

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

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

    shtorm512 Опытный в 1С

    Регистрация:
    12 мар 2011
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    не получилось, проверяю в отладчике, пишет " CтрВывода = Ошибка в выражении!"
  15. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
  16. TopicStarter Overlay
    shtorm512
    Offline

    shtorm512 Опытный в 1С

    Регистрация:
    12 мар 2011
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    перед тем как вывести секцию
  17. TopicStarter Overlay
    shtorm512
    Offline

    shtorm512 Опытный в 1С

    Регистрация:
    12 мар 2011
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    у меня получилось тем методом который вы мне сказали, за это спасибо! но все же может поможете с методом не выводить вложенные секции? или как сделать так чтобы высота строки во вложенной секции стала 0,1?
  18. TopicStarter Overlay
    shtorm512
    Offline

    shtorm512 Опытный в 1С

    Регистрация:
    12 мар 2011
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    только вот проблема с этим выводом. Ставлю в ячейке переносить, а он все равно не переносит, обрубает ячейку, что это может быть?
  19. TopicStarter Overlay
    shtorm512
    Offline

    shtorm512 Опытный в 1С

    Регистрация:
    12 мар 2011
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    я понял почему он не переносил, надо было чтобы высота строки была авто, ну или по умолчанию 11.25 Вот только теперь новая проблема, картинка растягивается если допустип описание большое, так как она находится в одной секции с СтрВывода. КАк сделать чтобы она была фиксированная?
  20. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вы послелующие ячейки (справа от картинки) объединили?

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