Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:56

Ошибка "переменная не определена" во внешнем отчете

Автор anast, 09 авг 2012, 07:24

0 Пользователей и 1 гость просматривают эту тему.

anast

Не могу понять почему не работает, а только выдает ошибки :(


//*******************************************
Процедура Печать(Докум, Устройство=0, КолвоКопий=1)
    Перем ЕстьИЗДЕЛИЯ;
   Перем ЕстьУСЛУГИ;
   Перем ЕстьТОВАР;   
   
   СтатусВозврата(0);

   АдресТелефон = "";
   глДобавитьРеквизит(АдресТелефон, "Адрес: ", глПредставлениеАдреса(Константа.АдресОрганизации));
   глДобавитьРеквизит(АдресТелефон, ", тел.: ", Константа.ТелефоныОрганизации);
 
   ПоставщикРасчСчет = "";
   ПоставщикИНН = "";
   ПоставщикКПП = "";
   ПоставщикБанк = "";
   Кредит = "";
   ПоставщикБанкБИК = "";
   ПоставщикБанкКорсчет = "";
   Услуга = " ";
   Изделия =" ";
   Товар = " ";
   глПлатежныеРеквизиты(Докум.РасчетныйСчет, ПоставщикРасчСчет, ПоставщикБанк, Кредит, ПоставщикБанкБИК, ПоставщикБанкКорсчет, ПоставщикИНН, ПоставщикКПП,2);

   Если (Докум.Валюта.Выбран() = 1) и (Докум.Валюта <> глРубли) Тогда
      КурсПеч = "Курс: " + Докум.Курс;
   Иначе
      КурсПеч = "";
   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");

      Таб.ИсходнаяТаблица("Таблица");
   
      Таб.ВывестиСекцию("Шапка");
   
      Докум.ВыбратьСтроки();
      Пока Докум.ПолучитьСтроку() = 1 Цикл
         НаименованиеТовара = глПолноеНаименование(Докум.Товар);
         Таб.ВывестиСекцию("Строка"); 
      Докум.ВыбратьСтроки();   
   КонецЦикла;
      Пока Докум.ПолучитьСтроку() = 1 Цикл
         НаименованиеТовара = глПолноеНаименование(Докум.Товар);   
   Если Докум.Товар.ПолныйКод()= Номенклатура/Услуги Тогда ЕстьУСЛУГИ = истина;
   ИначеЕсли Докум.Товар.ПолныйКод()= Номенклатура/Товар Тогда ЕстьТОВАР = истина;
   Иначе ЕстьИЗДЕЛИЯ = истина;
   КонецЕсли;
      КонецЦикла;
      Если (Докум.СуммаВклНДС = 1) Тогда
         ИтогоСумма = Докум.Итог("Сумма") - Докум.Итог("НДС");
      Иначе
         ИтогоСумма = Докум.Итог("Сумма");
      КонецЕсли;
      Таб.ВывестиСекцию("ИтогоСумма");
      Если Докум.УчитыватьНДС = 1 Тогда
         ИтогоНДС = Докум.Итог("НДС");
         Таб.ВывестиСекцию("ИтогоНДС");
      КонецЕсли;
      Если (Докум.УчитыватьНП = 1) или (Докум.УчитыватьНП = 2) Тогда
         ИтогоНП = Докум.Итог("НП");
         Таб.ВывестиСекцию("ИтогоНП");
      КонецЕсли;
      ИтогоВсего = Докум.Итог("Всего");
      //Если не(((Докум.СуммаВклНП = 1) или (Докум.УчитыватьНП = 0)) и ((Докум.СуммаВклНДС = 1) или (Докум.УчитыватьНДС = 0))) Тогда
         Таб.ВывестиСекцию("ИтогоВсего");
      //КонецЕсли;
      Пропись(Докум.Валюта.ИмяФайлаПрописи);
      Таб.ВывестиСекцию("Подвал");
      Пропись("");
      
      глПоказатьТаблицу(Таб, "Счет", "Счет", 0, 0, 1);     
    

   Таб.ВывестиСекцию("В0");
   если (естьИЗДЕЛИЯ=ложь)и(естьТОВАР=ложь)и(естьУСЛУГИ=истина) тогда
      Таб.ВывестиСекцию("В1");
   иначеесли (естьИЗДЕЛИЯ=ложь)и(естьТОВАР=истина)и(естьУСЛУГИ=ложь) тогда
      Таб.ВывестиСекцию("В2");
   иначеесли (естьИЗДЕЛИЯ=ложь)и(естьТОВАР=истина)и(естьУСЛУГИ=истина) тогда
      Таб.ВывестиСекцию("В3");
   иначеесли (естьИЗДЕЛИЯ=истина)и(естьТОВАР=Ложь)и(естьУСЛУГИ=ложь) тогда
      Таб.ВывестиСекцию("В4"); 
   иначеесли (естьИЗДЕЛИЯ=истина)и(естьТОВАР=Ложь)и(естьУСЛУГИ=истина) тогда
      Таб.ВывестиСекцию("В5");
   иначеесли (естьИЗДЕЛИЯ=истина)и(естьТОВАР=истина)и(естьУСЛУГИ=ложь) тогда
       Таб.ВывестиСекцию("В0");
   иначеесли (естьИЗДЕЛИЯ=истина)и(естьТОВАР=истина)и(естьУСЛУГИ=истина) тогда
       Таб.ВывестиСекцию("В0");
   КонецЕсли;
КонецПроцедуры

//******************************************************************************
// ПоКнопкеПечать()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//
Процедура ПоКнопкеПечать()
   
   Если Док.Выбран() = 0 Тогда
       Предупреждение("Не выбран документ!", 60);
      Возврат;
   КонецЕсли;
   
   Печать(Док);
   
КонецПроцедуры // ПоКнопкеПечать()


//******************************************************************************
// Предопределенная процедура
//
Процедура ПриОткрытии()
   
   Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
      
      Докум      = Форма.Параметр.Получить("Контекст");
      Устройство = Форма.Параметр.Получить("Устройство");
      КолвоКопий = Форма.Параметр.Получить("КоличествоКопий");
   
      Печать(Докум, Устройство, КолвоКопий);
      Статусвозврата(0);
      Возврат;
   КонецЕсли;
   
   
КонецПроцедуры // ПриОткрытии()

Herby

нам тем более сложнее понять почему не работает.
Вы бы вместо этого кода, лучше скриншот ошибки прислали, чтобы посмотреть на что она ругается.
Проверять Ваш неотформатированный код особого желания нет.

Herby

бегло просмотрел и увидел вот эту конструкцию:

Цитата: Herby от 09 авг 2012, 09:43
   Докум.ВыбратьСтроки();
   Пока Докум.ПолучитьСтроку() = 1 Цикл
      НаименованиеТовара = глПолноеНаименование(Докум.Товар);
      Таб.ВывестиСекцию("Строка"); 
      Докум.ВыбратьСтроки();   
      КонецЦикла;

зачем Вы открыли выборку строк в документе и потом еще в цикле каждый раз ее открываете?

alex1971

Цитата: Herby от 09 авг 2012, 09:43
Докум.ВыбратьСтроки();
      Пока Докум.ПолучитьСтроку() = 1 Цикл
         НаименованиеТовара = глПолноеНаименование(Докум.Товар);
         Таб.ВывестиСекцию("Строка"); 
      Докум.ВыбратьСтроки();   
   КонецЦикла;
      Пока Докум.ПолучитьСтроку() = 1 Цикл
         НаименованиеТовара = глПолноеНаименование(Докум.Товар);   
   Если Докум.Товар.ПолныйКод()= Номенклатура/Услуги Тогда ЕстьУСЛУГИ = истина;
   ИначеЕсли Докум.Товар.ПолныйКод()= Номенклатура/Товар Тогда ЕстьТОВАР = истина;
   Иначе ЕстьИЗДЕЛИЯ = истина;
   КонецЕсли;
      КонецЦикла;
Должно быть так


Докум.ВыбратьСтроки();
      Пока Докум.ПолучитьСтроку() = 1 Цикл
         НаименованиеТовара = глПолноеНаименование(Докум.Товар);
         Если Докум.Товар.ПолныйКод()= Номенклатура/Услуги Тогда ЕстьУСЛУГИ = истина;
         ИначеЕсли Докум.Товар.ПолныйКод()= Номенклатура/Товар Тогда ЕстьТОВАР = истина;
         Иначе ЕстьИЗДЕЛИЯ = истина;
         КонецЕсли;

         Таб.ВывестиСекцию("Строка"); 

      КонецЦикла;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск