8.х Некорректно работает метод ПроверитьВывод()

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

  1. TopicStarter Overlay
    skygge
    Offline

    skygge

    Регистрация:
    15 сен 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Доброго всем времени суток. Печатаю ценники все красиво все хорошо. Проверяю помещается ли новый ценник на этой страницы методом ПроверитьВывод(), если нет то делаю горизонтальный разрыв и переношу новый ценник на новую страницу если помещается то вывожу на эту страницу. Проблема в чем для первой страницы он делает разрыв раньше чем нужно, т.е. остается еще место для двух рядов ценников, но он переносит на новую страницу. А начиная со второй страницы все красиво.

    P.S.
    HELP ..java script:emoticon(':aua:', 'smid_5')

    Вот код

    Код:
    Если НЕ ЗначениеЗаполнено(Организация) Тогда
    Предупреждение("Не выбрана организация!");
    Возврат;
    КонецЕсли;
    
    ТабДокумент                       = Новый ТабличныйДокумент;
    ТабДокумент.АвтоМасштаб           = Истина;
    ТабДокумент.ОриентацияСтраницы    = ОриентацияСтраницы.Портрет;
    ТабДокумент.ПолеСверху            = 0;
    ТабДокумент.ПолеСлева             = 5;
    ТабДокумент.ПолеСнизу             = 0;
    ТабДокумент.ПолеСправа            = 5;
    ТабДокумент.ТолькоПросмотр        = Истина;
    ТабДокумент.ОтображатьГруппировки = Ложь;
    ТабДокумент.ОтображатьЗаголовки   = Ложь;
    ТабДокумент.ОтображатьСетку       = Ложь;
    
    Макет                             = ПолучитьМакет("Ценник");
    ОбластьЦенника                    = Макет.ПолучитьОбласть("Строка|Столбец");
    
    ДатаПечати = РабочаяДата;
    
    ТекСтолбец = 0;
    ТекСтрока  = 0;
    МассивВыводимыхОбластей = Новый Массив;
    Для Каждого СтрокаТаблицы Из Товары Цикл
    Если СтрокаТаблицы.Печать Тогда
    Для Тмп = 1 По СтрокаТаблицы.Количество Цикл
    ОбластьЦенника.Параметры.Заполнить(СтрокаТаблицы);
    ОбластьЦенника.Параметры.НоменклатураНаименование        = СокрЛП(СтрокаТаблицы.Номенклатура.Наименование);
    ОбластьЦенника.Параметры.ЕдиницаНаименование             = СтрокаТаблицы.ЕдиницаИзмерения;
    ОбластьЦенника.Параметры.Цена                            = ОбщегоНазначения.ФорматСумм(СтрокаТаблицы.Цена, , "00");
    ОбластьЦенника.Параметры.ДатаПечати                      = ДатаПечати;
    ОбластьЦенника.Параметры.Организация                     = Организация;
    ОбластьЦенника.Параметры.Код                             = СтрокаТаблицы.Номенклатура.Код;
    
    МассивВыводимыхОбластей.Очистить();
    МассивВыводимыхОбластей.Добавить(ОбластьЦенника);
    
    Если НЕ ТабДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;
    
    
    Если ТекСтолбец = 0 Тогда
    ТабДокумент.Вывести(ОбластьЦенника);
    Иначе
    ТабДокумент.Присоединить(ОбластьЦенника);
    КонецЕсли;
    
    ТекСтолбец = ТекСтолбец + 1;
    
    Если ТекСтолбец = 5 Тогда
    ТекСтрока  = ТекСтрока + 1;
    ТекСтолбец = 0;
    КонецЕсли;
    
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    
    ТабДокумент.Показать();
    
    
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.433
    Симпатии:
    49
    Баллы:
    54
    Здраствуйте!
    Есл честно, ошибок не вижу, лист ни чем не ограничен?
    Функцию ПроверитьВывод 1С-ники так и не доработали, я бы порекомендовал использовать метод ПОПЫТКА, в противном случае, если принтер не установлен, выкидывает ошибку, пользователю вовсе не понятную (вывод прерывается), он сразу пугается и бежит к программисту.
  3. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    17
    Баллы:
    29
    Мелочь: перенесите проверку внутрь условия на ТекущаяКолонка = 0 (зачем проверять высоту каждый раз, если вы выводите по горизонтали?)

    Также проверьте, что стоит в настройках печати для первой страницы - может, у вас задан колонтитул нижний огромный?
  4. XXL
    Offline

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

    Регистрация:
    22 янв 2007
    Сообщения:
    1.177
    Симпатии:
    19
    Баллы:
    29
    Доброго дня.
    Чтобы не плодить тем, напишу сюда.
    Суть метода ПроверитьВывод() понятна, но никак не допру до следующего:
    у меня, допустим, 7 областей, если они все не умещаются на страницу, то надо переносить на следующую с 3 по 7ую области.
    Вопрос1 - мне перед проверкой ПроверитьВывод() надо описывать все области Область1 = Макет.ПолучитьМакет("Область1")...Область7 = Макет.ПолучитьМакет("Область7");
    Вопрос2 - Если у меня области 3 и 5 это строки и их надо выводить в зависимости то результатов запроса, ну 3 область, понятно, всю вывела, потом, по идее, надо проверять, умещается или нет. что делать с областью 5? В какой момент делать проверку?
  5. 1с-ник
    Online

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    881
    Симпатии:
    151
    Баллы:
    104
    1) да, в с-п хороший пример;
    2) разумеется, при обходе результата запроса.
  6. XXL
    Offline

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

    Регистрация:
    22 янв 2007
    Сообщения:
    1.177
    Симпатии:
    19
    Баллы:
    29
    Ну вот, обхожу я результат, понимаю, что не поместится, как сделать, чтобы уже выведенные области 4 и часть 5 (несколько строк влезли на первую страницу) были целиком не второй странице?
  7. 1с-ник
    Online

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    881
    Симпатии:
    151
    Баллы:
    104
    Если они уже выведены, то никак. Проверка "на влезет" делается перед выводом области в табдок.
  8. XXL
    Offline

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

    Регистрация:
    22 янв 2007
    Сообщения:
    1.177
    Симпатии:
    19
    Баллы:
    29
    В том то и вопрос, если вся таблица не входит, то надо её целиком н другую страницу перенести.
  9. 1с-ник
    Online

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    881
    Симпатии:
    151
    Баллы:
    104
    не выводить сразу, а предварительно засунуть в массив областей и проверять вывод сей коллекции. пример в С-П.
  10. XXL
    Offline

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

    Регистрация:
    22 янв 2007
    Сообщения:
    1.177
    Симпатии:
    19
    Баллы:
    29
    Поняла:) премного благодарствую:)
    --- Объединение сообщений, 18 сен 2017 в 15:30 ---
    С-П обчиталась, не выходила полная картина.

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