Отчет, отбор по контрагенту #790926


#0 by Da D
Есть отчет, не на СКД Мне нужно в него добавить отбор, отчет формирует список должников, есть кнопка - отправляет письмо либо всему списку в отчете, либо текущему Есть должники, которым не нужно отправлять, т.е. я хочу сделать отбор по контрагенту, юзер делает Контрагент НеВСписке СписокВыбранныхКонтрагентов Я создаю отчет реквизита Построитель (Тип ПостроительОтчета) Создаю на форме отчета ТабличноеПоле  Данные Построитель.Отбор, ТипЗначения Отбор Создал процедуру формы ПриОткрытии После текста основного отчета написал Построитель.Текст = Запрос.Текст; Отбор на форме есть, но он ни на что не влияет, я ставлю допустим Контрагент Равно НаименованиеКонтрагента Отчет формируется с ним Контрагент НеРавно НаименованиеКонтрагента Он всё равно есть в отчете почему так ?
#1 by Da D
Я создаю отчет реквизита = Я создаю реквизит отчета
#2 by Da D
После текста основного отчета написал  = после текста основного запроса(который данные получает)
#4 by Da D
Основной запрос
#5 by Курцвейл
Потому что над так:
#6 by Da D
{Форма.ФормаОтчета.Форма}: Ошибка при установке значения атрибута контекста (Текст)         Построитель.Текст = по причине: {(6, 2)}: Поле не найдено "Контрагент" <<?>>Контрагент.*}
#7 by Da D
Может быть есть другой способ добавить отбор или я этот неверно делаю ??
#8 by Da D
Где все ?
#9 by Da D
Понятно
#10 by FIXXXL
в конструкторе делай, галку поставь "все подчиненные" или как она там у Контрагента
#11 by vis_tmp
Пишешь "без построителя", а в коде с ним
#12 by Da D
Отчет был без построителя Я нагуглил что отбор нужно делать с построителем вот и создал его
#13 by Da D
Это что вы имеете ввиду ? где такое в конструкторе ?
#14 by vis_tmp
Это не обязательно
#15 by Da D
Ну а как ?
#16 by Da D
Вот конкретно в моём случае можете пример привести ??
#17 by Da D
Отбор ставлю и всё равно выводится этот контрагент
#18 by Fedor-1971
словами кратко, без лишних буков, напиши что ты хочешь сделать? пока я понял следующее: есть некий отчёт, ты хочешь добавить туда фильтрацию выбираемых данных, зачем-то полез в дебри вместо того, что-бы просто динамически добавить условие к исходному запросу примерно такого вида "Где контрагент.ЛЯЛЯЛЯ = &Значение" или "Где НЕ Контрагент.ССылка = &НеХотимВыводить"
#19 by Da D
Кратко Выводится список должников 1 2 3 4 5 Нужно сделать штуку, в которой указываешь "Не выводить 1,3,5" И вместо 1 2 3 4 5 он выводит 2 4
#20 by Da D
ну я хз как объяснить Отбор Контрагент Не в списке СписокКонтрагентовКоторыхНеНужноВыводить Сформировать Выводятся все, кроме СписокКонтрагентовКоторыхНеНужноВыводить
#21 by Da D
объясню нормально В списке должников выводятся все контрагенты имеющие задолженность, но среди них есть контрагенты с которыми у нас осуществляются взаиморасчеты. Хотелось бы иметы возможность формировать отчет с помощью конструктора, исключая те или иные контрагенты.
#22 by Fedor-1971
По ходу ты попутал ДС (тут отборы) и Отчёт (тут динамическое формирование запроса, что-бы в выборке отсутствовали ненужные записи, либо пропуск ненужных при обработке результирующей выборки перед выводом в табличный документ) Условие для запроса: "Где НЕ Контрагент.ССылка В (&НеХотимВыводить)" в параметр передаёшь массив ссылок, которые не нужны в результате.
#23 by Da D
А какие не нужны то в результате ?  Пользователь сам выбирать будет какие не нужны
#24 by Da D
Я же хотел на форму отчета вывести отбор, в котором будут выбирать контрагентов, которые не будут выводиться
#25 by Da D
Подскажите, как проще это реализовать: дать пользователю возможность выбирать, кого в отчет выводить не нужно
#26 by Fedor-1971
В твоей картинке и есть набор контрагентов, выполненный пользователем (только лишняя возможность указывать "Не равно", т.к. ты сих контрагентов не собираешься включать в результирующий отчёт). Собери его результаты в массив НеНадо и отдай в параметр запроса с условием "Нах... не надо" Как это реализовать кодом - сам реши, условие для запроса я тебе написал, интегрируй его в нужное место своего запроса
#27 by Da D
На моей картинке сформированный отчет по должникам по конкретной организации, на конкретную дату, Не равно - это отбор, который я добавил и который конечно же не работает Собрать результаты чего ? Списка контрагентов, которые в отчет выводятся ?
#28 by Da D
Я просто слабо понимаю, читаю сижу книжки
#29 by Da D
Картинку я скинул для того, чтобы было видно стоит Не равно АвтоСоюз а в отчете всё равно выведен АвтоСоюз
#30 by h-sp
там же полно отчетов, штук 100, посмотри в них, наверняка есть похожие случаи. Зачем изобретаешь велосипед, когда уже всё давно придумано. Тем более, что все отчеты должны быть одинаковые, а не то пользователи тебя живым в землю закопают.
#31 by Fedor-1971
пытаешься прикинуться шлангом? Ты вывел на форму отбор (так ты его называешь) для того, что-бы пользователь указал "Этого и этого ну, может быть, и такого контрагента в результирующем отчете быть не должно" По сути: перебираешь чего там навыбирал пользователь и складываешь в массив (надеюсь представляешь как добавлять элементы в массив и как перебирать записи того, что ты называешь "Отбор"), потом и? стоит, лежит, висит, моргает - отчёту до лампочки он отрабатывает алгоритм, если есть соответствие того что выведено на форме, алгоритму формирования отчёта - профит, нет - на нет и суда нет.
#32 by Da D
Почему я то так его называю ? ТабличноеПоле, ТипЗначения Отбор, Данные Построитель.Отбор
#33 by Da D
т.е. пользователь, выбираю в этом как я его называю отборе контрагентов, тем самым собирает их в массив и мне нужно этот массив передать в запрос ?
#34 by Da D
Сори за ошибки/опечатки, нервничаю, ни фига не выходит
#35 by Fedor-1971
Пользователь заполняет твой отбор (пользовательский фильтр - более красиво и не путается с понятием "Отбор") в какой структуре не знаю, тебе виднее, но, возможно, отбор представляет собой ТаблицуЗначений (это только предположение). Твоя задача: преобразовать то, что пользователь указал в нужные тебе структуры (массивы, списки и т.д.), т.е. перебираешь отбор и анализируешь "Контрагет", "Использовать", "ВидСравнения" и "Значение" (то бишь ссылка) Всё что ты определил как "Это нужно исключить" записываешь в массив, потом как было ранее описано.
#36 by h-sp
просто тебе надо результат твоего отбора передать в построитель.
#37 by Da D
Жесть какая...
#38 by h-sp
ну если делаешь через задницу, то чего удивляешься?
#39 by Fedor-1971
вопрос задаётся "Как?", лично моё мнение: не нужен ему построитель где жесть? Это реалии программирования: пользователь может указать любую гадость, а программер должен пережевать всё указанное в вид, понятный системе (будь то SQL, C++, Java и т.д. - принцип остаётся тем же)
#40 by Fedor-1971
39+ формы и придумали для ограничения фантазий пользователей
#41 by Da D
Я просто не понимаю теперь вообще с чего и как мне начинать
#42 by Da D
Так ладно, спасибо разобрался
#43 by Da D
большое)
#44 by Fedor-1971
у ТС идея здравая, только реализация сырая. Подумай в таком направлении: сделай список контрагентов, с которыми осуществляются взаиморасчёты в виде регистра сведений (кто заполняет то же можно регулировать правами), а на форме отчёта оставить одну галочку: "Без взаимозачётчиков". Тогда ты получишь простую возможность запросом выбрать тех кого в отчёте быть не должно. Профит с двух сторон: и пользователь не гемороится каждый раз набирать контрагентов и тебе понятно что должно попасть в отчёт
#45 by Da D
Да у меня получилось )
#46 by Da D
Если кому то интересно: -Спасибо, а сделайте его на СКД, этот неудобный .
#47 by Da D
Ошибка исполнения отчета по причине: Ошибка получения данных по причине: Ошибка создания набора данных "НаборДанных1" по причине: Ошибка при исполнении запроса набора данных по причине:
#48 by Da D
В чем ошибка ?
#49 by Fedor-1971
Пробуй так: в непонимании того, что пытаешься сделать.
#50 by Fedor-1971
49+  и проверь доступность ВтДолгыПоДокументам (наличие и установленные связи)
#51 by Da D
Ошибка исполнения отчета по причине: Ошибка получения данных по причине: Ошибка создания набора данных "НаборДанных1" по причине: Ошибка при исполнении запроса набора данных по причине:
#52 by Fedor-1971
посмотри что лежит в ВтДолгыПоДокументам.ДопустимоеЧислоДнейЗадолженности - возможно, что не число и не Null
#53 by Da D
ВЫБОР КОГДА ВтВзаиморасчеты.ДоговорКонтрагента.Дней > 0 ТОГДА ВтВзаиморасчеты.ДоговорКонтрагента.Дней ИНАЧЕ &ЧислоДнейПоУмолчанию КОНЕЦ
#54 by Da D
В консоли тоже этот запрос такую же ошибку выдаёт а почеему ошибка, если запрос рабочий ?
#55 by h-sp
может еще ЕСТЬNULL(РАЗНОСТЬДАТ(КОНЕЦПЕРИОДА(ВтДолгыПоДокументам.Период, ДЕНЬ), КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), ДЕНЬ), 0)
#56 by Da D
??
#57 by Fedor-1971
То что в где формируется? ВтДолгыПоДокументам.ДопустимоеЧислоДнейЗадолженности - точно число во всех строках ВтДолгыПоДокументам?
#58 by Da D
Объединения/Псевдонимы f(x)ДопустимоеЧислоДнейЗадолженности - ВЫБОР КОГДА ВтВзаиморасчеты.ДоговорКонтрагента.Дней > 0 ТОГДА ВтВзаиморасчеты.ДоговорКонтрагента.Дней ИНАЧЕ &ЧислоДнейПоУмолчанию КОНЕЦ
#59 by Fedor-1971
проверь второе предположение к сожалению, больше ничем помочь не могу. Не силён в СКД.
#60 by Da D
Какой предположение ?)
#61 by Fedor-1971
ВтДолгыПоДокументам.ДопустимоеЧислоДнейЗадолженности - точно число во всех строках ВтДолгыПоДокументам
#62 by Da D
Ну да, а как оно бы работало тогда в отчете ?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С