7.7 В печатной форме дублируются последние строки с 1-ого листа

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем MyNameNoName, 6 май 2015.

  1. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. В 1С 7.7 фамилии с подписантами документа (печатная форма самописная) вынесено в одну область - подвал. При печати если оно не влазит в одно поле то на 2-ом листе печатаются два последних подписанта с 1-ого листа. Как это исправить?
    Спасибо.
    --- Объединение сообщений, 6 май 2015 ---
    Форма выводится верная. А на предварительном просмотре и при печати идет не правильный перенос (дублирование). Настройка параметров страницы не помогает. Только вместить все на один лист.
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    В параметрах страницы ставить "по ширине листа" не пробовали?
    MyNameNoName нравится это.
  3. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Стоит. Смотрите что происходит:
    1-ый лист:
    upload_2015-5-6_17-5-35.png
    2-ой лист
    upload_2015-5-6_17-5-52.png
    материально-
    и между ней влезает предыдущая строка
    а затем ответственное лицо.
    --- Объединение сообщений, 6 май 2015 ---
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    покажите макет
    MyNameNoName нравится это.
  5. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Я пробовал и так и так:
    upload_2015-5-6_17-28-32.png

    и по блокам бил:

    upload_2015-5-6_17-30-3.png

    не помогло.
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    вы не поняли... Выложите в виде mxl таблицы.
    И в коде у вас случайно нет метода ПовторятьПриПечатеСтроки?
    MyNameNoName нравится это.
  7. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
  8. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Нет.
  9. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Доброе утро.
    Все еще ищу ответ. Если можете помогите.
  10. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Киньте код Вашей процедуры печати
    MyNameNoName нравится это.
  11. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Магия 5го уровня... Удаленно подключиться есть возможность?
    MyNameNoName нравится это.
  12. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    К сожалению нет...
    --- Объединение сообщений, 12 май 2015 ---
    Код:
    Процедура Печать(СразуНаПринтер = 0,КолЭкз = 1,ЧтоПечатаем=1)
       
        Перем КолвоНаСтранице;
        Перем ВысотаПодвала;
        Перем ТекСтрокаНаСтр, ТекСтрока;
        Перем ПечФорма;
        Перем Поз;
       
          // таблицы значений
        Перем ТабДок;  // состав документа
        Перем ТабДвиж; // движения документа в регистре партии наличие
        Перем ТабПеч;  // подготовленные данные для печати
       
        Если Проведен() = 0 Тогда
            если ЧтоПечатаем=1 тогда
                Предупреждение("По форме ТОРГ-16 можно распечатать только проведенный документ", 60);
            ИначеЕсли ЧтоПечатаем=2 тогда
                Предупреждение("По форме ""АКТ списания ТМЦ"" можно распечатать только проведенный документ", 60);
            ИначеЕсли ЧтоПечатаем=3 тогда
                Предупреждение("По форме ""АКТ ввода спецодежды"" можно распечатать только проведенный документ", 60);
            ИначеЕсли ЧтоПечатаем=4 тогда
                Предупреждение("По форме ""АКТ списания ТМЦ НОВЫЙ"" можно распечатать только проведенный документ", 60);           
            КонецЕсли;
            Возврат;
        КонецЕсли;
       
        СуммаИтого    = 0;
       
        //********************************************************************************
       
        КолвоНаТитСтранице    = 24;
       
        КолвоНаСтранице    = 40;
        ВысотаПодвала    = 13;
       
        СтрокНаТекСтранице = 0;
        ТекСтрокаНаСтр    = 1;
        ТекСтрока        = 1;
       
        НачалоПовтора    = 1;
        КонецПовтора    = 1;
       
        ПечФорма    = СоздатьОбъект("Таблица");
        если ЧтоПечатаем=1 тогда
            ПечФорма.ИсходнаяТаблица("Таблица");
        Иначеесли ЧтоПечатаем=2 тогда
            ПечФорма.ИсходнаяТаблица("Таблица2");
        Иначеесли ЧтоПечатаем=3 тогда
            ПечФорма.ИсходнаяТаблица("Таблица3");
        Иначеесли ЧтоПечатаем=4 тогда
            ПечФорма.ИсходнаяТаблица("Таблица4");
        КонецЕсли;
       
        // титульный лист
        ПечФорма.ВывестиСекцию("ШапкаОтчета");
        НачалоПовтора    = НачалоПовтора + ПечФорма.ВысотаСекции("ШапкаОтчета");
       
        если ЧтоПечатаем=1 тогда
           
            ПечФорма.ВывестиСекцию("ШапкаТаб1");
            НачалоПовтора    = НачалоПовтора + ПечФорма.ВысотаСекции("ШапкаТаб1");
           
            // печатаем таблицу титульного листа
            РегПартииНаличие = СоздатьОбъект("Регистр.ПартииНаличие");
            РегПартииНаличие.ВыбратьДвиженияДокумента(ТекущийДокумент());
            Пока РегПартииНаличие.ПолучитьДвижение() = 1 Цикл
                ДокПоступления = РегПартииНаличие.Партия.ПриходныйДокумент;
                Если глЕстьРеквизитШапки("НомерДокВходящий", ДокПоступления.Вид()) = 1 Тогда
                    Если ПустоеЗначение(ДокПоступления.НомерДокВходящий) = 0 Тогда
                        НомерДокВходящий    = СокрЛП(ДокПоступления.НомерДокВходящий);
                        ДатаДокВходящий        = ДокПоступления.ДатаДокВходящий;
                    Иначе
                        НомерДокВходящий    = глНомерНаПечать(ДокПоступления);
                        ДатаДокВходящий        = ДокПоступления.ДатаДок;
                    КонецЕсли;
                Иначе
                    НомерДокВходящий    = глНомерНаПечать(ДокПоступления);
                    ДатаДокВходящий        = ДокПоступления.ДатаДок;
                КонецЕсли;
               
                ПечФорма.ВывестиСекцию("СтрокаТаб1");
            КонецЦикла;
           
            ПечФорма.ВывестиСекцию("ПоследняяСтрокаТаб1");
           
            Если ЧтоПечатаем<>4 тогда
                ПечФорма.НоваяСтраница();
            КонецЕсли;
        КонецЕсли;
       
        если ЧтоПечатаем=2 тогда
            ПечФорма.ВывестиСекцию("ПоследняяСтрокаТаб1");
        ИначеЕсли ЧтоПечатаем=3 тогда
            ПечФорма.ВывестиСекцию("ПоследняяСтрокаТаб1");
        КонецЕсли;
       
        ПечФорма.ВывестиСекцию("ШапкаТаб2");
       
        НачалоПовтора    = НачалоПовтора + КолвоНаТитСтранице+1;
        КонецПовтора    = НачалоПовтора + ПечФорма.ВысотаСекции("ШапкаТаб2");
        ПечФорма.ПовторятьПриПечатиСтроки(НачалоПовтора, КонецПовтора);
               
        // сформируем таблицу значений по движениям документа
       
        ТабДвиж = СоздатьОбъект("ТаблицаЗначений");
        ТабДвиж.НоваяКолонка("Номенклатура");
        ТабДвиж.НоваяКолонка("Количество");
        ТабДвиж.НоваяКолонка("Сумма");
    
        РегПартии = СоздатьОбъект("Регистр.ПартииНаличие");
        РегПартии.ВыбратьДвиженияДокумента(ТекущийДокумент());
       
        Пока РегПартии.ПолучитьДвижение() = 1 Цикл
            ТабДвиж.НоваяСтрока();
            ТабДвиж.Номенклатура = РегПартии.Номенклатура;
            ТабДвиж.Количество   = РегПартии.Количество;
            ТабДвиж.Сумма        = РегПартии.СуммаБезНДС;
        КонецЦикла;
       
            //ЦенаПеч  = ?(ТабТаблЧасть.Количество = 0, ТабТаблЧасть.Сумма, ТабТаблЧасть.Сумма / ТабТаблЧасть.Количество);
           
        // выгрузим табличную часть документа в таблицу значений
       
        ВыгрузитьТабличнуюЧасть(ТабДок, "Номенклатура, Количество, Единица, Коэффициент");
       
        // сформируем таблицу значений для печати
       
        ТабПеч = СоздатьОбъект("ТаблицаЗначений");
        ТабПеч.НоваяКолонка("Номенклатура");
        ТабПеч.НоваяКолонка("Количество");
        ТабПеч.НоваяКолонка("Единица");
        ТабПеч.НоваяКолонка("Цена");
        ТабПеч.НоваяКолонка("Сумма");
        ТабПеч.НоваяКолонка("СчСтроки");
       
        ТабДок.ВыбратьСтроки();
        СчСтроки=0;
        Пока ТабДок.ПолучитьСтроку() = 1 Цикл
    
            Поз = 0;
            Пока (ТабДвиж.НайтиЗначение(ТабДок.Номенклатура, Поз, "Номенклатура") = 1)
               и (ТабДок.Количество > 0)
            Цикл
                ТабДвиж.ПолучитьСтрокуПоНомеру(Поз);
               
                // получим текущее количество в документе в базовой единице
                ТекКолво = ТабДок.Количество * ТабДок.Коэффициент;
                // в таблицу печати добавляем количество - минимум из регистра и документа
                ИспКолво = Мин(ТабДвиж.Количество, ТекКолво);
                ИспСумма = ИспКолво * ТабДвиж.Сумма / ТабДвиж.Количество;
               
                // заполняем таблицу
                ТабПеч.НоваяСтрока();
                СчСтроки=СчСтроки+1;
                ТабПеч.СчСтроки = СчСтроки;
                ТабПеч.Номенклатура = ТабДок.Номенклатура;
                ТабПеч.Количество   = ?(ТабДок.Коэффициент = 0, ИспКолво, ИспКолво / ТабДок.Коэффициент);
                ТабПеч.Единица      = ТабДок.Единица;
                ТабПеч.Сумма        = ИспСумма;
                ТабПеч.Цена         = ?(ТабПеч.Количество = 0, ТабПеч.Сумма, ТабПеч.Сумма / ТабПеч.Количество);
               
               
                Если ТабДвиж.Количество <= ИспКолво Тогда
                    // количество полностью использовано. Удалим строку из таблицы, чтобы
                    // на следующем шаге итереции могла бы найтись строка с этим же товаром, но
                    // из другой партии (конечно, если такое движение было)
                    ТабДвиж.УдалитьСтроку(Поз);
                Иначе
                    // количество в движении больше чем в строке докуиента (может быть из-за
                    // того, что табличной части документа встречаются строки с одинаковыми товарами)
                    ТабДвиж.Количество = ТабДвиж.Количество - ИспКолво;
                КонецЕсли;
               
                ТабДок.Количество = ТабДок.Количество - ТабПеч.Количество;
               
                Поз = 0;
            КонецЦикла;
           
        КонецЦикла;
       
        ТабПеч.Свернуть("Номенклатура,Единица,Цена,СчСтроки", "Количество,Сумма");
       
        // формируем выходную таблицу
       
        ТабПеч.ВыбратьСтроки();
        Пока ТабПеч.ПолучитьСтроку() = 1 Цикл
           
            Если (ТекСтрока = ТабПеч.КоличествоСтрок()) Тогда   // последняя строка
                СтрокНаТекСтранице    = КолвоНаСтранице - ВысотаПодвала;
            Иначе
                СтрокНаТекСтранице    = КолвоНаСтранице;
            КонецЕсли;
       
            Если ТекСтрокаНаСтр > СтрокНаТекСтранице Тогда // целая страница
                // печатаем пустые строки
                Для Инд = ТекСтрокаНаСтр по КолвоНаСтранице Цикл
                    Если ЧтоПечатаем<>4 Тогда
                        ПечФорма.ВывестиСекцию("ПустаяСтрокаТаб2");
                    КонецЕсли;
                КонецЦикла;
                
                Если ЧтоПечатаем<>4 Тогда
                    ПечФорма.ВывестиСекцию("ПоследняяСтрокаТаб2");
                КонецЕсли;
               
                // начинаем новую страницу
                Если ЧтоПечатаем<>4 тогда
                    ПечФорма.НоваяСтраница();
                КонецЕсли;
                ТекСтрокаНаСтр = 1;
            КонецЕсли;
           
            СуммаИтого    = СуммаИтого + ТабПеч.Сумма;
    
            ПечФорма.ВывестиСекцию("СтрокаТаб2");
            // увеличиваем на единицу нумерацию строк
            ТекСтрокаНаСтр    = ТекСтрокаНаСтр + 1;
            ТекСтрока        = ТекСтрока      + 1;
           
        КонецЦикла;
       
        // печатаем пустые строки на последней странице
        Для Инд = ТекСтрокаНаСтр по СтрокНаТекСтранице Цикл
            Если ЧтоПечатаем<>4 Тогда
                ПечФорма.ВывестиСекцию("ПустаяСтрокаТаб2");
            КонецЕсли;
           
        КонецЦикла;
    
        // печатаем секцию итого на последней странице
        Если ЧтоПечатаем<>4 Тогда
            ПечФорма.ВывестиСекцию("ПоследняяСтрокаТаб2");
        КонецЕсли;
        ПечФорма.ВывестиСекцию("ИтогоТаб2");
        ПечФорма.ВывестиСекцию("ПодвалТаб2");
       
        Если СразуНаПринтер = 0 Тогда
            ПечФорма.Опции(0, 0, 0, 0, ПарСтрДок);
    
            Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда
                ПечФорма.Защита(1);
            Иначе
                ПечФорма.Защита(0);
            КонецЕсли;
            ПечФорма.ТолькоПросмотр(1);
    
            ПечФорма.Показать(глНазваниеДокументаВжурнале(Контекст),""); 
        Иначе    
            ПечФорма.ПараметрыСтраницы(,,,,,,,,,1,,);
            ПечФорма.КоличествоЭкземпляров(КолЭкз);
            ПечФорма.Напечатать(0);
        КонецЕсли;
       
    КонецПроцедуры // Печать()
  13. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Я же вас спрашивал в посте №6 есть ли ПовторятьПриПечатиСтроки. Вы ответили что нет....
    А вот кусок из вашего кода...
    Код:
      
        НачалоПовтора    = НачалоПовтора + КолвоНаТитСтранице+1;
        КонецПовтора    = НачалоПовтора + ПечФорма.ВысотаСекции("ШапкаТаб2");
        ПечФорма.ПовторятьПриПечатиСтроки(НачалоПовтора, КонецПовтора);
              
        // сформируем таблицу значений по движениям документа
    
    Копайте в этом направлении
    MyNameNoName нравится это.
  14. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Я через поиск воспользовался ничего не нашел. Там просто вы писали ПовторятьПриПечате!Строки а тут ПовторятьПриПечати!Строки.
    Большое спасибо.
  15. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Описка чистой воды...
    Могли и проверить метод на существование)))))))
    Обращайтесь
    MyNameNoName нравится это.

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