Имя: Пароль:
1C
1С v8
Не работает проверка табличного документа
,
0 Miss1C
 
08.10.12
12:41
Не работает проверка табличного документа ПроверитьВывод(Массив).
При проверке всегда возвращается истина, какой бы ни был документ.

Функция Печать()Экспорт
   
   Объект = СсылкаНаОбъект.ПолучитьОбъект();
   ИмяМакета = ДополнительныеПараметры;
   КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "РежимФормированияПечатныхФорм"));
   
   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";
   ТабДокумент.АвтоМасштаб = Истина;
   Массив = Новый Массив;
       
   // Получить экземпляр документа на печат
   Если ИмяМакета.Макет = "Заказ" Тогда
       ТабДокумент = ПечатьСчетаЗаказа("Заказ");
   ИначеЕсли ИмяМакета.Макет = "Договор" Тогда
       ТабДокумент = Договор();
   ИначеЕсли ИмяМакета.Макет = "Счет" Тогда
       ТабДокумент = ПечатьСчетаЗаказаКорректировки("Счет");
   ИначеЕсли ИмяМакета.Макет = "Групповая" Тогда
       ТабДок1 = ПечатьСчетаЗаказа("Заказ");
       ТабДок2 = ВывестиШтрихПунктир();
       ТабДок3 = ПечатьСчетаЗаказаКорректировки("Счет");
       ТабДок4 = Договор();
       
       Массив.Добавить(ТабДок1);
       Массив.Добавить(ТабДок2);
       Массив.Добавить(ТабДок3);
       
       Если НЕ ТабДокумент.ПроверитьВывод(Массив) Тогда
           Сообщить("1,2,3 - Не влезло на листок");
           ТабДокумент.Вывести(ТабДок1);
           ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
           ТабДокумент.Вывести(ТабДок3);
       Иначе
           ТабДокумент.Вывести(ТабДок1);
           ТабДокумент.Вывести(ТабДок2);
           ТабДокумент.Вывести(ТабДок3);
           Массив.Добавить(ТабДок4);
           Сообщить("1,2,3 - Влезло на листок");
       КонецЕсли;    
   //Если НЕ ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент,Массив,)Тогда    
   //    Сообщить("4  - Не Взлетело");
   //    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
   //    ТабДокумент.Вывести(ТабДок4);
   //Иначе
   //    Сообщить("4  - Взлетело");
   //    ТабДокумент.Вывести(ТабДок4);
   //КонецЕсли;    
   
   КонецЕсли;
   
   Возврат ТабДокумент;
   
КонецФункции // СоздатьТабличныйДокументПечатиСчетаЗаказа()
1 Miss1C
 
08.10.12
12:49
Ап
2 PR
 
08.10.12
13:30
(0) А по факту не умещается?
3 PR
 
08.10.12
13:31
И что такое ТабДок1, ТабДок2, ТабДок3? Табличные документы или области?
4 Cashtane
 
08.10.12
13:39
(0) Может потому что Автомасштаб стоит? Попробуй без него.
5 Miss1C
 
08.10.12
13:52
(3)Табличные документы
6 Miss1C
 
08.10.12
13:52
(4)Пробовала
7 DrShad
 
08.10.12
13:53
(0) шо, опять!?!?!?
у тебя же уже была такая тема
8 Miss1C
 
08.10.12
13:54
(7)не совсем такая
9 DrShad
 
08.10.12
13:54
(8) точно такая же по сути
10 DrShad
 
08.10.12
13:55
11 Miss1C
 
08.10.12
13:56
Таким способом те которые не влезли нормально возвращается ложь, но те которые влезли тоже возвращают ложь;

Функция Печать()Экспорт
   
   Объект = СсылкаНаОбъект.ПолучитьОбъект();
   ИмяМакета = ДополнительныеПараметры;
   КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "РежимФормированияПечатныхФорм"));
   
   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";
   ТабДокумент.АвтоМасштаб = Истина;
   Массив = Новый Массив;
   ТД = Новый ТабличныйДокумент;
   ТД.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";
   //ТД.АвтоМасштаб = Истина;
   
   // Получить экземпляр документа на печат
   Если ИмяМакета.Макет = "Заказ" Тогда
       ТабДокумент = ПечатьСчетаЗаказа("Заказ");
   ИначеЕсли ИмяМакета.Макет = "Договор" Тогда
       ТабДокумент = Договор();
   ИначеЕсли ИмяМакета.Макет = "Счет" Тогда
       ТабДокумент = ПечатьСчетаЗаказаКорректировки("Счет");
   ИначеЕсли ИмяМакета.Макет = "Групповая" Тогда
       ТабДок1 = ПечатьСчетаЗаказа("Заказ");
       ТабДок2 = ВывестиШтрихПунктир();
       ТабДок3 = ПечатьСчетаЗаказаКорректировки("Счет");
       ТабДок4 = Договор();
       
       Массив.Добавить(ТабДок1);
       Массив.Добавить(ТабДок2);
       Массив.Добавить(ТабДок3);
       
       ТД.Очистить();
       ТД.Вывести(ТабДок1);
       ТД.Вывести(ТабДок2);
       ТД.Вывести(ТабДок3);
       
       Если НЕ ТД.ПроверитьВывод(ТД) Тогда
           Сообщить("1,2,3 - Не влезло на листок");
           ТабДокумент.Вывести(ТабДок1);
           ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
           ТабДокумент.Вывести(ТабДок3);
       Иначе
           ТабДокумент.Вывести(ТабДок1);
           ТабДокумент.Вывести(ТабДок2);
           ТабДокумент.Вывести(ТабДок3);
           Массив.Добавить(ТабДок4);
           Сообщить("1,2,3 - Влезло на листок");
       КонецЕсли;    
   //Если НЕ ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент,Массив,)Тогда    
   //    Сообщить("4  - Не Взлетело");
   //    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
   //    ТабДокумент.Вывести(ТабДок4);
   //Иначе
   //    Сообщить("4  - Взлетело");
   //    ТабДокумент.Вывести(ТабДок4);
   //КонецЕсли;    
   
   КонецЕсли;
   
   Возврат ТабДокумент;
   
КонецФункции // СоздатьТабличныйДокументПечатиСчетаЗаказа()
12 Miss1C
 
08.10.12
13:57
(10)Забыла)
13 DrShad
 
08.10.12
13:57
(12) вспоминай, память девичья
14 Miss1C
 
08.10.12
14:00
(13)В той теме проблему не решила
15 DrShad
 
08.10.12
14:01
(14) ну тогда фотка в бикини спасет отца русской демократии
16 Сказочный Баобаб
 
08.10.12
14:03
(0)офигеть! ТС почти голая на фто!
До чего опускаются 1С когда нужна помощь!
17 Miss1C
 
08.10.12
14:04
(16)(
18 DrShad
 
08.10.12
14:05
(16) это для тебя она почти голая, а как по мне так слишком одетая
19 Сказочный Баобаб
 
08.10.12
14:05
(17)давай, снимай последнее - тут все свои
И начинаем включать мозг
20 DrShad
 
08.10.12
14:06
(17) кстати Печенкин в ОФФе слился, когда ему предложили тебе помочь :)))
21 Гефест
 
08.10.12
14:07
Ты не добьешься стопроцентной точности от ПроверитьВывод(). На одном принтере будет работать, на другом нет. Если нужно точно - делай строки фиксированной высоты и считай (пример - в любой типовой семерки)
22 Miss1C
 
08.10.12
14:09
(20))
23 Miss1C
 
08.10.12
14:11
(21)Принтеры все одной марки и на одинаковой операционной системе, вряд ли будит большое расхождение
24 PR
 
08.10.12
14:12
(20) Ага. А кто тогда эту тему с толчка раскрутил? :))
25 Гефест
 
08.10.12
14:12
(23) Вполне может быть, что у тебя как раз те, на которых не работает :)

И вообще (15)
26 DrShad
 
08.10.12
14:13
(24) ну и где твоя помощь? где ответ?
27 zak555
 
08.10.12
14:13
(11) заче  объект получать ?
28 DrShad
 
08.10.12
14:15
(27) чтобы проверить модуль ВПФ
29 zak555
 
08.10.12
14:16
(28) ???
30 DrShad
 
08.10.12
14:18
(29) что тебе не понятно? есть реквизит формы СсылкаНаОбъект, а чтобы получить ТабДоки из процедур печати объекта - его нужно получить
31 zak555
 
08.10.12
14:18
(30) зачем процедуру печать делать в модуле объекте ?
32 zak555
 
08.10.12
14:19
*объекта
33 Miss1C
 
08.10.12
14:19
(31)Платформа 8.1
34 DrShad
 
08.10.12
14:20
(31) в типовых везде процедура Печать() в модуле объекта, внезапно да?
35 zak555
 
08.10.12
14:23
(34) здесь в ветке код типовой ? о_О
36 DrShad
 
08.10.12
14:25
(35) причем тут типовой код или нет? код самописный, но использует типовые процедуры
37 zak555
 
08.10.12
14:50
(36) какие процедуры ?