8.х Строка макета не выводится в полном виде

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем bajiepka, 29 окт 2014.

  1. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    Здравствуйте!
    Уважаемые форумчане! Помогите пожалуйста разобраться с такой проблемкой.
    КА 1.1, 1с 8.2, проблема заключается в следующем:
    1) сделал ВПФ гарантийного талона. всё работает, из текущего документа в РеализацияТоваровУслуг вытягивается товар и список указанных серийников. Технически это выглядит так: запросом выбирается вся таблица товаров и их серийных номеров. Затем циклом перебираются товары по номенклатуре. Для каждого выбранного товара по номенклатуре перебираются еще одним циклом все серийные номера. Второй цикл заводит все серийники в массив. Когда все серийники загружены - строки массива выгружаются в таблицу значений, где приводятся в конечный вид.
    2) на конкретном примере (гипотетическом, если учесть, что на книги гарантийки не дают): есть 15 книг, у каждой из которых есть серийник. При печати впф в форме выдает 10 серийных номеров и "..." вместо еще пяти. Т.е. каким-то макаром обрезаются серийники после 10-го. Вот как это выглядит на печати:
    [​IMG]
    Проблема со строкой, т.к. в массиве и списке значений всё правильно:
    - в массиве всё ок
    [​IMG]
    - и в списке значений всё ок
    [​IMG]
    - вот тут и вылазит этот "бок"
    [​IMG]
    я пытался задать большое значение длины строки, но всё также и осталось, вот код:

    СЗ = Новый СписокЗначений;
    СЗ.ЗагрузитьЗначения(Массив);
    КвалификаторыСтроки = Новый КвалификаторыСтроки(1000); //думаю 1000 символов должно хватить
    Строка = Новый ОписаниеТипов("Строка", ,КвалификаторыСтроки);
    Строка = СтрЗаменить(Строка(СЗ)," ",""); //убираю пробелы, которые делают менеджеры
    Строка = СтрЗаменить(Строка, ";", ", "); //пускаю все через запятую

    ОбластьНоменклатура.Параметры.ПечСерийныйНомер = "С/н: " + Строка;
    ТабДокумент.Вывести(ОбластьНоменклатура);
    Массив.Очистить();
    СЗ.Очистить();

    подскажите, что я делаю не так? чувствую, что недосмотрел что-то примитивное, но я хз уже...
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.580
    Симпатии:
    717
    Баллы:
    204
    На сколько понял суть проблемы:
    поставьте в свойствах ячейки табличного поля размещение текста - ПЕРЕНОСИТЬ и включите автовысоту строки для этой ячейки в макете ПФ.
  3. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    это всё стоит) там на две строки уже растянуло высоту с переносом... прикол в многоточии. оно проставляется вместо пяти серийных номеров. на последней картинке 10 серийников и "...", а на других в массиве - 15 и в СЗ - 15... куда 1с девает 5 серийных номеров и зачем вместо них ставит "..." я не понимаю...
    Последнее редактирование: 29 окт 2014
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.580
    Симпатии:
    717
    Баллы:
    204
    про свойства ячейки забыли, че-т меня не туда понесло :)
    проблема в этом:
    Строка = СтрЗаменить(Строка(СЗ)," ","");

    Не гоже так формировать строковое представление значений элементов списка значений.
    Необходимо циклом пробежаться по ВСЕМ элементам списка и сформировать строку конкатенацией значений каждого элемента.
    Можно было бы и из массива это все достать, к СЗ переходить смысла нет.
    bajiepka нравится это.
  5. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    всегда "боялся" конкатенации строк в цикле) но видимо выбора пока нет... буду пилить
  6. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    всё решается обычным строка = строка + обход.СерийныйНомер + ", " и чуть позже подрезка последней запятой... без массивов, без списков значений и т.д. ... вот же ужас какой! а я эти массивы мял пол дня...

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