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

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

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 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
160 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
56 Сообщений
alex0402
46 Сообщений
andron81_81
44 Сообщений
AIFrame
35 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
28 Сообщений
BuhRust
27 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal