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

Автор Тема: Метод объекта не обнаружен  (Прочитано 2325 раз)

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

Оффлайн Александр К

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-28
  • Сайт: 
Добрый день! Помогите найти косяк. Делаю ВПФ, для операции, введенных вручную, пытаюсь всунуть форму Т-53. Бухгалтерия базовая, 3.0.41.53.

Ошибка:

{ВнешняяОбработка.ммм.МодульОбъекта(155)}: Метод объекта не обнаружен (ВыборкаДляПечатиШап)
ВыборкаШапок = Менеджер.ВыборкаДляПечатиШап(МассивОбъектов);

Сам кусок кода обработки:

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

Функция ПечатьТ53(МассивОбъектов, ОбъектыПечати)
   УстановитьПривилегированныйРежим(Истина);
   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.АвтоМасштаб            = Истина;
   ТабДокумент.РазмерКолонтитулаСверху   = 0;
   ТабДокумент.РазмерКолонтитулаСнизу   = 0;
   ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Ландшафт;
   ТабДокумент.ИмяПараметровПечати      = "ПАРАМЕТРЫ_ПЕЧАТИ_ОперацияБух_Т53";
   Менеджер = Документы[МассивОбъектов[0].Метаданные().Имя];
    ВалютаУчета = ЗарплатаКадры.ВалютаУчетаЗаработнойПлаты();
    Макет = ПолучитьМакет("ПФ_MXL_Т53");
   ВыборкаШапок = Менеджер.ВыборкаДляПечатиШап(МассивОбъектов);
   ВыборкаСтрок = Менеджер.ВыборкаДляПечатиТаб(МассивОбъектов);
   ПервыйДокумент = Истина;
   Пока ВыборкаШапок.Следующий() Цикл
      Если Не ПервыйДокумент Тогда
         ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
      КонецЕсли;
      ПервыйДокумент = Ложь;
      НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
      ВсегоСтрокДокумента = ВыборкаСтрок.Количество();
      ОбластьМакетаШапкаДокумента = Макет.ПолучитьОбласть("Шапка");
      ОбластьМакетаШапка         = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
      ОбластьМакетаСтрока       = Макет.ПолучитьОбласть("Строка");
      ОбластьМакетаИтого          = Макет.ПолучитьОбласть("Итого");
      ОбластьМакетаПодвал       = Макет.ПолучитьОбласть("Подвал");
      ВыводимыеОбласти = Новый Массив();
      ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
      ВыводимыеОбласти.Добавить(ОбластьМакетаИтого);
      ОбластьМакетаШапкаДокумента.Параметры.Заполнить(ВыборкаШапок);
      ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации   = СокрЛП(ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации);
      ОбластьМакетаШапкаДокумента.Параметры.НомерДок            = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ВыборкаШапок.НомерДок, Истина, Истина);   
      ОбластьМакетаШапка.Параметры.СуммаДок = РаботаСКурсамиВалют.СформироватьСуммуПрописью(ВыборкаШапок.СуммаПоДокументу, ВалютаУчета);
      ОбластьМакетаШапка.Параметры.СуммаДокРублей = Цел(ВыборкаШапок.СуммаПоДокументу);
      ОбластьМакетаШапка.Параметры.СуммаДокКопеек = (ВыборкаШапок.СуммаПоДокументу - Цел(ВыборкаШапок.СуммаПоДокументу)) * 100;
      ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаШапок); // Подвал документа.
      ОбластьМакетаПодвал.Параметры.РКО = "Расходный кассовый ордер № _______ от  ""___"" ___________ 20 ___ г.";
      ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
      ТабДокумент.Вывести(ОбластьМакетаШапка);
      ВыведеноСтраниц = 1; ВыведеноСтрок = 0; ИтогоНаСтранице = 0; Итого = 0;
      НомерСтроки = 0;
      ВыборкаСтрок.Сбросить();
      Пока ВыборкаСтрок.НайтиСледующий(ВыборкаШапок.Ссылка, "Ведомость") Цикл
         НомерСтроки = НомерСтроки + 1;
         ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСтрок);
         ОбластьМакетаСтрока.Параметры.НомерСтроки = НомерСтроки;
         ОбластьМакетаСтрока.Параметры.ТабельныйНомер =       ПрефиксацияОбъектовКлиентСервер.УдалитьПрефиксыИзНомераОбъекта(ВыборкаСтрок.ТабельныйНомер, Истина, Истина);      
         ОбластьМакетаСтрока.Параметры.Физлицо = СокрЛП(ВыборкаСтрок.АналитикаДТ);
         ВыведеноСтрок = ВыведеноСтрок + 1;
         ВывестиПодвалЛиста = Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
         Если Не ВывестиПодвалЛиста И ВыведеноСтрок = ВсегоСтрокДокумента Тогда
            ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
            ВывестиПодвалЛиста = Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
         КонецЕсли;
         Если ВывестиПодвалЛиста Тогда
            ОбластьМакетаИтого.Параметры.Итого = ИтогоНаСтранице;
            ТабДокумент.Вывести(ОбластьМакетаИтого);
            ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            ТабДокумент.Вывести(ОбластьМакетаШапка);
            ВыведеноСтраниц = ВыведеноСтраниц + 1;
            ИтогоНаСтранице = 0;
         КонецЕсли;
         ТабДокумент.Вывести(ОбластьМакетаСтрока);
         ИтогоНаСтранице = ИтогоНаСтранице + ВыборкаСтрок.Сумма;
         Итого = Итого + ВыборкаСтрок.Сумма;
      КонецЦикла; // по строкам документа
      Если ВыведеноСтрок > 0 Тогда
         ОбластьМакетаИтого.Параметры.ИтогоНаСтранице = ИтогоНаСтранице;
      КонецЕсли;
      ОбластьМакетаПодвал.Параметры.КоличествоЛистов = ?(ВыведеноСтрок = 0,"",ВыведеноСтраниц + 1);
      ВыводимыеОбласти = Новый Массив();
      ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
      ВыводимыеОбласти.Добавить(ОбластьМакетаИтого);
      ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
      Для Сч = 1 По ОбластьМакетаСтрока.Параметры.Количество() Цикл
         ОбластьМакетаСтрока.Параметры.Установить(Сч - 1,"");
      КонецЦикла;
      ОбластьМакетаСтрока.Параметры.АналитикаДт = " ";
      Пока ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти) Цикл
         ТабДокумент.Вывести(ОбластьМакетаСтрока);
      КонецЦикла;
      ТабДокумент.Вывести(ОбластьМакетаИтого);
      ТабДокумент.Вывести(ОбластьМакетаПодвал);
      УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаШапок.Ссылка);
   КонецЦикла; // по документам
   Возврат ТабДокумент;
КонецФункции


Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
в доукументе Документы[МассивОбъектов[0].Метаданные().Имя]; должен быть в менеджеры функция али процедура экспортная с названием ВыборкаДляПечатиШап
Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн Александр К

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-28
  • Сайт: 
дфтын, Точно, спасибо!)) Правда, задача стала еще более сложной, придется как-нибудь по другому делать видимо)

Онлайн Kironten

  • *****
  • Сообщений: 810
  • РЕПУТАЦИЯ: 171
  • КПД: 21%
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
дфтын, Точно, спасибо!)) Правда, задача стала еще более сложной, придется как-нибудь по другому делать видимо)
А чего сложного? вы же судя по коду себе в впф вынесли формирование выборки. Её и используйте.

Оффлайн Александр К

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-28
  • Сайт: 
Kironten, Поменял Документ на ВнешнююОбработку, стал выдавать: Поле объекта не обнаружено (ОперацияБух). Так понимаю, она теперь ищет данные поля в выборке, которых в ней нет. Как именно это исправить - уже мозгов или опыта не хватает

Добавлено: 28 Окт 2015, 14:52

Kironten, Проблема в том, что выборка взята из ВедомостиНаВыплатуЗарплатыИзКассы, и изменена. А в документе ОперацияБух ничего похожего нет

Онлайн Kironten

  • *****
  • Сообщений: 810
  • РЕПУТАЦИЯ: 171
  • КПД: 21%
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
Kironten, Проблема в том, что выборка взята из ВедомостиНаВыплатуЗарплатыИзКассы, и изменена. А в документе ОперацияБух ничего похожего нет
По коду я вижу есть получение всех данных, ВСЕХ документов ОперацияБух. Выборки из ВедомостиНаВыплатуЗарплатыИзКассы я в коде не вижу.

Оффлайн Александр К

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-28
  • Сайт: 
Kironten, Т.е. мне нужно сделать так, чтобы обработка получала данные из определенного документа, а не из всех, если я правильно понял. Нужно в запросе выбрать определенный документ. Проблема в том, что я не знаю как это сделать)

Онлайн Kironten

  • *****
  • Сообщений: 810
  • РЕПУТАЦИЯ: 171
  • КПД: 21%
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
Kironten, Т.е. мне нужно сделать так, чтобы обработка получала данные из определенного документа, а не из всех, если я правильно понял.
нет, неправильно.
У вас и так в МассивОбъектов должны попадать нужные документы.
Я говорю о том коде, что вы привели:
Функция ВыборкаДляПечатиШап(МассивОбъектов) Экспорт
   Запрос = Новый Запрос;
   Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
   Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
   Запрос.Текст =
   "ВЫБРАТЬ
   |   ОперацияБух.Ссылка,
   |   ОперацияБух.Номер,
   |   ОперацияБух.Дата,
   |   ОперацияБух.Организация КАК Организация,
   |   ВЫРАЗИТЬ(ОперацияБух.Организация.НаименованиеПолное КАК СТРОКА(300)) КАК НазваниеОрганизации,
   |   ОперацияБух.Организация.КодПоОКПО КАК КодПоОКПО,
   |   ОперацияБух.СуммаОперации КАК СуммаПоДокументу,
   |ПОМЕСТИТЬ ВТДанныеДокументов
   |ИЗ
   |   Документ.ОперацияБух КАК ОперацияБух";
   Запрос.Выполнить();
   Запрос.Текст =
   "ВЫБРАТЬ
   |   ВТДанныеДокументов.Ссылка,
   |   ВТДанныеДокументов.Номер КАК НомерДок,
   |   ВТДанныеДокументов.Дата КАК ДатаДок,
   |   ВТДанныеДокументов.Организация,
   |   ВТДанныеДокументов.НазваниеОрганизации,
   |   ВТДанныеДокументов.КодПоОКПО,
   |   ВТДанныеДокументов.СуммаПоДокументу,
   |ИЗ
   |   ВТДанныеДокументов КАК ВТДанныеДокументов
   |УПОРЯДОЧИТЬ ПО
   |   ВТДанныеДокументов.Дата,
   |   ВТДанныеДокументов.Номер";
   Возврат Запрос.Выполнить().Выбрать();
КонецФункции

Я вижу в нем выборку из всех документов БухОперация не ограниченная МассивомОбъектов.
Выборки же по какой то там ведомости на зарплату в вашем коде нигде не видно.
Вам просто нужно все неэкспортные процедуры, которые участвуют в формировании ПФ перегнать в вашу обработку.

Я бы сделал так:
   //Менеджер = Документы[МассивОбъектов[0].Метаданные().Имя];
    ВалютаУчета = ЗарплатаКадры.ВалютаУчетаЗаработнойПлаты();
    Макет = ПолучитьМакет("ПФ_MXL_Т53");
   ВыборкаШапок = ВыборкаДляПечатиШап(МассивОбъектов);
   ВыборкаСтрок = ВыборкаДляПечатиТаб(МассивОбъектов);
А Функции ВыборкаДляПечатиШап(..) и ВыборкаДляПечатиТаб(..) из модуля менеджера документа БухОперация перенес бы в модуль обработки.

Да, и:
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(...)
Это тоже лучше перенести в обработку. Там мутабельные значения иначе кататься будут.

Оффлайн Александр К

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-28
  • Сайт: 
Kironten, Да вроде как все на месте.... ВыборкаДляПечатиШап и ВыборкаДляПечатиТаб есть, больше она вроде ниоткуда не берет данные.

Полный код обработки:
Функция СведенияОВнешнейОбработке() Экспорт
   
    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    МассивНазначений.Добавить("Документ.ОперацияБух");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", "Т-53 для ручной операции");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Версия", "для БП 3.0");   
    ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма 'Т-53' к документу Ручная операция");
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    ДобавитьКоманду(ТаблицаКоманд, "Т53", "ПФ_MXL_Т53", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;

КонецФункции

Функция ПолучитьТаблицуКоманд()

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_Т53") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПФ_MXL_Т53", "Т53",
ПечатьТ53(МассивОбъектов, ОбъектыПечати));
КонецЕсли;

КонецПроцедуры

Функция ВыборкаДляПечатиШап(МассивОбъектов) Экспорт

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);


Запрос.Текст =
"ВЫБРАТЬ
| ОперацияБух.Ссылка,
| ОперацияБух.Номер,
| ОперацияБух.Дата,
| ОперацияБух.Организация КАК Организация,
| ВЫРАЗИТЬ(ОперацияБух.Организация.НаименованиеПолное КАК СТРОКА(300)) КАК НазваниеОрганизации,
| ОперацияБух.Организация.КодПоОКПО КАК КодПоОКПО,
| ОперацияБух.СуммаОперации КАК СуммаПоДокументу,
|ПОМЕСТИТЬ ВТДанныеДокументов
|ИЗ
| Документ.ОперацияБух КАК ОперацияБух";

Запрос.Выполнить();
Запрос.Текст =
"ВЫБРАТЬ
| ВТДанныеДокументов.Ссылка,
| ВТДанныеДокументов.Номер КАК НомерДок,
| ВТДанныеДокументов.Дата КАК ДатаДок,
| ВТДанныеДокументов.Организация,
| ВТДанныеДокументов.НазваниеОрганизации,
| ВТДанныеДокументов.КодПоОКПО,
| ВТДанныеДокументов.СуммаПоДокументу,
|ИЗ
| ВТДанныеДокументов КАК ВТДанныеДокументов
|УПОРЯДОЧИТЬ ПО
| ВТДанныеДокументов.Дата,
| ВТДанныеДокументов.Номер";

Возврат Запрос.Выполнить().Выбрать();

КонецФункции

Функция ВыборкаДляПечатиТаб(МассивОбъектов) Экспорт

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);

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


Возврат Запрос.Выполнить().Выбрать();


КонецФункции

Функция ПечатьТ53(МассивОбъектов, ОбъектыПечати)

УстановитьПривилегированныйРежим(Истина);
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.АвтоМасштаб = Истина;
ТабДокумент.РазмерКолонтитулаСверху = 0;
ТабДокумент.РазмерКолонтитулаСнизу = 0;
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОперацияБух_Т53";

Менеджер = ВнешниеОбработки[МассивОбъектов[0].Метаданные().Имя];
    ВалютаУчета = ЗарплатаКадры.ВалютаУчетаЗаработнойПлаты();


//Получаем макет;
    Макет = ПолучитьМакет("ПФ_MXL_Т53");

ВыборкаШапок = Менеджер.ВыборкаДляПечатиШап(МассивОбъектов);
ВыборкаСтрок = Менеджер.ВыборкаДляПечатиТаб(МассивОбъектов);

ПервыйДокумент = Истина;
Пока ВыборкаШапок.Следующий() Цикл

// Документы нужно выводить на разных страницах.
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;

// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;

// Подсчитываем количество страниц документа - для корректного разбиения на страницы.
ВсегоСтрокДокумента = ВыборкаСтрок.Количество();

ОбластьМакетаШапкаДокумента = Макет.ПолучитьОбласть("Шапка");
ОбластьМакетаШапка = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьМакетаИтого          = Макет.ПолучитьОбласть("Итого");
ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");

// Массив с двумя строками - для разбиения на страницы.
ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
ВыводимыеОбласти.Добавить(ОбластьМакетаИтого);

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

ОбластьМакетаШапка.Параметры.СуммаДок = РаботаСКурсамиВалют.СформироватьСуммуПрописью(ВыборкаШапок.СуммаПоДокументу, ВалютаУчета);
ОбластьМакетаШапка.Параметры.СуммаДокРублей = Цел(ВыборкаШапок.СуммаПоДокументу);
ОбластьМакетаШапка.Параметры.СуммаДокКопеек = (ВыборкаШапок.СуммаПоДокументу - Цел(ВыборкаШапок.СуммаПоДокументу)) * 100;

ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаШапок); // Подвал документа.
// Строка не локализуется т.к. является частью регламентированной формы, применяемой в РФ.
ОбластьМакетаПодвал.Параметры.РКО = "Расходный кассовый ордер № _______ от  ""___"" ___________ 20 ___ г.";

ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапка);

ВыведеноСтраниц = 1; ВыведеноСтрок = 0; ИтогоНаСтранице = 0; Итого = 0;

// Выводим данные по строкам документа.
НомерСтроки = 0;
ВыборкаСтрок.Сбросить();
Пока ВыборкаСтрок.НайтиСледующий(ВыборкаШапок.Ссылка, "Ведомость") Цикл

НомерСтроки = НомерСтроки + 1;

ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСтрок);
ОбластьМакетаСтрока.Параметры.НомерСтроки = НомерСтроки;
ОбластьМакетаСтрока.Параметры.ТабельныйНомер =
ПрефиксацияОбъектовКлиентСервер.УдалитьПрефиксыИзНомераОбъекта(ВыборкаСтрок.ТабельныйНомер, Истина, Истина);

ОбластьМакетаСтрока.Параметры.Физлицо = СокрЛП(ВыборкаСтрок.АналитикаДТ);
                                                                     
// разбиение на страницы
ВыведеноСтрок = ВыведеноСтрок + 1;

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

ОбластьМакетаИтого.Параметры.Итого = ИтогоНаСтранице;
ТабДокумент.Вывести(ОбластьМакетаИтого);
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапка);
ВыведеноСтраниц = ВыведеноСтраниц + 1;
ИтогоНаСтранице = 0;

КонецЕсли;

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

КонецЦикла; // по строкам документа

Если ВыведеноСтрок > 0 Тогда
ОбластьМакетаИтого.Параметры.ИтогоНаСтранице = ИтогоНаСтранице;
КонецЕсли;
ОбластьМакетаПодвал.Параметры.КоличествоЛистов = ?(ВыведеноСтрок = 0,"",ВыведеноСтраниц + 1);

ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
ВыводимыеОбласти.Добавить(ОбластьМакетаИтого);
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
Для Сч = 1 По ОбластьМакетаСтрока.Параметры.Количество() Цикл
ОбластьМакетаСтрока.Параметры.Установить(Сч - 1,"");
КонецЦикла;
ОбластьМакетаСтрока.Параметры.АналитикаДт = " ";
Пока ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти) Цикл
ТабДокумент.Вывести(ОбластьМакетаСтрока);
КонецЦикла;
ТабДокумент.Вывести(ОбластьМакетаИтого);
ТабДокумент.Вывести(ОбластьМакетаПодвал);

// В табличном документе необходимо задать имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно.
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаШапок.Ссылка);

КонецЦикла; // по документам

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

КонецФункции

//Справочники.Валюты.НайтиПоКоду("643")
Добавлено: 28 Окт 2015, 15:43

Kironten, Ого.... Спасибо!!!)) Сейчас будем пробовать!

Онлайн Kironten

  • *****
  • Сообщений: 810
  • РЕПУТАЦИЯ: 171
  • КПД: 21%
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
Попробуйте так:
//Менеджер = Документы[МассивОбъектов[0].Метаданные().Имя]; //закомментируйте
ВалютаУчета = ЗарплатаКадры.ВалютаУчетаЗаработнойПлаты();
Макет = ПолучитьМакет("ПФ_MXL_Т53");
ВыборкаШапок = ВыборкаДляПечатиШап(МассивОбъектов); // вместо Менеджер.ВыборкаДляПечатиШап(МассивОбъектов)
ВыборкаСтрок = ВыборкаДляПечатиТаб(МассивОбъектов); // вместо Менеджер.ВыборкаДляПечатиТаб(МассивОбъектов)
В том коде, что у вас приведен, несмотря на то, что получение выборок вы перенесли в обработку, обращаетесь за данными вы все равно к модулю менеджера документа.

Кроме того:
Функция ВыборкаДляПечатиШап(МассивОбъектов) Экспорт

    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
   
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);


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


Теги:
 

{Форма.Форма.Форма(11)}: Поле объекта не обнаружено

Автор OksРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1897
Последний ответ 09 Дек 2015, 19:33
от Oks
Ошибка "Поле объекта не обнаружено"

Автор KSV67Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 3778
Последний ответ 29 Май 2014, 22:11
от KSV67
Общий реквизит или одинаковый реквизит для каждого объекта

Автор Соловьева Ольга_ИнтерсРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 787
Последний ответ 15 Июн 2015, 14:23
от cska-fanat-kz
Для объекта не определена форма по умолчанию, соответствующая текущему режиму запуска. Объект: "Консоль Запросов"

Автор Азамат ХубиевРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 4912
Последний ответ 20 Июл 2016, 22:56
от Азамат Хубиев
"Поле объекта не обнаружено" при переходе на редакцию 2.0

Автор gdlkgdfgnfdgРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 16
Просмотров: 21313
Последний ответ 12 Апр 2017, 11:53
от Diman.K

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

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

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


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

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

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

* Реклама

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

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

alex0402
92 Сообщений
oleg-x
80 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
68 Сообщений
Golickoff Golickoff
51 Сообщений
AIFrame
46 Сообщений
ilyay ilyay
42 Сообщений
Амал
30 Сообщений
lansy
22 Сообщений
Dethmontt Dethmontt
22 Сообщений
xproh
21 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal