Имя: Пароль:
1C
1С v8
Помогите разобраться
,
0 bad001
 
03.07.12
07:04
Создаю внешнею форму. Пишет ошибку Метод объекта не обнаружен (Печать). По отладке ссылается на ОбщийМодульУниверсальныеМеханизмы на строку ТабДокумент = Обработка.Печать();
В чем проблема  подскажите?

Вот код:

Функция Печать() Экспорт

   ЗапросШапка = Новый Запрос;
   ЗапросШапка.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
   ЗапросШапка.Текст =
   "ВЫБРАТЬ
   |    Номер,
   |    Дата,
   |    ДоговорКонтрагента,
   |    Контрагент КАК Получатель,
   |    Организация КАК Поставщик,
   |    Организация,
   |    СуммаДокумента,
   |    ВалютаДокумента,
   |    УчитыватьНДС,
   |    СуммаВключаетНДС
   |ИЗ
   |    Документ.РеализацияУслугПоПереработке КАК РеализацияУслугПоПереработке
   |
   |ГДЕ
   |    РеализацияУслугПоПереработке.Ссылка = &ТекущийДокумент";
   Шапка = ЗапросШапка.Выполнить().Выбрать();
   Шапка.Следующий();

   ЗапросУслуги = Новый Запрос;
   ЗапросУслуги.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
   ЗапросУслуги.Текст =
   "ВЫБРАТЬ
   |    РеализацияУслугПоПереработке.Содержание КАК Товар,
   |    СУММА(РеализацияУслугПоПереработке.Количество) КАК Количество,
   |    РеализацияУслугПоПереработке.Цена,
   |    СУММА(РеализацияУслугПоПереработке.Сумма) КАК Сумма,
   |    РеализацияУслугПоПереработке.СтавкаНДС,
   |    СУММА(РеализацияУслугПоПереработке.СуммаНДС) КАК СуммаНДС,
   |    МИНИМУМ(РеализацияУслугПоПереработке.НомерСтроки) КАК НомерСтроки
   |ИЗ
   |    (ВЫБРАТЬ
   |        ВЫРАЗИТЬ(РеализацияУслугПоПереработкеУслуги.Содержание КАК СТРОКА(1000)) КАК Содержание,
   |        РеализацияУслугПоПереработкеУслуги.Количество КАК Количество,
   |        РеализацияУслугПоПереработкеУслуги.Цена КАК Цена,
   |        РеализацияУслугПоПереработкеУслуги.Сумма КАК Сумма,
   |        РеализацияУслугПоПереработкеУслуги.СтавкаНДС КАК СтавкаНДС,
   |        РеализацияУслугПоПереработкеУслуги.СуммаНДС КАК СуммаНДС,
   |        РеализацияУслугПоПереработкеУслуги.НомерСтроки КАК НомерСтроки
   |    ИЗ
   |        Документ.РеализацияУслугПоПереработке.Услуги КАК РеализацияУслугПоПереработкеУслуги
   |    ГДЕ
   |        РеализацияУслугПоПереработкеУслуги.Ссылка = &ТекущийДокумент) КАК РеализацияУслугПоПереработке
   |
   |СГРУППИРОВАТЬ ПО
   |    РеализацияУслугПоПереработке.Содержание,
   |    РеализацияУслугПоПереработке.СтавкаНДС,
   |    РеализацияУслугПоПереработке.Цена
   |
   |УПОРЯДОЧИТЬ ПО
   |    НомерСтроки";
   ТаблицаУслуги = ЗапросУслуги.Выполнить().Выгрузить();

   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияУслугПоПереработке_Акт";
   Макет       = ПолучитьМакет("Акт");

   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   НазваниеДокумента = "Акт оказания услуг по переработке ";
   ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Акт");
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   СведенияОбОрганизации    = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата);
   ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,");
   ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
   ОбластьМакета.Параметры.Поставщик = Шапка.Поставщик;
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
   СведенияОКонтрагенте     = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
   ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
   ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя;
   ОбластьМакета.Параметры.Получатель = Шапка.Получатель;
   ТабДокумент.Вывести(ОбластьМакета);


   // Вывести табличную часть
       ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы");
       ОбластьСтроки = Макет.ПолучитьОбласть("Строка");

   ТабДокумент.Вывести(ОбластьМакета);
   НомерСтроки = 0;

   Для Каждого СтрокаТабличнойЧасти Из ТаблицаУслуги Цикл    

       НомерСтроки = НомерСтроки + 1;
       
       ОбластьСтроки.Параметры.Заполнить(СтрокаТабличнойЧасти);
       ОбластьСтроки.Параметры.НомерСтроки = НомерСтроки;
       ОбластьСтроки.Параметры.Товар       = СокрЛП(СтрокаТабличнойЧасти.Товар);

       ТабДокумент.Вывести(ОбластьСтроки);

   КонецЦикла;

   Если ТаблицаУслуги <> Неопределено Тогда

       Сумма    = ТаблицаУслуги.Итог("Сумма");
       СуммаНДС = ТаблицаУслуги.Итог("СуммаНДС");

   Иначе

       Сумма    = 0;
       СуммаНДС = 0;

   КонецЕсли;

   ОбластьМакета = Макет.ПолучитьОбласть("Итого");
   ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
   ТабДокумент.Вывести(ОбластьМакета);

   Если Шапка.УчитыватьНДС Тогда

       ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
       ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
       ОбластьМакета.Параметры.НДС      = ?(Шапка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС");
       ТабДокумент.Вывести(ОбластьМакета);

   КонецЕсли;

   СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
   ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
   ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего оказано услуг " + НомерСтроки
                                          + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
   ОбластьМакета.Параметры.СуммаПрописью  = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
   ТабДокумент.Вывести(ОбластьМакета);

   Возврат ТабДокумент;

КонецФункции // ПечатьАктаОбОказанииУслуг()
1 Ненавижу 1С
 
гуру
03.07.12
07:05
надеюсь этот код в модуле объекта обработки, а не формы?
2 bad001
 
03.07.12
07:06
Ошибку выдает только в предприятии. В конфигураторе ничего не видит
3 bad001
 
03.07.12
07:07
Модуль объекта. Создал внешняю обработку
4 bad001
 
03.07.12
07:09
Ну т.е. файл-новый-внешняя обработка-модуль объекта:)
5 DimVad
 
03.07.12
07:10
Ну я бы тупо попробовал переименовать функцию в Печать_, и посмотрел, что получается...
6 Мимохожий Однако
 
03.07.12
07:10
Поставь отладчик на плохую строчку.
7 SOLO1C
 
03.07.12
07:11
Проверь тип переменной Обработка
8 SOLO1C
 
03.07.12
07:11
твоя ли это внешня форма ?
9 alkov
 
03.07.12
07:12
Файл обработки в справочнике забыл обновить?
10 bad001
 
03.07.12
07:15
Ну я бы тупо попробовал переименовать функцию в Печать_, и посмотрел, что получается... - ТОже самое

твоя ли это внешня форма ? Я вытащил код из Акта об услугах Пока до редактирования макета не дошло.

Файл обработки в справочнике забыл обновить? - Ничего не обновлял:)
11 alkov
 
03.07.12
07:17
(10) Ну так потому и не видит. Зайди в элемент справочника внешних отчётов и обработок и заново укажи файл обработки жёлтой кнопочкой справа
12 bad001
 
03.07.12
07:22
где это? Не могу найти
13 alkov
 
03.07.12
07:23
(12) Там, где ты добавлял внешнюю печатную форму
14 bad001
 
03.07.12
07:25
сервис - Дополнительные отчеты и обработки- Внешнии печатные формы?
15 bad001
 
03.07.12
07:26
или справочники внешние обработки?
16 alkov
 
03.07.12
07:27
(14) Да, найди тут элемент печатной формы, который ты добавил, и заново укажи обработку
17 Ненавижу 1С
 
гуру
03.07.12
07:27
(14)да
18 bad001
 
03.07.12
07:31
т.е. сервис - Дополнительные отчеты и обработки- Внешнии печатные формы-добавить-выбрал файл внешней обработки-добавил представление объекта
19 bad001
 
03.07.12
07:36
если так то без изменений
20 alkov
 
03.07.12
07:38
(19) Не так
21 bad001
 
03.07.12
07:40
объясни на пальцах:)
22 alkov
 
03.07.12
07:46
(21) Куда ещё пальцовей-то?

В базе, а конкретней, в элементе справочника внешних обработок (внешних печатных форм) хранится не ссылка на внешнюю обработку (как в 7.7), а сама обработка. При вызове печатной формы она извлекается из базы во временный файл и открывается.

В твоём случае проблема, видимо, в том, что сохранённая тобой версия обработки отличается от той, что сейчас хранится в базе. Соответственно, нужно обновить версию в базе. Для этого нужно зайти в тот элемент справочника внешних печатных форм, что ты создал, и заново выбрать там обработку и сохранить элемент
23 Rovan
 
гуру
03.07.12
07:51
еще возможно проблема в имени обработки (не путать с именем файла) -
желательно он не должен совпадать с именем существующей в базе
24 bad001
 
03.07.12
08:10
вообщем нет по прежнему ошибка.
25 0_Serg_0
 
03.07.12
08:22
(0)
ещё там нет - СсылкаНаОбъект ;)
26 bad001
 
03.07.12
09:10
Спасибо всем. Особенно alkov. С его помощью разобрался. Дело было в замене ЭтотОбъект.Ссылка на СсылкуНаОбъект
27 bad001
 
03.07.12
09:12
Ошибка времени выполнения:
{ВнешняяОбработка.ПечатьАктаОбОказанииУслуг.МодульОбъекта(3))}:Поле объекта не обнаружено (ДополнительнаяКолонкаПечатныхФормДокументов) в модуле ВнешняяОбработка.ПечатьАктаОбОказанииУслуг.МодульОбъекта строка 3

Код:

Функция Печать() Экспорт
   
   ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
   Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
       ВыводитьКоды    = Истина;
       Колонка         = "Артикул";
       ТекстКодАртикул = "Артикул";
   ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
       ВыводитьКоды    = Истина;
       Колонка         = "Код";
       ТекстКодАртикул = "Код";
   Иначе
       ВыводитьКоды    = Ложь;
       Колонка         = "";
       ТекстКодАртикул = "Код";
   КонецЕсли;

   Если ВыводитьКоды Тогда
       ОбластьШапки  = "ШапкаТаблицыСКодом";
       ОбластьСтроки = "СтрокаСКодом";
   Иначе
       ОбластьШапки  = "ШапкаТаблицы";
       ОбластьСтроки = "Строка";
   КонецЕсли;
   
   ЗапросШапка = Новый Запрос;
   ЗапросШапка.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
   ЗапросШапка.Текст =
   "ВЫБРАТЬ
   |    Номер,
   |    Дата,
   |    ДоговорКонтрагента,
   |    Контрагент КАК Получатель,
   |    Организация КАК Поставщик,
   |    Организация,
   |    СуммаДокумента,
   |    ВалютаДокумента,
   |    УчитыватьНДС,
   |    СуммаВключаетНДС
   |ИЗ
   |    Документ.РеализацияУслугПоПереработке КАК РеализацияУслугПоПереработке
   |
   |ГДЕ
   |    РеализацияУслугПоПереработке.Ссылка = &ТекущийДокумент";
   Шапка = ЗапросШапка.Выполнить().Выбрать();
   Шапка.Следующий();

   ЗапросУслуги = Новый Запрос;
   ЗапросУслуги.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
   ЗапросУслуги.Текст =
   "ВЫБРАТЬ
   |    РеализацияУслугПоПереработке.Содержание КАК Товар,
   |    СУММА(РеализацияУслугПоПереработке.Количество) КАК Количество,
   |    РеализацияУслугПоПереработке.Цена,
   |    СУММА(РеализацияУслугПоПереработке.Сумма) КАК Сумма,
   |    РеализацияУслугПоПереработке.СтавкаНДС,
   |    СУММА(РеализацияУслугПоПереработке.СуммаНДС) КАК СуммаНДС,
   |    МИНИМУМ(РеализацияУслугПоПереработке.НомерСтроки) КАК НомерСтроки,
   |    РеализацияУслугПоПереработке.КодАртикул КАК КодАртикул,
   |    РеализацияУслугПоПереработке.ЕдиницаИзмерения
   |ИЗ
   |    (ВЫБРАТЬ
   |        ВЫРАЗИТЬ(РеализацияУслугПоПереработкеУслуги.Содержание КАК СТРОКА(1000)) КАК Содержание,
   |        РеализацияУслугПоПереработкеУслуги.Количество КАК Количество,
   |        РеализацияУслугПоПереработкеУслуги.Цена КАК Цена,
   |        РеализацияУслугПоПереработкеУслуги.Сумма КАК Сумма,
   |        РеализацияУслугПоПереработкеУслуги.СтавкаНДС КАК СтавкаНДС,
   |        РеализацияУслугПоПереработкеУслуги.СуммаНДС КАК СуммаНДС,
   |        РеализацияУслугПоПереработкеУслуги.НомерСтроки КАК НомерСтроки,
   |        РеализацияУслугПоПереработкеУслуги.Номенклатура КАК КодАртикул,
   |        РеализацияУслугПоПереработкеУслуги.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения
   |    ИЗ
   |        Документ.РеализацияУслугПоПереработке.Услуги КАК РеализацияУслугПоПереработкеУслуги
   |    ГДЕ
   |        РеализацияУслугПоПереработкеУслуги.Ссылка = &ТекущийДокумент) КАК РеализацияУслугПоПереработке
   |
   |СГРУППИРОВАТЬ ПО
   |    РеализацияУслугПоПереработке.Содержание,
   |    РеализацияУслугПоПереработке.СтавкаНДС,
   |    РеализацияУслугПоПереработке.Цена,
   |    РеализацияУслугПоПереработке.КодАртикул,
   |    РеализацияУслугПоПереработке.ЕдиницаИзмерения
   |
   |УПОРЯДОЧИТЬ ПО
   |    НомерСтроки";
   ТаблицаУслуги = ЗапросУслуги.Выполнить().Выгрузить();

   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияУслугПоПереработке_Акт";
   Макет       = ПолучитьМакет("Акт");

   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   НазваниеДокумента = "Акт оказания услуг по переработке ";
   ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Акт");
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   СведенияОбОрганизации    = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата,);
   ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации);
   ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
   ОбластьМакета.Параметры.Поставщик = Шапка.Поставщик;
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
   СведенияОКонтрагенте     = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
   ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКонтрагенте);
   ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя;
   ОбластьМакета.Параметры.Получатель = Шапка.Получатель;
   ТабДокумент.Вывести(ОбластьМакета);


   // Вывести табличную часть
   ОбластьМакета = Макет.ПолучитьОбласть(ОбластьШапки);
   Если ВыводитьКоды Тогда
       ОбластьМакета.Параметры.ИмяКодАртикул = ТекстКодАртикул;
   КонецЕсли;
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки);

   НомерСтроки = 0;

   Для Каждого СтрокаТабличнойЧасти Из ТаблицаУслуги Цикл    

       НомерСтроки = НомерСтроки + 1;
       
       ОбластьМакета.Параметры.Заполнить(СтрокаТабличнойЧасти);
       ОбластьМакета.Параметры.НомерСтроки = НомерСтроки;
       ОбластьМакета.Параметры.Товар       = СокрЛП(СтрокаТабличнойЧасти.Товар);

       ТабДокумент.Вывести(ОбластьМакета);

   КонецЦикла;

   Если ТаблицаУслуги <> Неопределено Тогда

       Сумма    = ТаблицаУслуги.Итог("Сумма");
       СуммаНДС = ТаблицаУслуги.Итог("СуммаНДС");

   Иначе

       Сумма    = 0;
       СуммаНДС = 0;

   КонецЕсли;

   ОбластьМакета = Макет.ПолучитьОбласть("Итого");
   ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
   ТабДокумент.Вывести(ОбластьМакета);

   Если Шапка.УчитыватьНДС Тогда

       ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
       ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
       ОбластьМакета.Параметры.НДС      = ?(Шапка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС");
       ТабДокумент.Вывести(ОбластьМакета);

       ОбластьМакета = Макет.ПолучитьОбласть("Всего");
       ОбластьМакета.Параметры.Итог = ОбщегоНазначения.ФорматСумм(?(Шапка.СуммаВключаетНДС, Сумма, Сумма + СуммаНДС));
       ТабДокумент.Вывести(ОбластьМакета);
       
   КонецЕсли;

   СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
   ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
   ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего оказано услуг " + НомерСтроки
                                          + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
   ОбластьМакета.Параметры.СуммаПрописью  = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
   ОтветственныеЛица = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Организация, Шапка.Дата);
   ОбластьМакета.Параметры.Отпустил = ОтветственныеЛица.Руководитель;
   ТабДокумент.Вывести(ОбластьМакета);
       
   Возврат ТабДокумент;
   
КонецФункции // Печать
28 butterbean
 
03.07.12
09:13
(27) типа нету у тебя такой коснтанты
29 butterbean
 
03.07.12
09:13
(28)+ или перечисления
30 0_Serg_0
 
03.07.12
09:14
(27)

зачем выложил?
думаешь и остальные не умеют внешнии печ.формы делать??
31 bad001
 
03.07.12
09:15
30 тут другой код
32 bad001
 
03.07.12
09:16
butterbean как это поправить?
33 0_Serg_0
 
03.07.12
09:17
(31)

после "Константы." - показывается твоё поле в подсказке?
34 butterbean
 
03.07.12
09:20
(32) для начала убедиться, что их действительно нет
35 bad001
 
03.07.12
09:35
Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (ДополнительнаяКолонкаПечатныхФормДокументов)

в коде ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Костанты такой нет
36 bad001
 
03.07.12
09:36
Как ее создать?:)
37 0_Serg_0
 
03.07.12
09:36
самописька?О_о
38 bad001
 
03.07.12
10:52
кто нибудь знает почему может рисунок в макете не отображаться?
39 Pro-tone
 
модератор
03.07.12
10:54
(38) в пофигураторе виден?
40 bad001
 
03.07.12
10:55
в макете виден При предворительном просмотре нет
41 bad001
 
03.07.12
10:56
один раз получилось вывести на экран. Но сдвинул на самый вверх. Теперь даже так не выходят
42 Ksandr
 
03.07.12
10:57
Посмотри, нет ли в обработке #если клиент тогда
43 bad001
 
03.07.12
10:59
это где?