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

При выводе формы не видится переменная, описанная в модуле этой же формы

Автор pfconst, 20 мая 2011, 17:18

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

pfconst

Цитата: prog1c7.7 от 23 мая 2011, 16:51
прочитайте ВНИМАТЕЛЬНЕЕ: вы забанили ВЫВЕСТИСЕКЦИЮ
и пользуетесь функцией (либо процедурой)
ПЕЧАТЬСЕКЦИИ()

где вы в моем посте нашли - Забаненная Секция1 ???

явное объявление переменной - здесь зачем?
верните Таб.Вывестисекцию
Вы же не вникли, отсюда и полемика

1. Извините, но это Вы не поняли... (так как не видели весь код)  :(
Вместо функции Таб.Вывестисекцию() в модуле используется описанная в глобальном модуле функция Печатьсекции() внутри которого и вызывается Таб.Вывестисекцию... - посмотрите внимательно, в тексте модуля заменены (закомментированы) все вызовы Таб.Вывестисекцию() на вызовы Печатьсекции()....

2. Вы действительно не писали ничего конкретно о "Забаненная Секция1" (Вы просто указали  "...забанили ВЫВЕСТИСЕКЦИЮ"... Это я Вас не совсем правильно понял...
и указал на эту функцию в неправильно понятом контексте... не обижайтесь...я не специально.

Что касается объявления переменной - то именно в этом  (в отсутствие объявления созданной переменно где либо в модулях....) и приводило к возникновению ошибки при печати документа.....
Переменная просто нигде не была определена ... Это и было той самой граблей, на которую я наступил. И Вы совершенно верно указали мне на это, за что я Вам благодарен.
Для исправления указанной ошибки достаточно было дополнить начало модуля (в секции описания переменных) следующей  строкой: Перем ПерваяСтрока ;
И все сразу встало на свои места...
Спасибо еще раз, Вы ускорили мне решение досадной проблемы.



prog1c7.7

замяли,
но если дезавуировать ПечатьСекции()
и вернуть таб.Вывести секцию()
то объявление не надо, чес слово  :dfbsdfbsdf:
я честно, только - только попробовал, прямо сейчас

volodya1122

Интересно было бы взглянуть на процедуру (или функцию) "Печатьсекции". Что в ней такого особенного что вы (или другой програмист до Вас) отказался от обычного "ВывестиСекцию"......

pfconst

Цитата: prog1c7.7 от 23 мая 2011, 18:48
....но если дезавуировать ПечатьСекции()
и вернуть таб.Вывести секцию()
то объявление не надо, чес слово...
я честно, только - только попробовал, прямо сейчас

Да, работает, Вы совершенно правы, но без учета формата вывода.. (см.ниже) а мне это важно, кроме этого мне не хотелось менять (улучшать) код...:-)  нет времени, я в настоящее время занят другими вещами (директор предприятия и поверьте дел хватает)

Цитата: volodya1122 от 24 мая 2011, 10:26
Интересно было бы взглянуть на процедуру (или функцию) "Печатьсекции". Что в ней такого особенного что вы (или другой програмист до Вас) отказался от обычного "ВывестиСекцию"......

Да никаких тайн нет, смотрите, (программиста который это писал уже нет к сожалению в живых):
// ===============================
Процедура ПечатьСекции(Таб, Секция) Экспорт
   Если Константа.ФормаПечати=Перечисление.ФормыПечати.А4 Тогда
      Таб.ВывестиСекцию("А4|"+Секция);
   ИначеЕсли Константа.ФормаПечати=Перечисление.ФормыПечати.А5 Тогда
      Таб.ВывестиСекцию("А5|"+Секция);
      Таб.ПрисоединитьСекцию("А4|"+Секция);
   КонецЕсли;
КонецПроцедуры
// ================================
Удачи.

IrinaKulinich

1С предприятие 7.70.027, торговля и склад 7.70.020,

Помогите пож. с налоговой накладной.

Раздел 1 печатается в каждой строчке, если в первом разделе больше 1 наименования товара.
Номер свидетельства ровняется по правому краю, а надо по левому.
Номер накладной ровняется по левому краю, а надо по правому.


Процедура Печать2011(БыстраяПечать=0)
Перем ПечЦенаБезНДС, ПечСуммаБезСкидки, ПечСуммаБезТранс, ПечВозвТара,
   ПечИтогСуммаБезНДС, ПечИтогНДС, ПечВсего, Ст[4], Ск[4];

   ТипПричиныПеч = ""; ТипПричиныИнд = 0;
   Если Оставляем = 1 Тогда
      ТипПричиныИнд = спТипПричины.НайтиЗначение(СокрЛП(ТипПричины));
      Если ТипПричиныИнд <> 0 Тогда
         ТипПричиныПеч = Прав("0" + Строка(ТипПричиныИнд+1),2);
      КонецЕсли;
   КонецЕсли;

   Фирма.ИспользоватьДату(ДатаДок);
   ФирмаНалогНомер = Фирма.ИНН;
   ФирмаНомСвид = Фирма.НомерСвидетельства;
   Если Найти(Фирма.Телефоны,",") <> 0 Тогда
      ФирмаТел = Лев(Фирма.Телефоны,Найти(Фирма.Телефоны,",")-1);
   ИначеЕсли Найти(Фирма.Телефоны,";") <> 0 Тогда   
      ФирмаТел = Лев(Фирма.Телефоны,Найти(Фирма.Телефоны,";")-1); 
   Иначе   
      ФирмаТел = Фирма.Телефоны; 
   КонецЕсли;
   ФирмаТел = СтрЗаменить(ФирмаТел,"-","");
   ФирмаТел = СтрЗаменить(ФирмаТел," ","");
   ФирмаТел = СтрЗаменить(ФирмаТел,")","");
   ФирмаТел = СтрЗаменить(ФирмаТел,"(","");
   ФирмаТелефоны = Прав(СокрЛП(ФирмаТел),10);
   Если Найти(Контрагент.Телефоны,",") <> 0 Тогда
      КонтрТел = Лев(Контрагент.Телефоны,Найти(Контрагент.Телефоны,",")-1);
   ИначеЕсли Найти(Контрагент.Телефоны,";") <> 0 Тогда   
      КонтрТел = Лев(Контрагент.Телефоны,Найти(Контрагент.Телефоны,";")-1); 
   Иначе   
      КонтрТел = Контрагент.Телефоны; 
   КонецЕсли;
   КонтрТел = СтрЗаменить(КонтрТел,"-","");
   КонтрТел = СтрЗаменить(КонтрТел," ","");
   КонтрТел = СтрЗаменить(КонтрТел,")","");
   КонтрТел = СтрЗаменить(КонтрТел,"(","");
   КонтрагентТелефоны = Прав(СокрЛП(КонтрТел),10);
   Если (ТипПричиныИнд = 1) или (ТипПричиныИнд = 2) или (ТипПричиныИнд = 6) или (ТипПричиныИнд = 3) Тогда
          //тип причины: 02, 03, 07, 04
      КонтрагентНалогНомер = "000000000000";
      КонтрагентНомСвид    = "0000000000";
   Иначе
      КонтрагентНалогНомер = ?(ПустоеЗначение(Контрагент.ИНН)=1,"000000000000",Контрагент.ИНН);
      КонтрагентНомСвид = ?(ПустоеЗначение(Контрагент.НомерСвидетельства)=1,"0000000000",Контрагент.НомерСвидетельства);
   КонецЕсли;
   ПечНомерДок = глНомерБезПрефикса(Контекст);
   ПечНомерДок = Прав("      "+ПечНомерДок,7);
   
   Таб = СоздатьОбъект( "Таблица" );
   Таб.ИсходнаяТаблица("НДС_2011");

   НулевойСтолбец = 0;
   Если СтавкаНДС = Перечисление.ЗначенияНДС.БезНДС Тогда
      ТекущийСтолбец = 4
   ИначеЕсли СтавкаНДС = Перечисление.ЗначенияНДС.ЛьготнаяСтавкаНДС Тогда
      Если Контрагент.ВидКонтрагента = Перечисление.ВидыКонтрагентов.Нерезидент Тогда
         ТекущийСтолбец = 3
      Иначе
         ТекущийСтолбец = 2
      КонецЕсли;
   Иначе
      ТекущийСтолбец = 1;
      Если Контрагент.ВидКонтрагента = Перечисление.ВидыКонтрагентов.Нерезидент Тогда
         НулевойСтолбец = 3
      Иначе
         НулевойСтолбец = 2
      КонецЕсли;
   КонецЕсли;
   ПустаяЯчейка = Константа.ПустаяЯчейкаНалДок + Симв(160);
   ВидНомДогов = Константа.ВидНомДоговНН;

   Для Страница = 1 По 2 Цикл
      Таб.ВывестиСекцию( "Пробел" );
      Если Страница = 1 Тогда 
         Оригинал = ?(Оставляем = 1, "","Х");;
         Копия = "";
         ЕРПН = ?(ЕРНН = 1, "Х","");
         ОстаетсяПеч = ?(Оставляем = 1, "Х",""); 
      ИначеЕсли Страница = 2 Тогда
         Копия = "Х";
         Оригинал = "";
         ТипПричиныПеч = "";
         ЕРПН = "";
         ОстаетсяПеч = ""; 
      КонецЕсли;
      Таб.ВывестиСекцию( "Оригинал" );
      Таб.ВывестиСекцию( "Шапка" );
      Если ВидНомДогов = 2 Тогда         
         Таб.ВывестиСекцию( "Договор2" );
      Иначе   
         Таб.ВывестиСекцию( "Договор1" );
      КонецЕсли;
      Таб.ВывестиСекцию( "Шапка2" );

      ПерваяСтрока = 1;
      
      Для Н = 1 По 4 Цикл
         Если Н = ТекущийСтолбец Тогда
            Ст[Н] = 0;
         Иначе
            Ст[Н] = ПустаяЯчейка;
         КонецЕсли;   
      КонецЦикла;                   

      ИтогПоЛьготам = "";
      ИтСуммаБезСкидки = 0;

      ВыбратьСтроки();
      Пока ПолучитьСтроку() > 0 Цикл
         ЕдИзм = Единица;
         ПечКво = ?(ПустоеЗначение(Товар.КвоДляНН) = 1,Количество,Товар.КвоДляНН);
         //СуммаБезСкидкиГрн = глПересчет(СуммаБезСкидки,Валюта,Курс,Гривня,Дата_курса);
         СуммаБезСкидкиГрн = глПересчет(СуммаБезНДС,Валюта,Курс,Гривня,Дата_курса);
         Ст[ТекущийСтолбец] = глФРМ3(СуммаБезСкидкиГрн,Гривня,0);
         ИтСуммаБезСкидки = ИтСуммаБезСкидки + СуммаБезСкидкиГрн;
         Если СтавкаНДС = Перечисление.ЗначенияНДС.безНДС Тогда   
            Если ПустаяСтрока(ЛьготаНДС) = 0 Тогда
               СтатьяЛьготы = СокрЛП(ЛьготаНДС);
            Иначе   
               СтатьяЛьготы = СокрЛП(Товар.ЛьготаНДС);
            КонецЕсли;
            
            Если ИтогПоЛьготам = "" Тогда
               ИтогПоЛьготам = СтатьяЛьготы;
            ИначеЕсли Найти(ИтогПоЛьготам, СтатьяЛьготы) = 0 Тогда
               ИтогПоЛьготам = СокрЛП(ИтогПоЛьготам) + ", " + СтатьяЛьготы;
            КонецЕсли;
         КонецЕсли;   
         //Если Количество <> 0 Тогда 
         //   ПечЦенаБезНДС = ФРМСумма(глПересчет(СуммаБезСкидкиГрн/Количество,Валюта,Курс,Гривня,Дата_курса),7);
         //Иначе
            ПечЦенаБезНДС = ФРМСумма(глПересчет(ЦенаБезНДС,Валюта,Курс,Гривня,Дата_курса),7); 
         //КонецЕсли;
         
         Если ИтоговаяРозница = 1 Тогда
            ПечЦенаБезНДС = "";
            ПечКво = "";
         КонецЕсли;
         Таб.ВывестиСекцию("РазделI2");
      КонецЦикла;
         
      ПечСуммаБезТранс = ФРМСумма(ИтСуммаБезСкидки);
      Ст[ТекущийСтолбец] = ПечСуммаБезТранс;
      Таб.ВывестиСекцию( "РазделIВсего" ); 
      
      ПечВозвТара = ФРМСумма(глПересчет(СуммаВозвратнойТары,Валюта,Курс,Гривня,Дата_курса));
      Таб.ВывестиСекцию( "ВозврТара" );
      
      Для Н = 1 По 4 Цикл
         Если Н <> ТекущийСтолбец Тогда
            Ст[Н] = "";
         КонецЕсли;   
      КонецЦикла;                   
      
      ПечИтогНДС = ФРМСумма(глПересчет(Итог("СуммаСНДС")-Итог("СуммаБезНДС"),Валюта,Курс,Гривня,Дата_курса));
      Если СтавкаНДС = Перечисление.ЗначенияНДС.ЛьготнаяСтавкаНДС Тогда
         //по п.11 порядка заполнения НН
         Ст[2] = "0";
         Ст[3] = "0";
      КонецЕсли;
      Ст[ТекущийСтолбец] = ПечИтогНДС;
      Если СтавкаНДС = Перечисление.ЗначенияНДС.безНДС Тогда   
         Ст[ТекущийСтолбец] = "Без ПДВ ";
      КонецЕсли;
      Таб.ВывестиСекцию( "НДС" );   
      Ст[2] = "";
      Ст[3] = "";
      
      ПечИтогСуммаСНДС = ФРМСумма(глПересчет(Итог("СуммаСНДС"),Валюта,Курс,Гривня,Дата_курса));
      Ст[ТекущийСтолбец] = ПечИтогСуммаСНДС;
      ПечВсего = ФРМСумма(глПересчет(Итог("СуммаСНДС")+СуммаВозвратнойТары,Валюта,Курс,Гривня,Дата_курса));
      Таб.ВывестиСекцию( "ОбщаяСумма" );
      Таб.ВывестиСекцию( "Подвал" );

      Если Страница <> 2 Тогда
         Таб.НоваяСтраница();
      КонецЕсли;

   КонецЦикла;
   
   
   Если (ПродажаНижеОЦ=1) Тогда
      
      Для Н = 1 По 4 Цикл
         Если Н = ТекущийСтолбец Тогда
            Ст[Н] = 0;
         Иначе
            Ст[Н] = ПустаяЯчейка;
         КонецЕсли;   
      КонецЦикла;       
      
      Таб.НоваяСтраница();
      
      ПечСуммаНадбавки = 0;
      ПечСуммаСкидки   = 0;
      ПечСуммаТранс = 0;
      ПечВозвТара = 0;
      
      ТекстДополненияГр3 = " (перевищення звичайної ціни над фактичною за товарами, послугами, указаними в податковій накладній №"+ Строка(ПечНомерДок) + ?(СпецРежимНалогообложения=0,"","/"+ СпецРежимНалогообложения);
      ТекстДополненияГр3 = ТекстДополненияГр3 + ?(ОЦВключаетПроценты=1,", сума процентів нарахованих або таких, що мають бути нараховані на суму номіналу процентного векселя)",")");
      
      Для Страница = 1 По 2 Цикл
         Таб.ВывестиСекцию( "Пробел" );
         //Обе копии остаются у продавца
         Если Страница = 1 Тогда 
            Оригинал = "";
            Копия = "";
            ЕРПН = ?(ЕРНН = 1, "Х","");
            ОстаетсяПеч = "Х";
            ТипПричиныПеч = "01";
         ИначеЕсли Страница = 2 Тогда
            Копия = "Х";
            Оригинал = "";
            ТипПричиныПеч = "";
            ЕРПН = "";
            ОстаетсяПеч = ""; 
         КонецЕсли;
         Таб.ВывестиСекцию( "Оригинал" );
         Таб.ВывестиСекцию( "Шапка" );
         Если СтрДлина(СокрЛП(НомДог)) > 6 Тогда
            Таб.ВывестиСекцию( "Договор2" );
         Иначе   
            Таб.ВывестиСекцию( "Договор1" );
         КонецЕсли;
         Таб.ВывестиСекцию( "Шапка2" );
         
         ПерваяСтрока = 1;
   
         ВыбратьСтроки();
         Пока ПолучитьСтроку() > 0 Цикл
         
            ПечТМЦ = Товар.ПолнНаименование + ТекстДополненияГр3;
            ЕдИзм  = Единица;
            ПечКво = ?(ПустоеЗначение(Товар.КвоДляНН) = 1,Количество,Товар.КвоДляНН);
            Если ИтоговаяРозница = 1 Тогда
               ПечКво = "";
            КонецЕсли; 
            ПечЦенаБезНДС = "";
            Ст[ТекущийСтолбец] = ФРМСумма(глПересчет(СуммаПревышенияБезНДС,Валюта,Курс,Гривня,Дата_курса));
            Если СуммаПревышенияБезНДС > 0 Тогда
               Таб.ВывестиСекцию("РазделI2");
               ПерваяСтрока = 0;
            КонецЕсли;   
         КонецЦикла;

         
         ИтСуммПревышБезНДС = глПересчет(Итог("СуммаПревышенияБезНДС"),Валюта,Курс,Гривня,Дата_курса);
         ИтСуммПревышСНДС   = глПересчет(Итог("СуммаПревышенияСНДС"),  Валюта,Курс,Гривня,Дата_курса);
         ИтСуммПревышНДС    = ИтСуммПревышСНДС - ИтСуммПревышБезНДС;
         
         ПечСуммаБезТранс    = ФРМСумма(ИтСуммПревышБезНДС);
         Ст[ТекущийСтолбец]  = ПечСуммаБезТранс;
         Таб.ВывестиСекцию( "РазделIВсего" );
         
         Ст[ТекущийСтолбец]  = 0;
         Таб.ВывестиСекцию( "ВозврТара" );
         Для Н = 1 По 4 Цикл
            Если Н <> ТекущийСтолбец Тогда
               Ст[Н] = "";
            КонецЕсли;   
         КонецЦикла;                   
         ПечИтогНДС          = ФРМСумма(ИтСуммПревышНДС);   
         Ст[ТекущийСтолбец]  = ПечИтогНДС;
         Таб.ВывестиСекцию( "НДС" );
         
         ПечИтогСуммаСНДС    = ФРМСумма(ИтСуммПревышСНДС);
         Ст[ТекущийСтолбец]  = ПечИтогСуммаСНДС;
         Таб.ВывестиСекцию( "ОбщаяСумма" );

         ПечВсего          = ФРМСумма(ИтСуммПревышСНДС);
         Ст[ТекущийСтолбец]  = ПечВсего;
         Таб.ВывестиСекцию( "Подвал" );
   
         Если Страница <> 2 Тогда
            Таб.НоваяСтраница();
         КонецЕсли;
      КонецЦикла;

   КонецЕсли;   
   
   Таб.Опции(0, 0, 0, 0) ;
   Таб.ПараметрыСтраницы(1,,,,,,,,);
   Если БыстраяПечать=1 Тогда
      Таб.ПараметрыСтраницы(,,,,,,,,,1,,);
      Таб.КоличествоЭкземпляров(Константа.ПечКолЭкзННПриБыстройПродаже);
      Таб.Напечатать(глОтладка);
   Иначе   
      Таб.Защита(Константа.ФлагЗащитыТаблиц);
      Таб.ТолькоПросмотр(1);
      Таб.Показать("Печать налоговой накладной","");
   КонецЕсли;
КонецПроцедуры

Теги:

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

Рейтинг@Mail.ru

Поиск