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

Ошибка при создании отчета, без помощи СКД

Автор proofet, 31 мар 2011, 21:52

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

proofet

Всем привет! Задача: составить отчет по регистру Касса (Вид регистра - Остатки) в табличном документе  -- НЕ ЧЕРЕЗ СХЕМУ КОМПАНОВКИ ДАННЫХ. Мной сделан макет, подобный тому что делает конструктор печати....Создана форма отчета, на которой расположены  НачалоПериода ; КонецПериода и кнопка СФОРМИРОВАТЬ непосредственно сам отчет..Который бы выводил дату начала и конца, перечень номенклатуры, обороты кассы по каждой позиции и общий итог.   .. версия 1С - 8.1 .  Ранее всегда создавал отчет через схему компановки данных....Может уже было что то подобное на форуме ?(я искал, но может быть не слишком тщательно, всетки много тут тем уж было)...... В общем при нажатии кнопки сформировать отчет не формируется а выводит ошибки....Очевидно код составил я не правильно. Прошу вас если не затруднит помочь
Код:

Процедура СформироватьОтчетНажатие(Элемент)
    НачалоПериода = ЭлементыФормы.ДатаНачала;
   КонецПериода = ЭлементыФормы.ДатаОкончания;
   Макет1 = Отчеты.ОтчетПоКассеВМакете.ПолучитьМакет("Макет1");

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

   
   Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
   Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
   
   ТабДок = ЭлементыФормы.ПереченьНоменклатуры;
                     
   //Запрос.Параметры.Вставить("Ссылка", Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();
   

   ОбластьЗаголовок = Макет1.ПолучитьОбласть("Заголовок");
   ОбластьПереченьНоменклатурыШапка = Макет1.ПолучитьОбласть("ПереченьНоменклатурыШапка");
   ОбластьПереченьНоменклатуры = Макет1.ПолучитьОбласть("ПереченьНоменклатуры");
   ОбластьИтог = Макет1.ПолучитьОбласть("Всего");
   ТабДок.Очистить();
   
   ВставлятьРазделительСтраниц = Ложь;
   Пока Выборка.Следующий() Цикл
      Если ВставлятьРазделительСтраниц Тогда
         ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
      КонецЕсли;

      ТабДок.Вывести(ОбластьЗаголовок);

      //Шапка.Параметры.Заполнить(Выборка);
      //ТабДок.Вывести(Шапка, Выборка.Уровень());

      ТабДок.Вывести(ОбластьПереченьНоменклатурыШапка);
      ВыборкаПереченьНоменклатуры = Выборка.ПереченьНоменклатуры.Выбрать();
      
      СуммаНачальныйОстаток = 0;
      СуммаОборот = 0;
      СуммаКонечныйОстаток = 0;
      
      Пока ВыборкаПереченьНоменклатуры.Следующий() Цикл
         ОбластьПереченьНоменклатуры.Параметры.Заполнить(ВыборкаПереченьНоменклатуры);
         ТабДок.Вывести(ОбластьПереченьНоменклатуры, ВыборкаПереченьНоменклатуры.Уровень());
         СуммаНачальныйОстаток = СуммаНачальныйОстаток + ВыборкаПереченьНоменклатуры.НачальныйОстаток;
         СуммаОборот = СуммаОборот + ВыборкаПереченьНоменклатуры.Оборот;
         СуммаКонечныйОстаток = СуммаКонечныйОстаток + ВыборкаПереченьНоменклатуры.КонечныйОстаток;
         
      КонецЦикла;
      
      ОбластьИтог.Параметры.ВсегоНачальныйОстаток = СуммаНачальныйОстаток;
      ОбластьИтог.Параметры.ВсегоОборот = СуммаОборот;
        ОбластьИтог.Параметры.ВсегоКонечныйОстаток = СуммаКонечныйОстаток;

      ТабДок.Вывести(ОбластьИтог);
      
      ВставлятьРазделительСтраниц = Истина;
      
   КонецЦикла;

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

proofet


Nail2010

Вместо 
НачалоПериода = ЭлементыФормы.ДатаНачала;
   КонецПериода = ЭлементыФормы.ДатаОкончания;
сделай через
Форма - вставить элемент управления - поле периода.

Наверное, ошибка выходит - Параметр не определен?

***Vjacheslav***


proofet

{Отчет.ОтчетПоКассеВМакете.Форма.ФормаОтчета(27)}: Ошибка при вызове метода контекста (Выполнить): {(8, 20)}: Ошибка обработки представления "РегистрНакопления.Касса.ОстаткиИОбороты:Несоответствие типов (параметр номер ""1"")"
ЛЕВОЕ СОЕДИНЕНИЕ <<?>>РегистрНакопления.Касса.ОстаткиИОбороты(&НачалоПериода, &КонецПериода) КАК КассаОстаткиИОбороты
   Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(8, 20)}: Ошибка обработки представления "РегистрНакопления.Касса.ОстаткиИОбороты:Несоответствие типов (параметр номер ""1"")"
ЛЕВОЕ СОЕДИНЕНИЕ <<?>>РегистрНакопления.Касса.ОстаткиИОбороты(&НачалоПериода, &КонецПериода) КАК КассаОстаткиИОбороты

***Vjacheslav***

Пробуй так:
НачалоПериода = ЭлементыФормы.ДатаНачала.Значение;
КонецПериода = ЭлементыФормы.ДатаОкончания.Значение;

proofet

Это уже поменял...и на форме табличное поле, заменил на  поле табличного документа.  Сейчас проблема: не заполняется Поле ПереченьНоменклатуры.{Отчет.ОтчетПоКассеВМакете.Форма.ФормаОтчета(48)}: Метод объекта не обнаружен (Выбрать)
      ВыборкаПереченьНоменклатуры = Выборка.ПереченьНоменклатуры.Выбрать();

Почему нельзя Выбрать ?? в конструкторе печати даже выдает такую же строку...правда в 8.2..Объясните плиз

***Vjacheslav***

А что ты хочешь этим выбрать ВыборкаПереченьНоменклатуры = Выборка.ПереченьНоменклатуры.Выбрать();? У тебя  Выборка.ПереченьНоменклатуры - Это СпрНоменклатура.Ссылка. А у ссылки нет метода выбрать(). вот она и ругаеться.

proofet


Теги:

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

Рейтинг@Mail.ru

Поиск