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

Сохранение показателей отчета в списке документа

Автор demous, 18 апр 2012, 15:48

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

demous

УПП 8.2
задача :был создан отчет с помощью СКД, отчет относящийся к "ЗАявкамНаРасход", теперь задача стала таким образом, что этот отчет будет сохраняться два раза в неделю, с актуальными на этот период данными, что бы в дальнейшем можно было открыть список с этими отчетами, и открыть нужный отчет ( как обычный документ ) с уже сформированными данными на тот период, когда отчет был сохранен.
в модуль формы отчета прописал


Процедура Сохранить ()
   мСохраненныйДок =
Документы.Д_ПланируемыеПлатежи.СоздатьДокумент();
мСохраненныйДок.Дата = ТекущаяДата();
мСохраненныйДок.Организация = Организация;

ХранилищеДанных = Новый ХранилищеЗначения(СписокСохранения);
мСохраненныйДок.ДанныеОтчета = ХранилищеДанных;
мСохраненныйДок.Записать() ;
Модифицированность = Ложь;
КонецПроцедуры


Процедура ПередОткрытием ()
   мСохраненныйДок = ВладелецФормы.ДокументОбъект;
   мДатаНачалаПериодаОтчета = мСохраненныйДок.ДатаНачала;
   мДатаКонцаПериодаОтчета = мСохраненныйДок.ДатаОкончания;
КонецПроцедуры

Процедура ПриОткрытии ()
   Организация = мСохраненныйДок.Организация;
//
СписокСохранения = мСохраненныйДок.ДанныеОтчета.Получить();
КонецПроцедуры

Процедура ВосстановитьСохраненныеДанные ()
   //восстанавливаем версию формы
   Если СписокСохранения.Свойство("ВерсияФормы", ВерсияФормы) Тогда
      Если ВерсияФормы <> мВерсияФормы Тогда
          мВерсияФормы  = ВерсияФормы;
      КонецЕсли;
   КонецЕсли;
   // восстановим сохраненные данные редактируемых ячеек
   СписокСохранения.Свойство( "ПоказателиОтчета", ПоказателиОтчета );
   Для Каждого ПоказателиСтраницы Из ПоказателиОтчета Цикл
      ИмяТекТабличноеПоле = ПоказателиСтраницы.Ключ;
      ТекТабличноеПоле = ЭлементыФормы[ИмяТекТабличноеПоле] ;
      ПоказателиТаблПоле = ПоказателиСтраницы.Значение;
      Для Каждого Показатель Из ПоказателиТаблПоле Цикл
         ИмяПоказателя = Показатель.Ключ;
         ЗначениеПоказателя = Показатель.Значение;
         // установим значение в таблице
         ТекТабличноеПоле.Области[ИмяПоказателя].Значение =ЗначениеПоказателя;
      КонецЦикла;
   КонецЦикла;
КонецПроцедуры

создал документ
в его модуль

Процедура ПриКопировании(ОбъектКопирования)

   // Храним информацию о выбранной форме объекта копирования.
   // Она нужна для дальнейшего принятия решения - новый документ создаем
   // с сохранением или с очисткой данных объекта копирования.
   мСкопированаФорма = ОбъектКопирования.ВыбраннаяФорма;
   
КонецПроцедуры // ПриКопировании()

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
   
   Период = СокрЛП(Формат(ДатаОкончания, "ДФ=yyyyMMdd") + Формат('39991231' - ДатаНачала, "ДФ=yyyyMMdd"));
   
КонецПроцедуры

в модуль формы документа

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

   // вместо формы документа открываем форму связанного с ним отчета
   Отказ = Истина;

   Если Не(ЭтоНовый()) ИЛИ (мСкопированаФорма <> Неопределено) Тогда
      
      ПравоДоступаКОтчету = РегламентированнаяОтчетность.ПравоДоступаКРегламентированномуОтчету(ИсточникОтчета);
      Если ПравоДоступаКОтчету = Ложь Тогда
         Предупреждение("Недостаточно прав!");
         Возврат;
      ИначеЕсли ПравоДоступаКОтчету = Неопределено Тогда
         Предупреждение("Не удалось открыть сохраненные данные! Отчет не найден!");
         Возврат;
      КонецЕсли;
      //
      ОбъектОтчет = РегламентированнаяОтчетность.РеглОтчеты(ИсточникОтчета);
      Если ОбъектОтчет = Неопределено Тогда
         Сообщить("Не удалось открыть сохраненные данные! Отчет не найден!", СтатусСообщения.Важное);
         Возврат;
      КонецЕсли;
      
      ВыбФормаОтчета = ОбъектОтчет.ПолучитьФорму( ,ЭтаФорма);
      
      // обход ошибки, присутствующей в 8.2.9
      Если ВыбФормаОтчета.ОбработкаОбъект <> ОбъектОтчет Тогда
         ВыбФормаОтчета.ОбработкаОбъект = ОбъектОтчет;
      КонецЕсли;
      
      ВыбФормаОтчета.РежимВыбора = Ложь;
      ВыбФормаОтчета.ЗакрыватьПриЗакрытииВладельца = Ложь;
      ВыбФормаОтчета.Открыть();
      
   ИначеЕсли ЭтоНовый() Тогда
      //Справочники.РегламентированныеОтчеты.ПолучитьФормуСписка();
      //Отчеты.Д_ОтчетПоЗаявкам.Открыть();
      Справочники.РегламентированныеОтчеты.ПолучитьФормуСписка().Открыть();

   КонецЕсли;
КонецПроцедуры // ПередОткрытием()

суть такова, при сохранении отчета, он проваливается в ХранилищеЗначений, от туда попадает в документ ПланированиеПлатежей(самописный)
в форме списка документа, мы видим сохраненные отчеты, а проблема становиться тогда, когда хочу открыть этот сохраненный отчет
выдает вот эту ошибку
{Документ.Д_ПланируемыеПлатежи.Форма.ФормаДокумента1.Форма(11)}: Ошибка при вызове метода контекста (ЭтоНовый)
   Если Не(ЭтоНовый()) ИЛИ (мСкопированаФорма <> Неопределено) Тогда
по причине:
Документ не выбран


demous

Процедура ВосстановитьСохраненныеДанные ()
   //восстанавливаем версию формы
   Если СписокСохранения.Свойство("ВерсияФормы", ВерсияФормы) Тогда
      Если ВерсияФормы <> мВерсияФормы Тогда
          мВерсияФормы  = ВерсияФормы;
      КонецЕсли;
   КонецЕсли;
   // восстановим сохраненные данные редактируемых ячеек
   СписокСохранения.Свойство( "ПоказателиОтчета", ПоказателиОтчета );
   Для Каждого ПоказателиСтраницы Из ПоказателиОтчета Цикл
      ИмяТекТабличноеПоле = ПоказателиСтраницы.Ключ;
      ТекТабличноеПоле = ЭлементыФормы[ИмяТекТабличноеПоле] ;
      ПоказателиТаблПоле = ПоказателиСтраницы.Значение;
      Для Каждого Показатель Из ПоказателиТаблПоле Цикл
         ИмяПоказателя = Показатель.Ключ;
         ЗначениеПоказателя = Показатель.Значение;
         // установим значение в таблице
         ТекТабличноеПоле.Области[ИмяПоказателя].Значение =ЗначениеПоказателя;
      КонецЦикла;
   КонецЦикла;
КонецПроцедуры

создал документ
в его модуль

Процедура ПриКопировании(ОбъектКопирования)

   // Храним информацию о выбранной форме объекта копирования.
   // Она нужна для дальнейшего принятия решения - новый документ создаем
   // с сохранением или с очисткой данных объекта копирования.
   мСкопированаФорма = ОбъектКопирования.ВыбраннаяФорма;
   
КонецПроцедуры // ПриКопировании()

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
   
   Период = СокрЛП(Формат(ДатаОкончания, "ДФ=yyyyMMdd") + Формат('39991231' - ДатаНачала, "ДФ=yyyyMMdd"));
   
КонецПроцедуры

в модуль формы документа

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

   // вместо формы документа открываем форму связанного с ним отчета
   Отказ = Истина;

   Если Не(ЭтоНовый()) ИЛИ (мСкопированаФорма <> Неопределено) Тогда
      
      ПравоДоступаКОтчету = РегламентированнаяОтчетность.ПравоДоступаКРегламентированномуОтчету(ИсточникОтчета);
      Если ПравоДоступаКОтчету = Ложь Тогда
         Предупреждение("Недостаточно прав!");
         Возврат;
      ИначеЕсли ПравоДоступаКОтчету = Неопределено Тогда
         Предупреждение("Не удалось открыть сохраненные данные! Отчет не найден!");
         Возврат;
      КонецЕсли;
      //
      ОбъектОтчет = РегламентированнаяОтчетность.РеглОтчеты(ИсточникОтчета);
      Если ОбъектОтчет = Неопределено Тогда
         Сообщить("Не удалось открыть сохраненные данные! Отчет не найден!", СтатусСообщения.Важное);
         Возврат;
      КонецЕсли;
      
      ВыбФормаОтчета = ОбъектОтчет.ПолучитьФорму( ,ЭтаФорма);
      
      // обход ошибки, присутствующей в 8.2.9
      Если ВыбФормаОтчета.ОбработкаОбъект <> ОбъектОтчет Тогда
         ВыбФормаОтчета.ОбработкаОбъект = ОбъектОтчет;
      КонецЕсли;
      
      ВыбФормаОтчета.РежимВыбора = Ложь;
      ВыбФормаОтчета.ЗакрыватьПриЗакрытииВладельца = Ложь;
      ВыбФормаОтчета.Открыть();
      
   ИначеЕсли ЭтоНовый() Тогда
      //Справочники.РегламентированныеОтчеты.ПолучитьФормуСписка();
      //Отчеты.Д_ОтчетПоЗаявкам.Открыть();
      Справочники.РегламентированныеОтчеты.ПолучитьФормуСписка().Открыть();

   КонецЕсли;
КонецПроцедуры // ПередОткрытием()

суть такова, при сохранении отчета, он проваливается в ХранилищеЗначений, от туда попадает в документ ПланированиеПлатежей(самописный)
в форме списка документа, мы видим сохраненные отчеты, а проблема становиться тогда, когда хочу открыть этот сохраненный отчет
выдает вот эту ошибку
{Документ.Д_ПланируемыеПлатежи.Форма.ФормаДокумента1.Форма(11)}: Ошибка при вызове метода контекста (ЭтоНовый)
   Если Не(ЭтоНовый()) ИЛИ (мСкопированаФорма <> Неопределено) Тогда
по причине:
Документ не выбран

demous

      ТекТабличноеПоле = ЭлементыФормы[ИмяТекТабличноеПоле] ;
      ПоказателиТаблПоле = ПоказателиСтраницы.Значение;
      Для Каждого Показатель Из ПоказателиТаблПоле Цикл
         ИмяПоказателя = Показатель.Ключ;
         ЗначениеПоказателя = Показатель.Значение;
         // установим значение в таблице
         ТекТабличноеПоле.Области[ИмяПоказателя].Значение =ЗначениеПоказателя;
      КонецЦикла;
   КонецЦикла;
КонецПроцедуры

создал документ
в его модуль

Процедура ПриКопировании(ОбъектКопирования)

   // Храним информацию о выбранной форме объекта копирования.
   // Она нужна для дальнейшего принятия решения - новый документ создаем
   // с сохранением или с очисткой данных объекта копирования.
   мСкопированаФорма = ОбъектКопирования.ВыбраннаяФорма;
   
КонецПроцедуры // ПриКопировании()

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
   
   Период = СокрЛП(Формат(ДатаОкончания, "ДФ=yyyyMMdd") + Формат('39991231' - ДатаНачала, "ДФ=yyyyMMdd"));
   
КонецПроцедуры

в модуль формы документа

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

   // вместо формы документа открываем форму связанного с ним отчета
   Отказ = Истина;

   Если Не(ЭтоНовый()) ИЛИ (мСкопированаФорма <> Неопределено) Тогда
      
      ПравоДоступаКОтчету = РегламентированнаяОтчетность.ПравоДоступаКРегламентированномуОтчету(ИсточникОтчета);
      Если ПравоДоступаКОтчету = Ложь Тогда
         Предупреждение("Недостаточно прав!");
         Возврат;
      ИначеЕсли ПравоДоступаКОтчету = Неопределено Тогда
         Предупреждение("Не удалось открыть сохраненные данные! Отчет не найден!");
         Возврат;
      КонецЕсли;
      //
      ОбъектОтчет = РегламентированнаяОтчетность.РеглОтчеты(ИсточникОтчета);
      Если ОбъектОтчет = Неопределено Тогда
         Сообщить("Не удалось открыть сохраненные данные! Отчет не найден!", СтатусСообщения.Важное);
         Возврат;
      КонецЕсли;
      
      ВыбФормаОтчета = ОбъектОтчет.ПолучитьФорму( ,ЭтаФорма);
      
      // обход ошибки, присутствующей в 8.2.9
      Если ВыбФормаОтчета.ОбработкаОбъект <> ОбъектОтчет Тогда
         ВыбФормаОтчета.ОбработкаОбъект = ОбъектОтчет;
      КонецЕсли;
      
      ВыбФормаОтчета.РежимВыбора = Ложь;
      ВыбФормаОтчета.ЗакрыватьПриЗакрытииВладельца = Ложь;
      ВыбФормаОтчета.Открыть();
      
   ИначеЕсли ЭтоНовый() Тогда
      //Справочники.РегламентированныеОтчеты.ПолучитьФормуСписка();
      //Отчеты.Д_ОтчетПоЗаявкам.Открыть();
      Справочники.РегламентированныеОтчеты.ПолучитьФормуСписка().Открыть();

   КонецЕсли;
КонецПроцедуры // ПередОткрытием()

суть такова, при сохранении отчета, он проваливается в ХранилищеЗначений, от туда попадает в документ ПланированиеПлатежей(самописный)
в форме списка документа, мы видим сохраненные отчеты, а проблема становиться тогда, когда хочу открыть этот сохраненный отчет
выдает вот эту ошибку
{Документ.Д_ПланируемыеПлатежи.Форма.ФормаДокумента1.Форма(11)}: Ошибка при вызове метода контекста (ЭтоНовый)
   Если Не(ЭтоНовый()) ИЛИ (мСкопированаФорма <> Неопределено) Тогда
по причине:
Документ не выбран

demous

      ПоказателиТаблПоле = ПоказателиСтраницы.Значение;
      Для Каждого Показатель Из ПоказателиТаблПоле Цикл
         ИмяПоказателя = Показатель.Ключ;
         ЗначениеПоказателя = Показатель.Значение;
         // установим значение в таблице
         ТекТабличноеПоле.Области[ИмяПоказателя].Значение =ЗначениеПоказателя;
      КонецЦикла;
   КонецЦикла;
КонецПроцедуры

создал документ
в его модуль

Процедура ПриКопировании(ОбъектКопирования)

   // Храним информацию о выбранной форме объекта копирования.
   // Она нужна для дальнейшего принятия решения - новый документ создаем
   // с сохранением или с очисткой данных объекта копирования.
   мСкопированаФорма = ОбъектКопирования.ВыбраннаяФорма;
   
КонецПроцедуры // ПриКопировании()

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
   
   Период = СокрЛП(Формат(ДатаОкончания, "ДФ=yyyyMMdd") + Формат('39991231' - ДатаНачала, "ДФ=yyyyMMdd"));
   
КонецПроцедуры

в модуль формы документа

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

   // вместо формы документа открываем форму связанного с ним отчета
   Отказ = Истина;

   Если Не(ЭтоНовый()) ИЛИ (мСкопированаФорма <> Неопределено) Тогда
      
      ПравоДоступаКОтчету = РегламентированнаяОтчетность.ПравоДоступаКРегламентированномуОтчету(ИсточникОтчета);
      Если ПравоДоступаКОтчету = Ложь Тогда
         Предупреждение("Недостаточно прав!");
         Возврат;
      ИначеЕсли ПравоДоступаКОтчету = Неопределено Тогда
         Предупреждение("Не удалось открыть сохраненные данные! Отчет не найден!");
         Возврат;
      КонецЕсли;
      //
      ОбъектОтчет = РегламентированнаяОтчетность.РеглОтчеты(ИсточникОтчета);
      Если ОбъектОтчет = Неопределено Тогда
         Сообщить("Не удалось открыть сохраненные данные! Отчет не найден!", СтатусСообщения.Важное);
         Возврат;
      КонецЕсли;
      
      ВыбФормаОтчета = ОбъектОтчет.ПолучитьФорму( ,ЭтаФорма);
      
      // обход ошибки, присутствующей в 8.2.9
      Если ВыбФормаОтчета.ОбработкаОбъект <> ОбъектОтчет Тогда
         ВыбФормаОтчета.ОбработкаОбъект = ОбъектОтчет;
      КонецЕсли;
      
      ВыбФормаОтчета.РежимВыбора = Ложь;
      ВыбФормаОтчета.ЗакрыватьПриЗакрытииВладельца = Ложь;
      ВыбФормаОтчета.Открыть();
      
   ИначеЕсли ЭтоНовый() Тогда
      //Справочники.РегламентированныеОтчеты.ПолучитьФормуСписка();
      //Отчеты.Д_ОтчетПоЗаявкам.Открыть();
      Справочники.РегламентированныеОтчеты.ПолучитьФормуСписка().Открыть();

   КонецЕсли;
КонецПроцедуры // ПередОткрытием()

суть такова, при сохранении отчета, он проваливается в ХранилищеЗначений, от туда попадает в документ ПланированиеПлатежей(самописный)
в форме списка документа, мы видим сохраненные отчеты, а проблема становиться тогда, когда хочу открыть этот сохраненный отчет
выдает вот эту ошибку
{Документ.Д_ПланируемыеПлатежи.Форма.ФормаДокумента1.Форма(11)}: Ошибка при вызове метода контекста (ЭтоНовый)
   Если Не(ЭтоНовый()) ИЛИ (мСкопированаФорма <> Неопределено) Тогда
по причине:
Документ не выбран

demous

http://www.forum.mista.ru/topic.php?id=606664 вот ссылка на тему... не хочет пропускать он полностью мои сообщения

Теги:

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

Рейтинг@Mail.ru

Поиск