Имя: Пароль:
1C
1С v8
Макет
0 Singenor
 
15.05.12
17:22
Имеется печатная форма, нужно, что если реквизит не заполнен, выдается сообщение, и дальше программа не работает, как сделать?

ТабДок = Новый ТабличныйДокумент;
Если Не ЗначениеЗаполнено(Объект.НоменклатураАнализа.ВидНоменклатуры) Тогда
       Сообщить("Невозможно формирование печатной формы, необходимо заполнить реквизит 'Вид номенклатуры для сертификации ТМЦ' для номенклатуры анализа");
        ТабДок = Неопределено;
        Возврат 0;
   КонецЕсли;


Выдает ошибку: {ОбщийМодуль.ОтчетыИПечать.Модуль(233)}: Значение не является значением объектного типа (КоличествоЭкземпляров)
       ПечДокумент.КоличествоЭкземпляров = КоличествоЭкземпляров;
как быть?
1 Лоботряс
 
15.05.12
17:26
Приведенный код не может выдавать эту ошибку
2 ДенисЧ
 
15.05.12
17:26
А что есть печДокумент?
3 Singenor
 
15.05.12
17:27
(1) может, иначе я бы не спрашивал
4 Singenor
 
15.05.12
17:28
(2) процедура из общего модуля:
Процедура глНапечататьДокумент(ПечДокумент, КоличествоЭкземпляров = 1, НаПринтер = Ложь, Заголовок = "") Экспорт

   Если ПечДокумент = Неопределено тогда        
       Возврат;
   КонецЕсли;

   // Получить необходимое количество копий
   Если КоличествоЭкземпляров < 1 Тогда
       ПечДокумент.КоличествоЭкземпляров = 1;
   Иначе
       ПечДокумент.КоличествоЭкземпляров = КоличествоЭкземпляров;
   КонецЕсли;

   Если НаПринтер Тогда

       ПечДокумент.Напечатать();

   Иначе

       // Отобразить печатный документ на экране
       ПечДокумент.ОтображатьЗаголовки = Ложь;
       ПечДокумент.ОтображатьСетку     = Ложь;
       ПечДокумент.Защита              = Не глДействиеДоступно("СохранениеВоВнешниеФайлы", ложь);
       ПечДокумент.ТолькоПросмотр      = Истина;
       ПечДокумент.Показать(Заголовок);

   КонецЕсли;

КонецПроцедуры // НапечататьДокумент()
5 ДенисЧ
 
15.05.12
17:29
И откуда она вызывается? Мы всё должны угадывать?
6 Лоботряс
 
15.05.12
17:30
(4)Надо же, сам догадался. Без подсказки :))
7 Singenor
 
15.05.12
17:30
Из моей процедуры:
Процедура Напечатать(ИмяПечатнойФормы,КоличествоЭкземпляров = 1 ,НаПринтер = ложь)   Экспорт
   
   
    //Получить экземпляр документа на печать
   Если ИмяПечатнойФормы = "УдостоверениеКачества" Тогда //1Т" Тогда
       ТабДокумент = СформироватьОтчет();
   КонецЕсли;
   
   Если ТабДокумент <> Неопределено Тогда
       глНапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ПечатныеФормы.СформироватьЗаголовокДокумента(Объект,ИмяПечатнойФормы));
   КонецЕсли;
   
КонецПроцедуры

СтруктураНастроекПечФормы = Неопределено;
8 ДенисЧ
 
15.05.12
17:31
Осталось увидеть СформироватьОтчёт()...

А лучше всего взять отладчик и...
9 palpetrovich
 
15.05.12
17:32
Если Не ЗначениеЗаполнено(Объект.НоменклатураАнализа.ВидНоменклатуры) Тогда
ЗавершитьРаботуСистемы(ложь)
   КонецЕсли;
10 Singenor
 
15.05.12
17:33
(8) в сформировать отчет нет полезной информации кроме той, которую я скинул в начале сообщения
11 Лоботряс
 
15.05.12
17:33
(8)Отладчик? Не, не слышал.
12 jumper
 
15.05.12
17:34
Пока Выборка.Следующий() Цикл
Если Не ЗначениеЗаполнено()...
13 Любопытная
 
15.05.12
17:34
(10) Посмотри отладчиком, что передается в процедуру глНапечататьДокумент
14 Singenor
 
15.05.12
17:37
Достаточно было закомментить
Если ТабДокумент <> Неопределено Тогда
       глНапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ПечатныеФормы.СформироватьЗаголовокДокумента(Объект,ИмяПечатнойФормы));
   КонецЕсли;
15 Любопытная
 
15.05.12
17:38
Мда... до такого даже я не додумаюсь
16 sergeante
 
15.05.12
17:41
(15) такое чувство осталось, что (0) нас всех в дебилах оставил.
17 Singenor
 
15.05.12
17:43
(12) самый сурьезный вариант, цикл замутить)
18 Любопытная
 
15.05.12
17:46
(16) Полностью с Вами согласна
Независимо от того, куда вы едете — это в гору и против ветра!