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

помогите добавить в отчет информацию из справочника

Автор Infa, 31 авг 2012, 16:46

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

Infa

Есть справочник Статьирасходов.
Есть форма отчета ОстатокДенежных средств по смете
В форме элемента, которая заполняет справочник есть Поле ввода куда пользователь вносит сумму.
Нужно чтобы в отчете выводилась данная сумма. Имеется код с помощью которого формируется отчет, в отчете сидят все данные кроме суммы. Сумма в форму была добавлена позже. Помогите пожалуйста добавить в отчет эту сумму.


Процедура ПриОткрытии()
   Год = Год(ТекущаяДата());
   Организация = глЗначениеПеременной("ОсновнаяОрганизация");
   НачПериода = НачалоГода(ТекущаяДата());
   КонПериода = ТекущаяДата();
   //   ИндивидуальнаяНастройка = Истина;
   //КонецЕсли;
КонецПроцедуры

Процедура ДействияФормыПечать(Кнопка)
   ТабДок = ЭлементыФормы.
ТабличногоДокумента;
   ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
   ТабДок.Напечатать(Ложь);
КонецПроцедуры

Процедура ДействияФормыОтчетСформировать(Кнопка)
   //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(Отчет)
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
   Отчет(ТабДок, Перечисления.ИспользованиеЭКР.Да, Год(НачПериода), КонецДня(КонПериода), НачалоДня(НачПериода), ПодразделениеОрганизации, Смета);
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(1,,8,);
   ТабДок.НижнийКолонтитул.Выводить = Истина;
   ТабДок.НижнийКолонтитул.ТекстСправа = "[&НомерСтраницы]";
   
   //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА
КонецПроцедуры

Процедура Отчет(ТабДок, Да, Год, КонПериода, НачПериода, Организация, Смета) Экспорт
   //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Отчет)
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

   
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
    |    вложенныйзапрос.суммамакс КАК Суммамакс,
   |   вложенныйзапрос.Статья КАК XərclərinAdı,
   |   СУММА(вложенныйзапрос.ГодоваяСмета) КАК İllikSmetaXərci,
   |   СУММА(вложенныйзапрос.СуммаОстаток) КАК DövrƏvvəlinəQalıq,
   |   СУММА(вложенныйзапрос.СуммаПрихода) КАК AçılanKredit,
   |   СУММА(вложенныйзапрос.СуммаРасхода) КАК FaktikiXərc,
   |   СУММА(вложенныйзапрос.СуммаПрихода + вложенныйзапрос.СуммаОстаток - вложенныйзапрос.СуммаРасхода) КАК FaktikiBankQalığı,
   |   СУММА(вложенныйзапрос.ГодоваяСмета - вложенныйзапрос.СуммаПрихода - вложенныйзапрос.СуммаОстаток) КАК AçılmamışKredit
   |ИЗ
   |   (ВЫБРАТЬ
   |       Суммамакс.Суммамакс КАК Суммамакс,   
   |      Статьи.Статья КАК Статья,
   |      СУММА(0) КАК СуммаПрихода,
   |      СУММА(0) КАК СуммаРасхода,
   |      СУММА(ЕСТЬNULL(СуммыПоСтатьям.ГодоваяСмета, 0)) КАК ГодоваяСмета,
   |      СУММА(0) КАК СуммаОстаток
   |   ИЗ
   |      (ВЫБРАТЬ
   |         СтатьиРасходов.Ссылка КАК Статья
   |      ИЗ
   |         Справочник.СтатьиРасходов КАК СтатьиРасходов
   |      ГДЕ
   |         СтатьиРасходов.ПометкаУдаления = ЛОЖЬ) КАК Статьи
   |         
   
   
   
   |         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СуммыПоСтатьям КАК СуммыПоСтатьям
   |         ПО Статьи.Статья = СуммыПоСтатьям.СтатьяРасхода
   |   ГДЕ
   |      СуммыПоСтатьям.Год = &Год
   |      И &УсловиеСуммыПоСтатьям
   |   
   
               
   |   СГРУППИРОВАТЬ ПО
   |      Статьи.Статья
   |   
   |   
   |   ОБЪЕДИНИТЬ ВСЕ
   |   
   |   ВЫБРАТЬ
   |      ДвиженияПоСметам.СтатьяРасхода,
   |      ДвиженияПоСметам.Сумма,
   |      0,
   |      0,
   |      0
   |   ИЗ
   |      РегистрНакопления.ДвиженияПоСметам КАК ДвиженияПоСметам
   |   ГДЕ
   |      &УсловиеДвиженияПоСмете
   |      И ДвиженияПоСметам.Период МЕЖДУ &НачПериода И &КонПериода
   |      И ДвиженияПоСметам.Регистратор ССЫЛКА Документ.Сифариш
   |   
   |   ОБЪЕДИНИТЬ ВСЕ
   |   
   |   ВЫБРАТЬ
   |      ХозрасчетныйОбороты.Субконто2,
   |      0,
   |      -ЕСТЬNULL(ХозрасчетныйОбороты.СуммаОборот, 0),
   |      0,
   |      0
   |   ИЗ
   |      РегистрБухгалтерии.Хозрасчетный.Обороты(
   |            &НачПериода,
   |            &КонПериода,
   |            ,
   |            Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетныеСчета))
   |               ИЛИ Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасходыПоКапиталоВложениям)),
   |            ,
   |            ПодразделениеОрганизации В ИЕРАРХИИ (&ПодразделениеОрганизации),
   |            (НЕ КорСчет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Казначейство_)))
   |               И (НЕ КорСчет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КазначействоВнебюджетный))),
   |            ) КАК ХозрасчетныйОбороты
   |   
   |   ОБЪЕДИНИТЬ ВСЕ
   |   
   |   ВЫБРАТЬ
   |      ХозрасчетныйОстатки.Субконто2,
   |      0,
   |      0,
   |      0,
   |      ХозрасчетныйОстатки.СуммаОстаток
   |   ИЗ
   |      РегистрБухгалтерии.Хозрасчетный.Остатки(
   |            &НачПериода,
   |            Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетныеСчета))
   |               ИЛИ Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасходыПоКапиталоВложениям)),
   |            ,
   |            ПодразделениеОрганизации В ИЕРАРХИИ (&ПодразделениеОрганизации)) КАК ХозрасчетныйОстатки) КАК вложенныйзапрос
   |ГДЕ
   |   (НЕ вложенныйзапрос.СуммаПрихода + вложенныйзапрос.СуммаРасхода + вложенныйзапрос.ГодоваяСмета + вложенныйзапрос.СуммаОстаток = 0)
   |
   |СГРУППИРОВАТЬ ПО
   |   вложенныйзапрос.Статья
   |
   |УПОРЯДОЧИТЬ ПО
   |   вложенныйзапрос.Статья.Код
   |ИТОГИ ПО
   |   ОБЩИЕ";                             
   
   Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеПоСмете",УсловиеПоСмете);
   Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеДвиженияПоСмете",УсловиеДвиженияПоСмете);
   Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеОстатки",УсловиеОстатки);
   Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеСуммыПоСтатьям",УсловиеСуммыПоСтатьям);
   Запрос.Текст = СтрЗаменить(Запрос.Текст,"&Условие",Условие);
   Запрос.УстановитьПараметр("Год", Год);
   Запрос.УстановитьПараметр("Да", Да);
   Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));
   Запрос.УстановитьПараметр("НачПериода", НачалоДня(НачПериода));
   Запрос.УстановитьПараметр("НачГода", НачПериода);//НачалоГода(НачПериода));
   Запрос.УстановитьПараметр("ПодразделениеОрганизации", ПодразделениеОрганизацииОтбор);
   Запрос.УстановитьПараметр("Смета", Смета);
   

   Результат = Запрос.Выполнить();

   ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьСтрока = Макет.ПолучитьОбласть("ОблСтрока");
   ОбластьИтог = Макет.ПолучитьОбласть("ОблИтог");

   ТабДок.Очистить();
   ОбластьШапка.Параметры.ПодразделениеОрганизации = ?(ИндивидуальнаяНастройка Или Не (ЗначениеЗаполнено(ПодразделениеОрганизации) И ЗначениеЗаполнено(Смета)),"Təşkilatlar ",Смета.Наименование);
   ОбластьШапка.Параметры.Период = Строка(Формат(НачПериода,"ДФ=dd.MM.yyyy")) + " - " + Строка(Формат(КонПериода,"ДФ=dd.MM.yyyy"));
   ОбластьШапка.Параметры.Смета = Смета;
   ТабДок.Вывести(ОбластьШапка);
   ТабДок.НачатьАвтогруппировкуСтрок();

   ВыборкаДетали = Результат.Выбрать();

   ПерваяСтрока = Истина;
   Пока ВыборкаДетали.Следующий() Цикл
      Если ПерваяСтрока = Истина Тогда
         ОбластьИтог.Параметры.Заполнить(ВыборкаДетали);
         ПерваяСтрока = Ложь;
         Продолжить;
      КонецЕсли;
      ОбластьСтрока.Параметры.Заполнить(ВыборкаДетали);
      ОбластьСтрока.Параметры.НаименованиеПолное = Справочники.СтатьиРасходов.НайтиПоКоду(ВыборкаДетали.XərclərinAdı).НаименованиеПолное;
      ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
   КонецЦикла;
   ТабДок.Вывести(ОбластьИтог);
         
   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   
   //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
КонецПроцедуры

Процедура ПодразделениеОрганизацииПриИзменении(Элемент)
   Смета = ПодразделениеОрганизации.Смета;
КонецПроцедуры

Процедура ВыбратьПериодНажатие(Элемент)
   НастройкаПериода = Новый НастройкаПериода;
   НастройкаПериода.УстановитьПериод(НачПериода,КонПериода,);
   НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
   Если НастройкаПериода.Редактировать() Тогда
      НачПериода = НастройкаПериода.ПолучитьДатуНачала();
      КонПериода = НастройкаПериода.ПолучитьДатуОкончания();
   КонецЕсли;
КонецПроцедуры




   

Yura063

Помогли, отблагодари!

Yura063

Попробуй создать параметр СуммаЧегота в макете!
Идобавь строку:
ОбластьСтрока.Параметры.СуммаЧегота = Справочники.СтатьиРасходов.НайтиПоКоду(ВыборкаДетали.XərclərinAdı).СуммаКотораяВамНужна;
это строка должна стоять перед выводом облости строки (Ведь вам нужно в строки добавлять Сумму?)
Помогли, отблагодари!

Infa

Цитата: Yura063 от 31 авг 2012, 17:28
Попробуй создать параметр СуммаЧегота в макете!
Идобавь строку:
ОбластьСтрока.Параметры.СуммаЧегота = Справочники.СтатьиРасходов.НайтиПоКоду(ВыборкаДетали.XərclərinAdı).СуммаКотораяВамНужна;
это строка должна стоять перед выводом облости строки (Ведь вам нужно в строки добавлять Сумму?)

Спасибо за ответ. Я не понила Ваши разьяснения. В каком макете и как добавлять. И где код прописать ? В Модуле?

Infa

Спасибо за ответ. Я не понила Ваши разьяснения. В каком макете и как добавлять. И где код прописать ? В Модуле?

ОбластьСтрока.Параметры.Суммамакс = Справочники.СтатьиРасходов.НайтиПоКоду(ВыборкаДетали.XərclərinAdı).Суммамакс

Суммамакс это столбец в макете. В справочнике Суммамакс это реквизит.

Yura063

Так! Когда вы смотрите на макет через конфигуратот то у вас есть определенные параметры, которые заполняют вам таблицу! в макете есть столбец (У вас Суммамакс) чуть ниже прописывают параметр который выдает вам необходимые значения в соответствии с выборкой которое делает программный код, которые вы выставили выше! в вашем коде есть строка которое выводит строки в цикле ("ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());"), короче я не знаю как у вас называется параметр в макете, поэтому напишу так:
Пока ВыборкаДетали.Следующий() Цикл
      Если ПерваяСтрока = Истина Тогда
         ОбластьИтог.Параметры.Заполнить(ВыборкаДетали);
         ПерваяСтрока = Ложь;
         Продолжить;
      КонецЕсли;
      ОбластьСтрока.Параметры.Заполнить(ВыборкаДетали);
      ОбластьСтрока.Параметры.НаименованиеПолное = Справочники.СтатьиРасходов.НайтиПоКоду(ВыборкаДетали.XərclərinAdı).НаименованиеПолное;
      [u][b]ОбластьСтрока.Параметры.СуммаМакс = Справочники.СтатьиРасходов.НайтиПоКоду(ВыборкаДетали.XərclərinAdı).СуммаМакс;[/b][/u] \\ то что добавил
      ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
   КонецЦикла;
Помогли, отблагодари!

Infa

Цитата: Yura063 от 03 сен 2012, 15:16
Так! Когда вы смотрите на макет через конфигуратот то у вас есть определенные параметры, которые заполняют вам таблицу! в макете есть столбец (У вас Суммамакс) чуть ниже прописывают параметр который выдает вам необходимые значения в соответствии с выборкой которое делает программный код, которые вы выставили выше! в вашем коде есть строка которое выводит строки в цикле ("ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());"), короче я не знаю как у вас называется параметр в макете, поэтому напишу так:
Пока ВыборкаДетали.Следующий() Цикл
      Если ПерваяСтрока = Истина Тогда
         ОбластьИтог.Параметры.Заполнить(ВыборкаДетали);
         ПерваяСтрока = Ложь;
         Продолжить;
      КонецЕсли;
      ОбластьСтрока.Параметры.Заполнить(ВыборкаДетали);
      ОбластьСтрока.Параметры.НаименованиеПолное = Справочники.СтатьиРасходов.НайтиПоКоду(ВыборкаДетали.XərclərinAdı).НаименованиеПолное;
      [u][b]ОбластьСтрока.Параметры.СуммаМакс = Справочники.СтатьиРасходов.НайтиПоКоду(ВыборкаДетали.XərclərinAdı).СуммаМакс;[/b][/u] \\ то что добавил
      ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
   КонецЦикла;




Спасибо ВАМ огромное. Работает. Скажите а можно ли в данном отчете некоторые названия статей выводить Жирным шрифтом? Большое спасибо!

Yura063

Можно! Нужно писать условия по стотьям, добавлять корректировку в макет! если в двух словах то будет выглядеть так:
Если (условия сравнения статьи) тогда
        ТабДок.Вывести(ОбластьСтрока1, ВыборкаДетали.Уровень());
иначе
        ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
КонецЕсли;

Определенные статьи вы можете поместить в список значений и проверять из списка чем прописывать условия для каждой статьи!
Помогли, отблагодари!

Infa

Cпасибо еще раз! Но я не понила. Грубо говоря мне нужно чтобы пользователь при заполнении справочника Статьи расходов некоторые статьи мог заполнять жирным шрифтом.Заранее спс

Yura063

Тогда для такой доработки лучше вызвать специалиста! так как придется изменять немного форму документа, запрос и прописывать условие для вывода жирных строк! Незачто! ))
Помогли, отблагодари!

Теги:

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

Рейтинг@Mail.ru

Поиск