Автор Тема: Вопрос по отчетам в Руне  (Прочитано 1741 раз)

Александр987

  • Ученик
  • *
  • Сообщений: 9
  • Благодарностей 0
Вопрос по отчетам в Руне
« : Январь 04, 2017, 05:25:59 pm »
Здравствуйте. Не могли бы подсказать решение вопроса. Я в своем проекте в Руне пытался сделать отчет за год по всем заключенным договорам на базе формы связи. Должен был получиться такой отчет: текст Заголовок: (Реестр заключенных договоров за 2016 год); таблица с нужными полями, в ней перечень всех договоров; текст: должность, подпись и ФИО.
Получилось не корректно, список договоров не вывелся (вывелась 1 запись).
Делал по принципу выложенного на сайте проекта "Простой учет для торговли":
Там форма "Счета" - в ней -  Объект - "Счет" (Списочный объект); дочерний объект формы "Счета" - "Состав счета" (Списочный объект). Итог выводится журнал счетов из 4 контрагентов, содержащихся в объекте "Счет".
Я сделал так же, только у меня вместо "Счет" "Договора" (списочный объект со всеми договорами).
Все должно было получится по аналогии, но нет. Сколько не копался, так и не понял почему.
Помогите по возможности.
Также интересует такие вопросы: Как правильно написать код для Года в заглавии отчета по реестру. Я попытался написать, что бы Год брался из дочернего объекта "Подрядчик РДПКР" (Год для отчета), тоже ничего не вышло.
И вопрос как сделать, чтобы выходила выборка договоров за какой то 1 год, а не за все?
Отчет, который у меня вышел, во вложении.
Прошу помощи!!!

runa.natalia

  • Главный модератор
  • Подмастерье
  • **
  • Сообщений: 118
  • Благодарностей 9
  • vk.com/runabase
Re: Вопрос по отчетам в Руне
« Ответ #1 : Январь 05, 2017, 11:06:17 am »
1. Чтобы вывести список, а не 1 запись, и не ошибиться в синтаксисе, можно сделать следующее. В конструкторе убрать детализацию для данной формы связи, для этого убрать все видимые вкладки. Затем сформировать новый шаблон. При выключенной детализации, в шаблон автоматически попадёт заготовка для вывода списка записей.
См. Шаблон для списка записей основного объекта.

2. Нужно выводить полное имя поля. Скорее всего, что-то вроде [Год для отчета.Год] в вашем случае, но не видя проекта, точно сказать нельзя. Функция Year выполняется над полем типа Дата.

3. Чтобы ограничить данные, выводимые в отчет, можно наложить фильтры по дате.
Информация о новых версиях и список изменений: http://vk.com/runabase

Александр987

  • Ученик
  • *
  • Сообщений: 9
  • Благодарностей 0
Re: Вопрос по отчетам в Руне
« Ответ #2 : Январь 05, 2017, 05:15:39 pm »
Спасибо. Есть дополнительные вопросы.
1. Все получилось как надо
2. "Год для отчета" это именно поле типа Дата списочного объекта "ПодрядчикРДПКР", который добавлен как Дочерний объект к Форме связи "Реестр...".
Т.е. правильно действительно будет: [ПодрядчикРДПКР.Год для отчета]
Но мне нужен именно только год из Даты (Год для отчета).
Поэтому я написал так: [Year(ПодрядчикРДПКР.Год для отчета)], но ничего не вышло, может быть это некорректное выражение? Но как более правильно не знаю, перепробовал все комбинации.
3. По поводу фильтров нужны бы дополнительные разъяснения для формы связи, т.к. непонятно где там их вообще применить, нет кнопок добавления фильтров, непонятно откуда их там подключать.
Также непонятно применение фильтров для формы Итогов. Там есть Дата, Период. Но при их включении и указании дат фильтр ничего не фильтрует. Есть там "Условие", но что в нем писать непонятно (и нужно ли оно).
Как рекомендация: По поводу 3 вопроса я также бы рекомендовал на сайте более последовательно разъяснить, как правильно применять фильтры для всех форм (с примерами), а еще лучше сделать физический пример на основе небольшого проекта, или видео. Я думаю что это будет очень актуально.

runa.natalia

  • Главный модератор
  • Подмастерье
  • **
  • Сообщений: 118
  • Благодарностей 9
  • vk.com/runabase
Re: Вопрос по отчетам в Руне
« Ответ #3 : Январь 05, 2017, 08:41:12 pm »
2. "Год для отчета" это именно поле типа Дата списочного объекта "ПодрядчикРДПКР", который добавлен как Дочерний объект к Форме связи "Реестр...".
Т.е. правильно действительно будет: [ПодрядчикРДПКР.Год для отчета]
Но мне нужен именно только год из Даты (Год для отчета).
Поэтому я написал так: [Year(ПодрядчикРДПКР.Год для отчета)], но ничего не вышло, может быть это некорректное выражение? Но как более правильно не знаю, перепробовал все комбинации.
Ваш печатный шаблон относится к форме "Реестр" и выводит список записей объекта этой формы? И вы хотите вывести поле из дочернего объекта? А что, по вашему, это поле будет содержать? В дочернем объекте может быть ноль, одна, сто записей с разным значением даты, в том числе разными годами, какую выводить?
Скорее всего, вам нужно дату выносить в объект реестра и выводить её. При необходимости поле любого дочернего объекта может брать копию из поля родительского.
Повторюсь, без примера проекта можно дать лишь общий ответ.
Также общая рекомендация: если не работает функция, сначала попытаться вывести её содержимое, т.е. просто поле.

3. По поводу фильтров нужны бы дополнительные разъяснения для формы связи, т.к. непонятно где там их вообще применить, нет кнопок добавления фильтров, непонятно откуда их там подключать.
В форме связи открываете свойства полей и настраиваете фильтры.
См. рисунок. [ You are not allowed to view attachments ]

Также непонятно применение фильтров для формы Итогов. Там есть Дата, Период. Но при их включении и указании дат фильтр ничего не фильтрует. Есть там "Условие", но что в нем писать непонятно (и нужно ли оно).

В статье Форма итогов подробно, с видео примерами, описана форма итогов. Если повторите за Денисом, всё должно получится.
Информация о новых версиях и список изменений: http://vk.com/runabase

Александр987

  • Ученик
  • *
  • Сообщений: 9
  • Благодарностей 0
Re: Вопрос по отчетам в Руне
« Ответ #4 : Январь 05, 2017, 11:52:51 pm »
Спасибо большое за ответы.
С фильтрами разобрался. Видимо сам не увидел эти поля в форме (редко были нужны).
Только вопрос с Датой так и повис.
Вы так уж не реагируйте. Я просто не знаю может ли поле с датой быть выведено в шаблон отчета из дочернего объекта.
Наверное этого вопроса от меня бы не было, если бы в дочернем объекте было 100 дат. А там только 1 поле.
Не совсем понятно Ваше выражение "Скорее всего, вам нужно дату выносить в объект реестра и выводить её".
В объекте реестра тоже есть различные поля Даты. И все под разными Названиями. В дочернем объекте тоже поле даты под другим названием.
Я так понимаю, что Вы думаете, что поле даты везде называется "ДАТА"? Но это совсем не так.
Кроме того в программе реализована так сказать защита от этих повторений: [Нак.Про.ФОРМ] и тд. Ну Вы понимаете о чем я.
Так что логически программа не может вывести, что ей вздумается, а только ИМЯ поля объекта, какое я ей указал. Это все можно увидеть при выводе полного шаблона и там все имена полей, и все взаимосвязи.
Но не выводит и все тут.
Я указал в шаблоне выражение с именем поля из объекта формы реестра. Но значение года из даты все равно не выводится.

runa.natalia

  • Главный модератор
  • Подмастерье
  • **
  • Сообщений: 118
  • Благодарностей 9
  • vk.com/runabase
Re: Вопрос по отчетам в Руне
« Ответ #5 : Январь 06, 2017, 11:00:14 am »
Можно вывести все родные поля объекта и поля объектов, на которые есть поле ссылки в этом объекте. Поскольку шаблон у вас на базе объекта Реестр (или как он у вас называется), логично что должно выводиться какое-то поле даты из этого объекта, а не из дочернего. Поля из дочерних объектов можно вывести в списках дочерних объектов, но из вашего документа видно, что вам не это нужно.

Информация о новых версиях и список изменений: http://vk.com/runabase

Александр987

  • Ученик
  • *
  • Сообщений: 9
  • Благодарностей 0
Re: Вопрос по отчетам в Руне
« Ответ #6 : Январь 06, 2017, 02:40:22 pm »
С дочерними объектами все понятно.
Вопрос был не в этом.
Я пишу заголовок: "РЕЕСТР ДОГОВОРОВ ПОДРЯДА ЗА [Year(Дата)] ГОД"
Отсюда  название "Дата" поле даты списочного объекта "Договора", добавленного как Объект формы Связи.
В итоге должно выйти: "РЕЕСТР ДОГОВОРОВ ПОДРЯДА ЗА 2016 ГОД" (например из даты 01.01."2016").
То есть по принципу как Вы писали "Скорее всего, вам нужно дату выносить в объект реестра и выводить её"
Но не выходит.

runa.natalia

  • Главный модератор
  • Подмастерье
  • **
  • Сообщений: 118
  • Благодарностей 9
  • vk.com/runabase
Re: Вопрос по отчетам в Руне
« Ответ #7 : Январь 06, 2017, 02:49:30 pm »
Цитировать
Можно вывести все родные поля объекта и поля объектов, на которые есть поле ссылки в этом объекте.
Поле ссылки на другой объект != дочерний объект в форме Связи
Информация о новых версиях и список изменений: http://vk.com/runabase

Александр987

  • Ученик
  • *
  • Сообщений: 9
  • Благодарностей 0
Re: Вопрос по отчетам в Руне
« Ответ #8 : Январь 06, 2017, 03:46:11 pm »
Можно поподробнее с картинками.
Я сделал как написано: в основной списочный объект добавлена ссылка на поле из дочернего объекта.
Ничего не получилось

runa.natalia

  • Главный модератор
  • Подмастерье
  • **
  • Сообщений: 118
  • Благодарностей 9
  • vk.com/runabase
Re: Вопрос по отчетам в Руне
« Ответ #9 : Январь 07, 2017, 09:53:23 am »
Потратьте несколько минут на пример проекта, и получите подробные, а главное конкретные рекомендации.
Либо можно сделать копию рабочего проекта, удалив важные данные.
Информация о новых версиях и список изменений: http://vk.com/runabase

Александр987

  • Ученик
  • *
  • Сообщений: 9
  • Благодарностей 0
Вопрос по отчетам в Руне
« Ответ #10 : Январь 07, 2017, 01:52:27 pm »
Вот часть проекта. Посмотрите.

vladimir.runa

  • Главный модератор
  • Мастер
  • **
  • Сообщений: 341
  • Благодарностей 22
  • skype: vladimir.runa
Re: Вопрос по отчетам в Руне
« Ответ #11 : Январь 07, 2017, 02:43:48 pm »
При формировании документа с записями родительского объекта формы (основного) в список выводятся данные каждой записи (определены между тэгами начала и окончания списка в шаблоне).
При этом нельзя:
 - получить данные одной записи данного родительского объекта;
 - получить данные одной или всех записей из дочерних списков.

Александр987

  • Ученик
  • *
  • Сообщений: 9
  • Благодарностей 0
Re: Вопрос по отчетам в Руне
« Ответ #12 : Январь 07, 2017, 05:00:04 pm »
Ну так откуда запись получить? Или несколько записей?
Тем более, что там не одна запись в заголовке, но таблица с множеством записей.
Я прислал проект. Но пока что не вижу конкретного решения проблемы.
Проблема не в дочерних списках. Мне вот они не очень то и нужны.
Но уж совсем не может быть, что бы в шаблон не выводились 1 или несколько записей родительского объекта.
Не выводится из списка в шаблоне род.объекта ни дата, не код с датой, ни просто строка со значением.
При том, что все это в списках шаблона присутствует (Другое дело если бы их там не было, тогда уж точно моя ошибка).
Как это все выводится есть в ваших видео примерах.

Или же есть какое то ограничение на минимальный набор записей: ">1" из родительского объекта?
Тогда получается, если я правильно понимаю, что в шаблоне таблица как бы сама по себе, текст сам по себе и в тексте должно быть более 1 ссылки?
Из Ваших слов получается что так "При этом нельзя: - получить данные одной записи данного родительского объекта".

Александр987

  • Ученик
  • *
  • Сообщений: 9
  • Благодарностей 0
Re: Вопрос по отчетам в Руне
« Ответ #13 : Январь 07, 2017, 05:52:20 pm »
Похоже на то, что при формировании шаблона, ссылки в шаблон выходят или в форме таблицы, или в форме списка.
И не берутся одновременно из списка и из таблицы.
Только такой вывод.
Но наверное должен быть вариант как это сделать. По идее, как вариант, добавить нужные поля именно в дочерний объект, и сделать его равнозначным. Но не уверен, что это правильно. Как то пробовал сделать нечто подобное и пошли какие то глюки, программа начала путаться, что ей сделать.
Если все варианты не подходят, значит такую ссылку реализовать нельзя никак. Только такой вывод.

runa.natalia

  • Главный модератор
  • Подмастерье
  • **
  • Сообщений: 118
  • Благодарностей 9
  • vk.com/runabase
Re: Вопрос по отчетам в Руне
« Ответ #14 : Январь 07, 2017, 08:35:20 pm »
Александр. Почему просто не взять поле Даты из объекта Договора?
В любом случае, задача не столь принципиальна - год меняется всего лишь раз в 365(366) дней. Можно даже прописать этот год в шаблоне.

Вы придумали какую-то хитрую логику и пытаетесь сделать так, чтобы программа заработала в соответствии с ней. А должно быть наоборот - нужно, понимая принципы Руны (они, на самом деле, просты), решать в пределах возможности программы свои задачи.

Рекомендация общая, не только для вас, для всех пользователей, которые хотят освоить Руну. Первое - читать техническую справку на сайте. Да, написано сухим техническим слогом, это не Донцова. Но справка даёт нужную терминологию, и вы сможете изъясняться так, что вас можно будет однозначно и недвусмысленно понять. Второе - брать готовые проекты, смотреть, как сделано, и пытаться сделать с нуля подобное, при необходимости подсматривая образец.
Руна поначалу кажется очень простой. Но с определённого этапа метод "тыка и авося" перестаёт быть эффективным.
Информация о новых версиях и список изменений: http://vk.com/runabase

 

Яндекс.Метрика