Имя: Пароль:
1C
1С v8
На печать выходила пара чеков
0 Rizhij_Nikitos
 
15.09.11
11:04
Как сделать, чтобы на печать выходил не 1 товарный чек, а 2, то есть два табличных документа индентичных, а если не влазиют то второй идет на 2 старинцу. Как это все делается? Знаю, что делается через функции ПроверитьВывод(), а как и что не работает.
1 Шапокляк
 
15.09.11
11:05
"а как и что не работает"
исчерпывающе
2 Rizhij_Nikitos
 
15.09.11
13:33
Извините, не так сказал. Как и что работает не понятно, может быть пример как допустим выводить два одинаковых таб документа, и если оба не помещаются на одной странице, то переносить на другую.
3 Шапокляк
 
15.09.11
13:38
ТабличныйДокумент=Новый ТабличныйДокумент;
ТД=Новый Табличныйдокумент;
...заполняем ТД по макету нужной печатной формы;
ТабличныйДокумент.вывести(ТД);
... пытаемся еще раз вывести в Табличномдокументе ТД, при этом используем ПроверитьВывод.
если не помещается, то в ТабличномДокументе выводим горизонтальный разделитель страниц и потом
ТабличныйДокумент.вывести(ТД);
4 Rizhij_Nikitos
 
15.09.11
13:59
Спасибо большое. Я вроде понял, но вот дело такое примерно такое делал с таким вот кодом. Не особо работает горизонтальный разделитель и проверить вывод и пришлось все делать так. И еще не подскажете почему, у меня макеты немного сужаются, то есть первый нормальные, остальные все меньше и меньше идут по размерам.
ДокументПечати = Новый ТабличныйДокумент;
       ПоискВыбранных = Новый Структура();
       ПоискВыбранных.Вставить("Выбран",Истина);
       СтрокиДляПечати = Товары.НайтиСтроки(ПоискВыбранных);
       ЭтотОбъект = РеквизитФормыВЗначение("Объект");
       ПустойТабДок = Новый ТабличныйДокумент;
       Для НомерСтроки = 0 По СтрокиДляПечати.Количество()-1 Цикл
         ДокументЦенник = Новый ТабличныйДокумент;
         СтрокаДанных = СтрокиДляПечати.Получить(НомерСтроки);
         Макет= ЭтотОбъект.ПолучитьМакет(СтрокаДанных.ШаблонЦенника+СтрокаДанных.РазмерЦенника);
         ОбластьМакета = Макет.ПолучитьОбласть("Организация|Столбец");
         ОбластьМакета.Параметры.Организация = Объект.Организация;
         ДокументЦенник.Вывести(ОбластьМакета);
         ОбластьМакета = Макет.ПолучитьОбласть("Наименование|Столбец");
         ОбластьМакета.Параметры.Наименование = СтрокаДанных.Номенклатура;
         ДокументЦенник.Вывести(ОбластьМакета);
         Попытка      
             Если СтрокаДанных.ШаблонЦенника = "ЦенникЛинолеум" Тогда
                 ОбластьМакетаЦена = Макет.ПолучитьОбласть("Цена|Столбец");
                 ОбластьМакетаЦена.Параметры.Цена = ПредставлениеЦены(СтрокаДанных.Цена,Объект.Валюта);
                 ОбластьМакетаДопЦена = Макет.ПолучитьОбласть("ДопЦена");
                 ОбластьМакетаДопЦена.Параметры.ДопЦена = ПредставлениеЦены(СтрокаДанных.ДопЦена,Объект.Валюта);
                 ДокументЦенник.Вывести(ОбластьМакетаДопЦена);
                 ДокументЦенник.Вывести(ОбластьМакетаЦена);
             ИначеЕсли СтрокаДанных.ШаблонЦенника = "ЦенникПлитка" ИЛИ СтрокаДанных.ШаблонЦенника="ЦенникЛаминат" Тогда
                 ОбластьМакетаЦена = Макет.ПолучитьОбласть("Цена");
                 ОбластьМакетаЦена.Параметры.Цена = ПредставлениеЦены(СтрокаДанных.Цена,Объект.Валюта);
                 ОбластьМакетаДопЦена = Макет.ПолучитьОбласть("ДопЦена|Столбец");
                 ОбластьМакетаДопЦена.Параметры.ДопЦена = ПредставлениеЦены(СтрокаДанных.ДопЦена,Объект.Валюта);
                 ДокументЦенник.Вывести(ОбластьМакетаЦена);
                 ДокументЦенник.Вывести(ОбластьМакетаДопЦена);
             ИначеЕсли СтрокаДанных.ШаблонЦенника = "ЦенникБольшинствоТоваров" Тогда
                 ОбластьМакетаЦена = Макет.ПолучитьОбласть("Цена|Столбец");
                 ОбластьМакетаЦена.Параметры.Цена = ПредставлениеЦены(СтрокаДанных.Цена,Объект.Валюта);
                 ДокументЦенник.Вывести(ОбластьМакетаЦена);
                 ОбластьМакета = Макет.ПолучитьОбласть("ЕдиницаИзмерения|Столбец");
                 ОбластьМакета.Параметры.ЕдиницаИзмерения = СтрокаДанных.Упаковка;
                 ДокументЦенник.Вывести(ОбластьМакета);
             КонецЕсли;
     Исключение
     КонецПопытки;
   
         ОбластьМакета = Макет.ПолучитьОбласть("КодТовара|Столбец");
         ОбластьМакета.Параметры.КодТовара = СтрокаДанных.Код;
         ДокументЦенник.Вывести(ОбластьМакета);
         ОбластьМакета = Макет.ПолучитьОбласть("Подпись|Столбец");
         ДокументЦенник.Вывести(ОбластьМакета);
         //Заполняем выходной документ ценниками с их указанным количеством
         Если СтрокаДанных.РазмерЦенника = "Малыш" Тогда
             КоличествоВСтроке = 4;
             КоличествоСтрок = 8;
         ИначеЕсли СтрокаДанных.РазмерЦенника = "Малый" Тогда
             КоличествоВСтроке = 2;
             КоличествоСтрок = 6 ;
         ИначеЕсли СтрокаДанных.РазмерЦенника = "Средний" Тогда
             КоличествоВСтроке = 1;
             КоличествоСтрок = 5;
         ИначеЕсли СтрокаДанных.РазмерЦенника = "Большой" Тогда
             КоличествоВСтроке = 1;
             КоличествоСтрок =2;
         КонецЕсли;
         ТекСтолбец = 0;
         ТекСтрока = 0;
         Для КоличествоКопией = 0 По СтрокаДанных.КоличествоЦенников-1 Цикл
                 Если ТекСтолбец <КоличествоВСтроке Тогда
                   ДокументПечати.Присоединить(ДокументЦенник);
                   ДокументПечати.ВывестиВертикальныйРазделительСтраниц();
                   ТекСтолбец = ТекСтолбец + 1;
               КонецЕсли;
               Если ТекСтолбец = КоличествоВСтроке Тогда
                   ТекСтрока  = ТекСтрока + 1;
                   ТекСтолбец = 0;
                   ДокументПечати.Вывести(ПустойТабДок);
                 КонецЕсли;
               Если ТекСтрока = КоличествоСтрок И КоличествоКопией<СтрокаДанных.КоличествоЦенников-1 Тогда
                   ТекСтрока = 0;
                   ДокументПечати.ВывестиГоризонтальныйРазделительСтраниц();
               КонецЕсли
           КонецЦикла;
       //переход на новую страницу для ценников другого товара
       ДокументПечати.ВывестиГоризонтальныйРазделительСтраниц();
   КонецЦикла;
         ДокументПечати.ОтображатьСетку = Ложь;
   Возврат ДокументПечати;
Программист всегда исправляет последнюю ошибку.