Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
25 Май 2018, 08:34
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Ошибка "переменная не определена" во внешнем отчете  (Прочитано 4021 раз)

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

Оффлайн anast

  • *
  • Сообщений: 23
  • РЕПУТАЦИЯ: 2
  • КПД: 9%
  • Регистрация: 2011-07-14
  • Сайт: 
  • Профессия: Программист 8.1
Не могу понять почему не работает, а только выдает ошибки :(


//*******************************************
Процедура Печать(Докум, Устройство=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

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
нам тем более сложнее понять почему не работает.
Вы бы вместо этого кода, лучше скриншот ошибки прислали, чтобы посмотреть на что она ругается.
Проверять Ваш неотформатированный код особого желания нет.

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
бегло просмотрел и увидел вот эту конструкцию:

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

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

Оффлайн alex1971

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


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

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

      КонецЦикла;


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
170 Сообщений
alex0402
74 Сообщений
oleg-x
67 Сообщений
AIFrame AIFrame
60 Сообщений
buketov.av buketov.av
47 Сообщений
ilyay ilyay
39 Сообщений
wise wise
39 Сообщений
Анюта17
33 Сообщений
KOI8-R
32 Сообщений
Alter
30 Сообщений

* Кто онлайн

  • Точка Гостей: 456
  • Точка Скрытых: 0
  • Точка Пользователей: 9
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal