Макет, секции, печать

  1. 9 г. назад

    Чёт я запуталась...
    Есть такой макет:
    Безымянный.jpg
    Хочу, чтобы в зависимости от условия, выводилась или Строка или Строка1.
    Кроме того, данными табличками (на скрине) заполняется весь лист А4.
    Заполнение листа работает, но без условия по выводу строк.
    Как со строками быть?

    Ответы: (33)
  2. ВывестиСекцию("Строка1|ЦенникГоризонталь")

  3. Код забыла:

    	гТабВыборка.ВыбратьСтроки();
    	Пока гТабВыборка.ПолучитьСтроку() = 1 Цикл
    		Если гТабВыборка.Пометка = 1 Тогда
    			ПечЗаголовок 		= гТабВыборка.ЗаголовокЦенника;
    			ПечПроизводитель	= гТабВыборка.ФирмаПроизводитель;
    			ПечТаб.ВывестиСекцию("Заголовок");
    			
    			// проверим - флешки USB 3.0 - используем другую строку
    			СтрокаПоиска = СокрЛП(гТабВыборка.Описание);
    			Если (Найти(СтрокаПоиска, "USB 3.0") > 0) Тогда
    				ПечМодель 	= СокрЛП(гТабВыборка.Модель);
    				ПечОписание = СокрЛП(гТабВыборка.Модель);
    				ПечТаб.ВывестиСекцию("Строка1");
    			Иначе
    				мМодель		= ?(СтрДлина(гТабВыборка.Модель) > 0, СокрЛП(гТабВыборка.Модель), "");
    				мОписание	= ?(СтрДлина(гТабВыборка.Описание) > 0, СокрЛП(гТабВыборка.Описание), "");
    				ПечМодель	= мМодель + ?((СтрДлина(гТабВыборка.Модель) > 0) И (СтрДлина(гТабВыборка.Описание) > 0), ", ", "") + СокрЛП(мОписание);
    				ПечТаб.ВывестиСекцию("Строка");
    			КонецЕсли;
    			
    			ПечСтрана			= "(" + гТабВыборка.СтранаПроизводитель + ")";
    			ПечЦена				= гТабВыборка.Цена;
    			ПечКод				= "(" + гТабВыборка.Код + ")";
    			ПечТаб.ВывестиСекцию("Подвал");
    			
    			Если ТекКолонка > ВсегоКолонок Тогда
    				ТекКолонка 	= 1;
    				ТекСтрока 	= ТекСтрока + 1;
    			КонецЕсли;
    			
    			Если ТекСтрока > ВсегоСтрок Тогда
    				ТекСтрока	= 1;
    				ПечТаб.НоваяСтраница();
    			КонецЕсли;
    			
    			Если ТекКолонка = 1 Тогда
    				ПечТаб.ВывестиСекцию("ЦенникВертикаль|ЦенникГоризонталь");
    			Иначе
    				ПечТаб.ПрисоединитьСекцию("ЦенникВертикаль|ЦенникГоризонталь");
    			КонецЕсли;
    			
    			ТекКолонка = ТекКолонка + 1;
    		КонецЕсли;
    	КонецЦикла;
    
  4. вот здесь ПечТаб.ВывестиСекцию("ЦенникВертикаль|ЦенникГоризонталь");
    выводятся все строчки скопом

    Ответы: (4)
  5. (3) И как сделать по условию?

    Ответы: (7)
  6. Мыслей нет? Никаких?

  7. мысль такая, что нужно код переписать
    и везде, где идёт вывод строки - проверять Если ТекКолонка = 1 Тогда

    а вот это

    Если ТекКолонка = 1 Тогда
    ПечТаб.ВывестиСекцию("ЦенникВертикаль|ЦенникГоризонталь");
    Иначе
    ПечТаб.ПрисоединитьСекцию("ЦенникВертикаль|ЦенникГоризонталь");
    КонецЕсли;

    убрать

    Ответы: (10)
  8. (4) Выводить и присоединять построчно/посекционно. Начиная от
    ПечТаб.ВывестиСекцию("Заголовок|ЦенникГоризонталь");
    но (плохо помню) придется исходную таб, разбивать поблочно (в промежуточную ТЗ) на число строк равное числу "умещающихся столбцов", и уже эти блоки "скармливать" макету, через ПрисоединитьСекцию.

    Ответы: (8) (10)
  9. (7) не надо ТЗ разбивать

    Ответы: (9)
  10. (8) Ну считать строки по числу столбцов, какая разница.

  11. (6)(7) Вас пока дождешься... 1cool_choler.gif
    Уже сделала cute_smiley18.gif
    В макете:
    Безымянный.jpg
    Код

    			// проверим - флешки USB 3.0 - используем другую строку
    			СтрокаПоиска = СокрЛП(гТабВыборка.Описание);
    			Если (Найти(СтрокаПоиска, "USB 3.0") > 0) Тогда
    				ПечМодель 	= СокрЛП(гТабВыборка.Модель);
    				ПечОписание = СокрЛП(гТабВыборка.Модель);
    				ИмяСекции = "ЦенникВертикаль3";
    				//ПечТаб.ВывестиСекцию("ЦенникВертикаль|Строка1");
    			Иначе
    				мМодель		= ?(СтрДлина(гТабВыборка.Модель) > 0, СокрЛП(гТабВыборка.Модель), "");
    				мОписание	= ?(СтрДлина(гТабВыборка.Описание) > 0, СокрЛП(гТабВыборка.Описание), "");
    				ПечМодель	= мМодель + ?((СтрДлина(гТабВыборка.Модель) > 0) И (СтрДлина(гТабВыборка.Описание) > 0), ", ", "") + СокрЛП(мОписание);
    				//ПечТаб.ВывестиСекцию("ЦенникВертикаль|Строка");
    				ИмяСекции = "ЦенникВертикаль";
    			КонецЕсли;
    ...
    			Если ТекКолонка = 1 Тогда
    				//ПечТаб.ВывестиСекцию("ЦенникВертикаль|ЦенникГоризонталь");
    				ПечТаб.ВывестиСекцию(ИмяСекции + "|ЦенникГоризонталь");
    
    			Иначе
    				//ПечТаб.ПрисоединитьСекцию("ЦенникВертикаль|ЦенникГоризонталь");
    				ПечТаб.ПрисоединитьСекцию(ИмяСекции + "|ЦенникГоризонталь");
    			КонецЕсли;
    

    Какая я... Умная cute_smiley52.gif
    Всем - спасибо!

    Ответы: (12)
  12. Если (Найти(СтрокаПоиска, "USB 3.0") > 0) Тогда
    

    гвоздь мне в кеды.

    Ответы: (13)
  13. (10) О! Круто. Маладца!

    Ответы: (14)
  14. (11) А что не так?

    Ответы: (15)
  15. (12) Спасибо.jpg

  16. (13) настораживает, когда понадобиться не только для USB 3.0 выводить такой ценник, что потом будешь делать с этим кодом?

    Ответы: (16) (18)
  17. (15) Пока - только для USB (нужно выделить на ценнике). Остальные - стандартно.

    Ответы: (17) (18)
  18. (16) понятно, временно-постоянное решение.

    Ответы: (19)
  19. (15) Отрабатывать зарплату она будет. Я помню когда розницей занимался, минимум раз в неделю эти ценники переписывал.
    (16) Не обращай, наименование элемента в коде - это за то что семерошников на экзамене посылали переучиваться. Рудименты образования.

    Ответы: (19)
  20. (17) Данная обработка работает уже года 4 (если мне память не изменяет). Доделок - не требовалось. Только вот сейчас.
    (18) А как условие составлять правильно, если различие между "Внешний носитель информации USB 2.0 16 Гб Apacer Handy Steno AH321" и "Внешний носитель информации USB 2.0 16 Гб Transcend 700 (USB 3.0)" (в данном случае) только в "USB 3.0"?

  21. а если в наименовании вместо "USB 3.0" забьют "USB3.0" или "USB 3,0" ?

    Ответы: (21)
  22. (20) Забьют - исправят.

    Ответы: (23)
  23. Правильно, все инструкции, потом можно спокойно бить по рукам и говорить, а вот в этой инструкции написано вводить только "USB 3.0" и адынэсник не виноват, что пользователи такие тупые.

    Ответы: (24) (25)
  24. +(21) После заполнения ТЧ для печати, выводится пред. просмотр, а из него уже можно печатать. Так что ошибки видно.

  25. (22) Все ошибки - не предусмотреть.

  26. (22) не-не-не, правильный одинэсник должен предложить написать обработку по переконвертации наименований номенклатуры из "USB3.0" или "USB 3,0" в "USB 3.0".
    за деньги, ессесно

    Ответы: (26)
  27. (25) Не передергивай. Если переименовать много надо - можно поговорить, а пару - тройку - десятку - ручками. Зато - научатся и в памяти отложится.

    Ответы: (27)
  28. Масянька Не передергивай.

    и в мыслях не было!

    Ответы: (28)
  29. (27) Просто как-то попросили написать обработку для загрузки номенклатуры из прайса... Я посмотрела на прайс (около 10 тысяч)... Говорю - вот зачем? Мне - надо. Лады. Написала. Грузили около часа. Через неделю (!!!) - на фиг удали.

  30. Господя двоешники ...
    ВывестиСекцию(<?>);
    Синтаксис:
    ВывестиСекцию(<ИмяСекции>)
    Назначение:
    Перенести секцию исходной таблицы-шаблона в результирующую таблицу.
    Параметры:
    <ИмяСекции> - выражение типа строка, задающее имя выводимой секции, или значение типа секция, полученное при помощи метода ПолучитьСекцию.
    Имя секции задается строковым выражением следующего формата:
    ИдентификаторСекции1[<|>|-][|ИдентификаторСекции2[<|>|-]]
    Символы ''<'' , ''>'' , ''-'' после идентификатора секции указывают на то, что выбирается только часть секции. ''<'' - заголовочная часть (с начала секции до начала вложенной секции). ''>'' - подвальная часть (с конца вложенной секции до конца секции). ''-'' - средняя часть (собственно вложенная секция).
    В выражении можно задавать имена двух секций, разделенных знаком ''|''. При этом будет получена область исходной таблицы, являющаяся пересечением первой и второй указанных секций. При этом одна секция может быть горизонтальной (состоять из строк), а другая - вертикальной (состоять из колонок).

    Ответы: (33)
  31. А Масянька-то растет... В семерке нет понятия "макет", стало быть восьмерку учит худо-бедно...

  32. Андрю, а отчего твой сервак пишет "невозможно связаться с сервером, подождите немного или идите в жопу"?

    Ответы: (32)
  33. (31) Сейчас правда прошло, минуты три всего было...

  34. (29) Смотрела я на это...
    Фишка в том, что если использовать Секции - гемморойно.
    Посмотри в скрине (0) - есть маленький квадратик, который нужно заполнить и вывести, но заполненными квадратиками нужно заполнить лист формата А4 (по ширине и длине).

или зарегистрируйтесь чтобы ответить!