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

Метод срез последних

Автор Fateev_max, 12 ноя 2010, 12:51

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

Fateev_max

Есть справочник основные средства в этом справочнике форма списка и процедура печать - ее создал конструктором. Но необходимо печатать и табличную часть. Использую метод срез послдних.
Процедура Печать(Элемент)
   //{{_КОНСТРУКТОР_ПЕЧАТИ_СПИСОК(Печать)
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
   ТаблицаСреза=РегистрыСведений.ДанныеОС.СрезПоследних(РабочаяДата);
   ТабДок = Новый ТабличныйДокумент;
   Макет = Справочники.ОсновныеСредства.ПолучитьМакет("Печать");
   // Заголовок
   Область = Макет.ПолучитьОбласть("Заголовок");
   ТабДок.Вывести(Область);
   // Шапка
   Область = Макет.ПолучитьОбласть("Шапка");
   ТабДок.Вывести(Область);
   Выборка = Справочники.ОсновныеСредства.ВыбратьИерархически();
   Группа = Макет.ПолучитьОбласть("Группа");
   Элемент = Макет.ПолучитьОбласть("Элемент");
   
   
   Пока Выборка.Следующий() Цикл
      Если Выборка.ЭтоГруппа Тогда
         Группа.Параметры.Заполнить(Выборка);
         ТабДок.Вывести(Группа);
      Иначе
         
         Элемент.Параметры.Заполнить(Выборка);
         ТабДок.Вывести(Элемент);
         Секция = Макет.ПолучитьОбласть("Элемент");
Секция.Параметры.Код = Элемент.Код;
Секция.Параметры.Наименование =Элемент.Наименование;
Секция.Параметры.Фирма = Элемент.Фирма;
Секция.Параметры.ГруппаОС = Элемент.ГруппаОС;
Секция.Параметры.ДатаВвода = Элемент.ДатаВвода;
Секция.Параметры.ДатаСписания = Элемент.ДатаСписания;
// Найдем строку содержащую ОС в таблице значений
СтрокаСреза = ТаблицаСреза.Найти(Элемент.Ссылка, "ОС");
Если СтрокаСреза<>Неопределено Тогда
    Секция.Параметры.БалансоваяСтоимость = СтрокаСреза.БалансоваяСтоимость;
    Секция.Параметры.РыночнаяСтоимость = СтрокаСреза.РыночнаяСтоимость;
    Секция.Параметры.Подразделение = СтрокаСреза.Подразделение;
КонецЕсли;
ТабДок.Вывести(Секция);

      КонецЕсли;
      КонецЦикла;

   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.Защита = Ложь;
   ТабДок.ТолькоПросмотр = Ложь;
   ТабДок.ОтображатьЗаголовки = Ложь;
   ТабДок.Показать();
   //}}_КОНСТРУКТОР_ПЕЧАТИ_СПИСОК
КонецПроцедуры


Выдает ошибку {Справочник.ОсновныеСредства.Форма.ОсновнаяФормаСписка(29)}: Поле объекта не обнаружено (Код)
Секция.Параметры.Код = Элемент.Код;

Поле код вроде есть, делаю задания по сквозному примеру вот не могу разобраться


Fateev_max

Все получилось просто не указал выборку.Тема закрыта

Процедура Печать(Элемент)
   //{{_КОНСТРУКТОР_ПЕЧАТИ_СПИСОК(Печать)
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
   ТаблицаСреза=РегистрыСведений.ДанныеОС.СрезПоследних(РабочаяДата);
   ТабДок = Новый ТабличныйДокумент;
   Макет = Справочники.ОсновныеСредства.ПолучитьМакет("Печать");
   // Заголовок
   Область = Макет.ПолучитьОбласть("Заголовок");
   ТабДок.Вывести(Область);
   // Шапка
   Область = Макет.ПолучитьОбласть("Шапка");
   ТабДок.Вывести(Область);
   Выборка = Справочники.ОсновныеСредства.ВыбратьИерархически();
   Группа = Макет.ПолучитьОбласть("Группа");
   Элемент = Макет.ПолучитьОбласть("Элемент");
   
   
   Пока Выборка.Следующий() Цикл
      Если Выборка.ЭтоГруппа Тогда
         Группа.Параметры.Заполнить(Выборка);
         ТабДок.Вывести(Группа);
      Иначе
         
         Элемент.Параметры.Заполнить(Выборка);
         ТабДок.Вывести(Элемент);
         Секция = Макет.ПолучитьОбласть("Элемент");
Секция.Параметры.Код = Выборка.Код;
Секция.Параметры.Наименование =Выборка.Наименование;
Секция.Параметры.Фирма = Выборка.Фирмы;
Секция.Параметры.ГруппаОС = Выборка.ГруппаОС;
Секция.Параметры.ДатаВвода = Выборка.ДатаВвода;
Секция.Параметры.ДатаСписания = Выборка.ДатаСписания;
// Найдем строку содержащую ОС в таблице значений
СтрокаСреза = ТаблицаСреза.Найти(Выборка.Ссылка, "ОС");
Если СтрокаСреза<>Неопределено Тогда
    Секция.Параметры.БалансоваяСтоимость = СтрокаСреза.БалансоваяСтоимость;
    Секция.Параметры.РыночнаяСтоимость = СтрокаСреза.РыночнаяСтоимость;
    Секция.Параметры.Подразделение = СтрокаСреза.Подразделение;
КонецЕсли;
ТабДок.Вывести(Секция);

      КонецЕсли;
      КонецЦикла;

   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.Защита = Ложь;
   ТабДок.ТолькоПросмотр = Ложь;
   ТабДок.ОтображатьЗаголовки = Ложь;
   ТабДок.Показать();
   //}}_КОНСТРУКТОР_ПЕЧАТИ_СПИСОК
КонецПроцедуры

Теги:

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

Рейтинг@Mail.ru

Поиск