Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Не отображается последняя стока из документа в шаблонах

Не отображается последняя стока из документа в шаблонах
Я
   Novaginn
 
20.08.20 - 11:33
Уважаемые форумчане, подскажите. Есть шаблон. Есть документ с Таблицей товары (Любое количество строк товаров). 4-я по счету всегда не отображается. Полтергейст какой-то. Крутила-вертела функцию присоединить, ничего не помогает.

Запрос = Новый запрос;
    Запрос.Текст ="ВЫБРАТЬ
                  |    ПеремещениеТоваровТовары.Номенклатура.Наименование КАК Наименование,
                  |    ПеремещениеТоваровТовары.Номенклатура.ТМЦ_Партия КАК Партия,
                  |    ПеремещениеТоваровТовары.Номенклатура.ТМЦ_ДатаИзготовления КАК ДатаИзготовления,
                  |    ПеремещениеТоваровТовары.Номенклатура.ТМЦ_СрокХранения КАК СрокХранения,
                  |    ПеремещениеТоваровТовары.Количество КАК Количество,
                  |    ПеремещениеТоваров.Номер КАК Номер
                  |ИЗ
                  |    Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
                  |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
                  |        ПО ПеремещениеТоваровТовары.Ссылка = ПеремещениеТоваров.Ссылка
                  |ГДЕ
                  |    ПеремещениеТоваров.Номер = &Номер";
    
    Запрос.УстановитьПараметр("Номер", Номер);
    
    ТЗ = Запрос.Выполнить().Выгрузить();
    
    ПечатнаяФорма = Новый ТабличныйДокумент;
    Макет     = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    ТабличнаяЧастьСтрока = Макет.ПолучитьОбласть("Паспорт");
    

Для каждого Строка из ТЗ Цикл
//Пока Выборка.Следующий() Цикл
    
    Если ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ПечатнаяФорма, ТабличнаяЧастьСтрока) Тогда
        
    ТабличнаяЧастьСтрока.Параметры.НОМЕР = "";
    ТабличнаяЧастьСтрока.Параметры.Наименование = Лев(Строка.Наименование,СтрНайти(СокрЛП(Строка.Наименование)," "));
    ТабличнаяЧастьСтрока.Параметры.Марка = Сред(Строка.Наименование,СтрНайти(СокрЛП(Строка.Наименование)," "));
    ТабличнаяЧастьСтрока.Параметры.НомерЧертежа ="";
    ТабличнаяЧастьСтрока.Параметры.ГОСТ ="";
    ТабличнаяЧастьСтрока.Параметры.Партия = Строка.Партия;
    ТабличнаяЧастьСтрока.Параметры.Количество = Строка.Количество;
    ТабличнаяЧастьСтрока.Параметры.ДатаИзготовления = Строка.ДатаИзготовления;
    ТабличнаяЧастьСтрока.Параметры.СрокХранения = Строка.СрокХранения;
    
    Если ПечатнаяФорма.ПроверитьПрисоединение(ТабличнаяЧастьСтрока) Тогда
    ПечатнаяФорма.Присоединить(ТабличнаяЧастьСтрока);
    Иначе
    ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока);
    КонецЕсли;
                
    Иначе
    ПечатнаяФорма.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;
КонецЦикла;

Возврат ПечатнаяФорма;
   Галахад
 
1 - 20.08.20 - 11:52
Может не видно просто? А если вправо отмотать?
   Novaginn
 
2 - 20.08.20 - 13:05
Справа тоже ничего нет( Она просто не выходит. Именно 4-я по счету
   acht
 
3 - 20.08.20 - 13:22
(0) Потому что ты если БСП скажет тебе, что документ не помещается, ты вообще не выводишь область и прыгаешь на следующую строку таблицы/выборки. Так то!
   Novaginn
 
4 - 20.08.20 - 13:22
Если 9 строк, каждую 4 не печатает на макете, вышло 7. Может в коде что не так? Присоединить не правильно использую?
   Novaginn
 
5 - 20.08.20 - 13:26
Места предостаточно. Макет 1/4 листа , даже меньше. Он не пустое место оставляет а печатает следующую строку.Т.е. лист А4 заполнен полностью 4-ми шаблонами с данными.
   Novaginn
 
6 - 20.08.20 - 13:50
Проблема кроется в другом ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ПечатнаяФорма, ТабличнаяЧастьСтрока) = Ложь становится на 4-ой строке. Что делать? Без неё разделитель строки как ставить?
   acht
 
7 - 20.08.20 - 13:58
(6) Потому что ты если БСП скажет тебе, что документ не помещается, ты вообще не выводишь область и прыгаешь на следующую строку таблицы/выборки. Так то!
   Novaginn
 
8 - 20.08.20 - 14:00
Поменяла код на другой .Все работает.Всем спасибо за поддержку, что указали на ошибку!

К = 0;
Для каждого Строка из ТЗ Цикл
       К = К + 1;
    Если НЕ СтрЗаканчиваетсяНа(К/4,0) Тогда 
        
    ТабличнаяЧастьСтрока.Параметры.НОМЕР = "";
    ТабличнаяЧастьСтрока.Параметры.Наименование = Лев(Строка.Наименование,СтрНайти(СокрЛП(Строка.Наименование)," "));
    ТабличнаяЧастьСтрока.Параметры.Марка = Сред(Строка.Наименование,СтрНайти(СокрЛП(Строка.Наименование)," "));
    ТабличнаяЧастьСтрока.Параметры.НомерЧертежа ="";
    ТабличнаяЧастьСтрока.Параметры.ГОСТ ="";
    ТабличнаяЧастьСтрока.Параметры.Партия = Строка.Партия;
    ТабличнаяЧастьСтрока.Параметры.Количество = Строка.Количество;
    ТабличнаяЧастьСтрока.Параметры.ДатаИзготовления = Строка.ДатаИзготовления;
    ТабличнаяЧастьСтрока.Параметры.СрокХранения = Строка.СрокХранения;
    Если СтрЗаканчиваетсяНа(К/2,5) Тогда
        ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока);
    Иначе     
        ПечатнаяФорма.Присоединить(ТабличнаяЧастьСтрока);
    КонецЕсли;    
    Иначе
    ПечатнаяФорма.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;
КонецЦикла;

Возврат ПечатнаяФорма;
   Novaginn
 
9 - 20.08.20 - 14:03
А не! Разделитель не ставится.
   d4rkmesa
 
10 - 20.08.20 - 14:05
   acht
 
11 - 20.08.20 - 14:05
(8) > СтрЗаканчиваетсяНа(К/4,0)

1/4 = 0.25
2/4 = 0.5
3/4 = 0.75
4/4 = 1
5/4 = 1.25
6/4 = 1.5
7/4 = 1.75
8/4 = 2
...

Господь с тобой, женщина!
   Novaginn
 
12 - 20.08.20 - 14:26
Вот так исправила.Все работает. acht спасибо!

К = 0;
Для каждого Строка из ТЗ Цикл
       К = К + 1;
    ТабличнаяЧастьСтрока.Параметры.НОМЕР = "";
    ТабличнаяЧастьСтрока.Параметры.Наименование = Лев(Строка.Наименование,СтрНайти(СокрЛП(Строка.Наименование)," "));
    ТабличнаяЧастьСтрока.Параметры.Марка = Сред(Строка.Наименование,СтрНайти(СокрЛП(Строка.Наименование)," "));
    ТабличнаяЧастьСтрока.Параметры.НомерЧертежа ="";
    ТабличнаяЧастьСтрока.Параметры.ГОСТ ="";
    ТабличнаяЧастьСтрока.Параметры.Партия = Строка.Партия;
    ТабличнаяЧастьСтрока.Параметры.Количество = Строка.Количество;
    ТабличнаяЧастьСтрока.Параметры.ДатаИзготовления = Строка.ДатаИзготовления;
    ТабличнаяЧастьСтрока.Параметры.СрокХранения = Строка.СрокХранения;
    
    Если СтрЗаканчиваетсяНа(К/2,5) Тогда
        ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока);
    Иначе     
        ПечатнаяФорма.Присоединить(ТабличнаяЧастьСтрока);
    КонецЕсли;
    
    Если НЕ СтрЗаканчиваетсяНа(К/4,5) Тогда
        ПечатнаяФорма.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;

КонецЦикла;
   acht
 
13 - 20.08.20 - 14:34
(12) Продолжим...

17/4 = 0.25
18/4 = 4.5
19/4 = 4.75
20/4 = 5
21/4 = 5.25
22/4 = 5.75

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.