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

Странная Ошибка

Автор djvjv, 04 июл 2012, 08:54

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

djvjv

Дело в том что я делаю отчет для документа заказ на протез, в бухгалтерия 2.0 обычное приложение. Ошибка:
(Документ.__ЗаказНаПротез.МодульОбъекта(207,1)): Определения процедур и функций должны размещаться перед операторами тела модуля
<<?>>Процедура ПечатьКраткого() Экспорт    (Проверка: Толстый клиент (обычное приложение))

Не могу понять в чем проблема?


В модуле объекта:

Процедура ПечатьПолного() Экспорт
   
   ТабДок = Новый ТабличныйДокумент;
   Макет = Документы.__ЗаказНаПротез.ПолучитьМакет("ПечатьПолного");
   ОбластьСтраница1 = Макет.ПолучитьОбласть("Страница1");
   ОбластьСтраница2 = Макет.ПолучитьОбласть("Страница2");
   Контракт = ?(ЗначениеЗаполнено(Продукция), СокрЛП(Продукция._Контракт), СокрЛП(Чехлы._Контракт));
   ОбластьСтраница1.Параметры.Контракт = Контракт;
   
   ТабДок.Вывести(ОбластьСтраница1);
   ТабДок.Вывести(ОбластьСтраница2);
   
   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.Защита = Ложь;
   ТабДок.ТолькоПросмотр = Ложь;
   ТабДок.ОтображатьЗаголовки = Ложь;
   ТабДок.Показать();
   
КонецПроцедуры;

Процедура ПечатьКраткого() Экспорт   
   
   ТабДок = Новый ТабличныйДокумент;
   Макет = Документы.__ЗаказНаПротез.ПолучитьМакет("ПечатьКраткого");
   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ТабДок.Вывести(ОбластьЗаголовок);
   ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьТаблица = Макет.ПолучитьОбласть("Таблица");
   ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
   ОбластьИтого = Макет.ПолучитьОбласть("Итого");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   
   СписокТипов = Новый Массив;
   СписокТипов.Добавить(Перечисления.ТипыКонтактнойИнформации.Адрес);
   СписокТипов.Добавить(Перечисления.ТипыКонтактнойИнформации.Телефон);
   
   СписокВидов = Новый Массив;
   СписокВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
   СписокВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);
   
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   КонтактнаяИнформация.Тип,
   |   КонтактнаяИнформация.Вид,
   |   КонтактнаяИнформация.Представление
   |ИЗ
   |   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
   |ГДЕ
   |   КонтактнаяИнформация.Объект = &Контрагент
   |   И КонтактнаяИнформация.Тип В(&СписокТипов)
   |   И КонтактнаяИнформация.Вид В(&СписокВидов)";
   Запрос.УстановитьПараметр("Контрагент",Контрагент);
   Запрос.УстановитьПараметр("СписокТипов",СписокТипов);
   Запрос.УстановитьПараметр("СписокВидов",СписокВидов);
   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   
   Пока Выборка.Следующий() Цикл
      Если Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
         ОбластьШапка.Параметры.Адрес = Выборка.Представление;
      Иначе
         ОбластьШапка.Параметры.Телефон = Выборка.Представление;
      КонецЕсли;
   КонецЦикла;
   
   ОбластьШапка.Параметры.Дата = Формат(Дата,"ДЛФ=D");
   ОбластьШапка.Параметры.ФИО = Контрагент.НаименованиеПолное;
   ОбластьШапка.Параметры.Оплата = Плательщик;
   ВыборкаАмбКарт = Справочники.__АмбулаторныеКарты.Выбрать(,Контрагент);
   Если ВыборкаАмбКарт.Следующий() Тогда
      ОбластьШапка.Параметры.ДатаРождения = Формат(ВыборкаАмбКарт.ДатаРождения,"ДЛФ=D");
      ОбластьШапка.Параметры.КатегорияИнвалидности = Строка(ВыборкаАмбКарт.КатегорияИнвалидности)+" "+Строка(ВыборкаАмбКарт.ГруппаИнвалидности);
      ОбластьШапка.Параметры.Снилс = ВыборкаАмбКарт.СНИЛС;
      ОбластьШапка.Параметры.ПаспортныеДанные ="№" +Контрагент.ДокументУдостоверяющийЛичность;
      ОбластьШапка.Параметры.Удостоверение = ВыборкаАмбКарт.Удостоверение;
      Фед = ?(ВыборкаАмбКарт.ГруппаИнвалидности<>Перечисления.__ГруппыИнвалидности._,"Федеральный льготник", "");
      ИПР = ?(ЗначениеЗаполнено(ВыборкаАмбКарт.ИПР),"",сокрлп(ВыборкаАмбКарт.ИПР)+" от "+строка(ВыборкаАмбКарт.Ссылка));
      Направление = ?(ЗначениеЗаполнено(ВыборкаАмбКарт.Направление),"", сокрлп(ВыборкаАмбКарт.Направление)+" от "+строка(ВыборкаАмбКарт.Ссылка));
      ОбластьШапка.Параметры.Заказ = "ИПР(ПРП) №" +Строка(ВыборкаАмбКарт.ИПР)+" "+Строка(Формат(ВыборкаАмбКарт.ДатаИПР,"ДЛФ=D"))+" Направление "+_НапрвлениеНомер+" "+Формат(_НаправлениеДата,"ДЛФ=D");
   КонецЕсли;
   
   ВыборкаМед = Справочники.__МедЧасть.Выбрать(,ВыборкаАмбКарт.Ссылка);
   Если ВыборкаМед.Следующий() Тогда
      Пока ВыборкаМед.Следующий() Цикл
         Если ВыборкаМед.ПометкаУдаления Тогда
            Продолжить;
         КонецЕсли;
      КонецЦикла;
      ОбластьШапка.Параметры.Диагноз = Строка(ВыборкаМед.Диагноз)+","+Строка(ВыборкаМед.Диагноз1)+","+Строка(ВыборкаМед.Диагноз2)+","+Строка(ВыборкаМед.Диагноз3);
      Характер = ?(ВыборкаМед.ХарактерЗаживления=Перечисления.__ХарЗаживления.Первичное, 1,2);
   КонецЕсли;
   
   СуммаОплат = строка(Формат(?(ЗначениеЗаполнено(спецификация),Спецификация.ОтпускнаяЦена, 0) + ЧехлыК*ЧехлыЦена + Доп1К*Доп1Цена + Доп2К*Доп2Цена + ПолученоОтКлиентаДоплата, "ч 015.2"));
   позицияточки = Найти( СуммаОплат,".");
   СуммаР = сред(СуммаОплат,1,позицияточки-1);
   СуммаК = сред(СуммаОплат,1,позицияточки+1);
   Оплата = ?(ВариантОплаты>0,Контрагент.Наименование+" "+сокрлп(строка(формат(?(ЗначениеЗаполнено(спецификация),Спецификация.ОтпускнаяЦена,0) + ЧехлыК*ЧехлыЦена + Доп1К*Доп1Цена + Доп2К*Доп2Цена + ПолученоОтКлиентаДоплата, "ч 015.2")))+".",
           Плательщик.Наименование+" "+сокрлп(строка(формат(?(ЗначениеЗаполнено(спецификация),Спецификация.ОтпускнаяЦена,0) + ЧехлыК*ЧехлыЦена + Доп1К*Доп1Цена + Доп2К*Доп2Цена, "ч 015.2")))+"."+
           ?(ПолученоОтКлиентаДоплата>0,Контрагент.Наименование+" "+сокрлп(строка(формат(ПолученоОтКлиентаДоплата, "ч 015.2")))+".",""));
   ОбщаяСтоимость = 0;
   НомерСтроки = 0;
   ТабДок.Вывести(ОбластьШапка);
   ТабДок.Вывести(ОбластьТаблица);       
   Если ЗначениеЗаполнено(продукция) Тогда
      ОбластьСтрока.Параметры.Наименование = Продукция.Наименование;
      //НоваяСтрока.Спецификация = Спецификация;
      ОбластьСтрока.Параметры.Шифр = Спецификация.Шифр;
      ОбластьСтрока.Параметры.Количество = 1;
      ОбластьСтрока.Параметры.Цена = Спецификация.ОтпускнаяЦена/Спецификация.КоличествоПродукции;
      ОбщаяСтоимость = ОбщаяСтоимость + (Спецификация.ОтпускнаяЦена/Спецификация.КоличествоПродукции)*1;
      ОбластьСтрока.Параметры.Стоимость = (Спецификация.ОтпускнаяЦена/Спецификация.КоличествоПродукции)*1;
      НомерСтроки = НомерСтроки +1;
      ОбластьСтрока.Параметры.НомерСтроки = НомерСтроки;
      ТабДок.Вывести(ОбластьСтрока);
   КонецЕсли;
   Если ЗначениеЗаполнено(чехлы) Тогда
      ОбластьСтрока.Параметры.Наименование = Чехлы.Наименование;
      //НоваяСтрока.Спецификация = "";
      ОбластьСтрока.Параметры.Шифр = "";
      ОбластьСтрока.Параметры.Количество = ЧехлыК;
      ОбластьСтрока.Параметры.Цена = ЧехлыЦена;
      ОбщаяСтоимость = ОбщаяСтоимость + (ЧехлыЦена*ЧехлыК);
      ОбластьСтрока.Параметры.Стоимость = ЧехлыЦена*ЧехлыК;
      НомерСтроки = НомерСтроки +1;
      ОбластьСтрока.Параметры.НомерСтроки = НомерСтроки;
      ТабДок.Вывести(ОбластьСтрока);
   КонецЕсли;
   Если ЗначениеЗаполнено(доп1) Тогда
      ОбластьСтрока.Параметры.Наименование = Доп1.Наименование;
      //НоваяСтрока.Спецификация = "";
      ОбластьСтрока.Параметры.Шифр = "";
      ОбластьСтрока.Параметры.Количество = Доп1К;
      ОбластьСтрока.Параметры.Цена = Доп1Цена;
      ОбщаяСтоимость = ОбщаяСтоимость + (Доп1Цена*Доп1К);
      ОбластьСтрока.Параметры.Стоимость = Доп1Цена*Доп1К;
      НомерСтроки = НомерСтроки +1;
      ОбластьСтрока.Параметры.НомерСтроки = НомерСтроки;
      ТабДок.Вывести(ОбластьСтрока);
   КонецЕсли;
   Если ЗначениеЗаполнено(доп2) Тогда
      ОбластьСтрока.Параметры.Наименование = Доп2.Наименование;
      //НоваяСтрока.Спецификация = "";
      ОбластьСтрока.Параметры.Шифр = "";
      ОбластьСтрока.Параметры.Количество = Доп2К;
      ОбластьСтрока.Параметры.Цена = Доп2Цена;
      ОбщаяСтоимость = ОбщаяСтоимость + (Доп2К*Доп2Цена);
      ОбластьСтрока.Параметры.Стоимость = Доп2К*Доп2Цена;
      НомерСтроки = НомерСтроки +1;
      ОбластьСтрока.Параметры.НомерСтроки = НомерСтроки;
      ТабДок.Вывести(ОбластьСтрока);
   КонецЕсли;
      
   ОбластьИтого.Параметры.Итого = ОбщаяСтоимость;
   
   ТабДок.Вывести(ОбластьИтого);
   ТабДок.Вывести(ОбластьПодвал);
   
   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.Защита = Ложь;
   ТабДок.ТолькоПросмотр = Ложь;
   ТабДок.ОтображатьЗаголовки = Ложь;
   ТабДок.Показать();
      
КонецПроцедуры

а в модуле формы:

Процедура Печать(Элемент)
   
   //Если Число(печформы.ВыбратьЭлемент("Заказ краткий", печформы)) Тогда
   //   ПечатьКраткого();
   //Иначе   
      ПечатьПолного();
   //КонецЕсли;
   
КонецПроцедуры

       печформы = Новый СписокЗначений;
   печформы.Добавить("Заказ краткий");
   печформы.Добавить("Заказ полный");
   

СветланаCC

КонецПроцедуры;
уберите точку с запятой
Тазовод)

djvjv

а еще вот ошибка
{Документ.__ЗаказНаПротез.Форма.ФормаДокумента.Форма(234)}: Преобразование значения к типу Булево не может быть выполнено
   Если печформы.ВыбратьЭлемент("Заказ краткий", печформы) Тогда



Если печформы.ВыбратьЭлемент("Заказ краткий", печформы) Тогда
      ПечатьКраткого();
   Иначе   
      ПечатьПолного();
   КонецЕсли;

SergeiB

СписокЗначений.ВыбратьЭлемент, вызывает окно для интерактивного выбора одного из элементов, входящих в список значений. Если пользователь отказался от выбора, возвращает «Неопределено».
Оператор Если пытается преобразовать значение выбора к логическому выражению.
Нужно сформировать условие по сравнению выбранного элемента и элемента списка значения («Заказ краткий»).

Если печформы.ВыбратьЭлемент("Заказ краткий", печформы) = печформы.НайтиПоЗначению("Заказ краткий") Тогда
    ПечатьКраткого();
    Иначе   
    ПечатьПолного();
КонецЕсли;

Теги:

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

Рейтинг@Mail.ru

Поиск