#0
by mirrr
Есть запрос на СКД. Нужно, при формировании документа-результата, обращаться к каждой текущей строке выборки и, проверяя значения на соответствие условиям, выводить определенные данные в свой макет группировки. Кроме того по каждой строке нужно в переменную записывать по условию сумму значений (т.е. из одной строки сумму включать в переменную, из другой нет), а затем выводить ее в свой макет общих итогов (стандартные общие итоги не считают по такому алгоритму). Подскажите, как это можно сделать?
#0
by mirrr
Есть запрос на СКД. Нужно, при формировании документа-результата, обращаться к каждой текущей строке выборки и, проверяя значения на соответствие условиям, выводить определенные данные в свой макет группировки. Кроме того по каждой строке нужно в переменную записывать по условию сумму значений (т.е. из одной строки сумму включать в переменную, из другой нет), а затем выводить ее в свой макет общих итогов (стандартные общие итоги не считают по такому алгоритму). Подскажите, как это можно сделать?
#8
by mirrr
а в других процедурах (ПриКомпоновкеРезультата или других) нельзя отловить каждую текущую строку выборки?
#10
by mirrr
нет, пробовал их. у меня так(результат запроса): Договор____СуммаДоговора____Документ 1__________5000_____________Док1 1__________5000_____________Док2 1__________5000_____________Док3 1__________5000_____________Док4 В общих итогах по полю Договор выводит 20000, хотя сумма по договору=5000 и надо выводить 5000. Поэтому думал как-то программно проверять на значение текущей строки в выборке и суммировать в какую-то переменную реальную сумму по договору(5000) и потом значение этой переменной выводить в общие итоги.
#12
by mirrr
так я и суммирую только по договору. Договор есть в четырех документах, соответственно 5000*4=20000. А сумма по договору=5000.
#13
by чувак
В СКД в закладке "Ресурсы" у этого ресурса в колонке "Рассчитывать по" установи флажок на "Договор"
#14
by mirrr
т.е. надо так сделать: Договор____СуммаДоговора____Документ__СуммаДока 1__________5000_____________Док1_______100 1__________5000_____________Док2_______5600 1__________5000_____________Док3_______4500 1__________5000_____________Док4_______1200 2__________3000_____________Док1_______500 2__________3000_____________Док2_______1600 2__________3000_____________Док3_______2500 2__________3000_____________Док4_______1250 Итого______8000________________________ХХХ т.е. чтобы итоговая сумма по всем договорам была равна 8000
#16
by viktor_vv
Я так понял группировка Документ самая нижняя. Добавь в запросе еще одно поле для счетчика документов. На закладке ресурсы добавь еще один ресурс СуммаДоговора рассчитывать по договору, в выражении Сумма(СуммаДоговора)/Сумма(ПолеСчетчикаДокументов) и есстественно через выбор для проверки Сумма(ПолеСчетчикаДокументов) <> 0. Как-то так. Это если структура группировок жесткая.
#17
by mirrr
пробовал этот вариант: для отдельного договора считает сумму по договору правильно, для общих итогов неправильно. Для примера итог по сумме договора посчитает 32000/8=4000, а надо 8000
#19
by чувак
В общем-то можно в форму добавить новую кнопку "Сформировать" и прописать алгоритм формирования отчета через СКД. Если надо, я могу алгоритм обработки скинут
#22
by mirrr
подскажите, как там проверить, какая группировка там текущая и в зависимости от этого выводить свой определенный макет вместо стандартного.
#23
by PVV65
У тебя не правильно построен запрос. необходимо в компоновке создать два набора данных "Договор" и "Документы" и связать их на закладке "Связи наборов данных" и ВСЕ.
#24
by mirrr
так то же самое получится. Для одного договора (и его суммы) есть несколько документов. При Левом соединениии (все договоры и документы удовлетворяющие условию связи по договору) будет таблица как в , т.е. суммы договоров будут повторяться для каждого документа. Далее в итогах они будут увеличиваться в столько раз, сколько документов по договору.
#28
by чувак
Есть еще вариант, не знаю, будет ли тебе это сложновато? В СКД есть возможность импользовать "Вложенные схемы". Суть в том, чтоб строку с итогами выводить отдельной схемой
#29
by PVV65
Не путай человека. Если в СКД применять несколько наборов данных, то итоги рассчитываются в каждом из них отдельно.
#33
by PVV65
Все зависит от задачи. Ты можешь написать сколь угодно сложные запросы в наборах, а компоновка будет обрабатывать уже готовые наборы. В том числе и при помощи описания связей.
#34
by mirrr
еще вопрос в тему: если в какую-то колонку (поле) в скд нужно будет выводить результат выборки строк какой-то таблицы (прямо через запятую последовательно значения строк выборки), то как это можно сделать?
#35
by mirrr
т.е. примерно так (характеристики): Договор____СуммаДоговора_____Характеристики_______Документ 1__________5000_______________доп.согл1,допсогл2___Док1___ 1__________5000_______________доп.согл1,допсогл2___Док2___ 1__________5000_______________доп.согл1,допсогл2___Док3___ 1__________5000_______________доп.согл1,допсогл2___Док4___ 2__________3000_______________доп.согл1,допсогл2___Док1___ 2__________3000_______________доп.согл1,допсогл2___Док2___ 2__________3000_______________доп.согл1,допсогл2___Док3___ 2__________3000_______________доп.согл1,допсогл2___Док4___ Итого______8000___________________________________________
#36
by PVV65
Если правильно понял, то "Вычисляемое поле", в котором соединяешь нужные поля через запятую.
#37
by mirrr
т.е. так же отдельным набором данных присоединить таблицу характеристик к таблице договоров по условию совпадения по договору, а как потом перебрать все значения таблицы характеристик по договору и вставить их в одну ячейку?
#39
by mirrr
неправильно написал: в поле характеристики через запятую надо вывести значения строк регистра сведений по каждому договору.
#40
by PVV65
Сворачивание нескольких строк в одну отдельная задача. А в данном случае не понял структуру характеристик. "доп.согл." - это значение характеристики? Тип какой? Сколько может быть характеристик? Подозрение, что не совсем верно организовано хранение данных. Если доп.согл. - это документы, то лучше бы добавить в них реквизит с ссылкой на договор. В общем не понятно.
#41
by mirrr
мне как раз и нужно несколько строк в одну свернуть.Это можно сделать с помощью конструктора скд? Характеристики - это периодический регистр сведений для договора. Хранит номера, даты, названия доп. соглашений с опред. даты. Нужно перебрать все строки регистра по договору, и вывести их результат через запятую в одном поле скд.
#42
by PVV65
СКД такой вопрос не решает. Можно при помощи запроса (много раз обсуждалось) или при помощи предварительной обработки характеристик - создаем программно ТЗ с колонками "Договор" и "Характеристики" (уже свернутые) и передаем в СКД как объект.
#43
by mirrr
с созданием тз и набором данных-объектом попробую. А при помощи запроса - где посмотреть можно?
#44
by mirrr
я как раз запросом и пытаюсь сделать - добавил для характеристик набор-запрос, а как в одну строку-то свернуть?
#47
by PVV65
Кстати. В 8.2.14 появилась в СКД функция ВычислитьВыражение, которая, если я правильно понял, может делать тоже самое, что и запрос из .
#48
by mirrr
а если у меня для объекта может быть 1 св-во, а может быть и 20, то тогда надо добавлять 20 полей? ...........
#49
by PVV65
Ну если кому то нужен отчет, в ячейке которого через запятую будет перечислено 20 свойств - пиши "КАК Свойство20". А в приведенный запрос будет отображать первые четыре даже если реально 20.
#50
by mirrr
имел ввиду нет ли чего более универсального, т.к. хранить во врем. таблице 20 полей, которые не всегда будут использованы...
#59
by PVV65
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю. Строка(<Выражение>) - Если в качестве параметра передан массив, то функция возвращает строку, содержащую строковые представления всех элементов массива, разделенных символами "; ".
#60
by mirrr
почти сделал запросом , только при соединении ЕстьNULL(Т.Свойство1,"") + " / " + ЕстьNULL(Т.Свойство2,"") + " / " + ЕстьNULL(Т.Свойство3,"") + " / " + ЕстьNULL(Т.Свойство4,"") КАК Поле1 если у свойств тип дата, тогда ест-но к ней символ прибавить нельзя. Пробовал эту дату перевести в строку (Представление, строка), все равно не хочет выводить 01.01.2011 00:00:00/01.02.2011 00:00:00 И кстати из этой даты время не убирается
#68
by mirrr
через Строка пробовал, но в тексте запроса это не работает, опять же непонятно, как какой-то тип (число, дата) преобразовать в строку в самом запросе Есть еще представление, но то же самое будет
#70
by mirrr
в вычисляемых полях нельзя использовать в выражении вычисляемые поля. У меня нужно сначала к дате добавить символ (", "), затем сложить несколько таких полей. Т.е. поле с датой и с символом(",") должно быть готовое уже в запросе, а потом в вычисляемом поле уже несколько таких полей сложить.
#71
by PVV65
В запросе получаешь поля Т.Свойство1 ..... Т.Свойство20. в вычисляемом поле пишешь Формат(Свойство1,"ДЛФ=D") + ", " + ...... + Формат(Свойство20,"ДЛФ=D")
#72
by mirrr
я именно так и сделал. Не устраиваю лишние запятые в случае пустых значений. Поэтому нужна предварительная обработка, чтобы "Свойство1" уже содержало текст "Свойство1, " в случае наличия, и текст "" в случае отсутствия текста в "Свойство1".
#73
by PVV65
Выбор Когда Формат(Свойство1,"ДЛФ=D") = "" Тогда "" Иначе ", " Конец + ...... + Формат(Свойство20,"ДЛФ=D")
#83
by mirrr
можно ли менять размер колонок в скд, не используя макеты? Потому как слишком широкие стандартные колонки.
#84
by PVV65
Колонка "Оформление" в описании полей на закладках "Наборы данных" и "Вычисляемые поля". Или постобработка табличного документа.
#87
by PVV65
это из встроенного языка. я уже писал, что не знаю, а предполагаю (из описания функции).
#88
by mirrr
ВычислитьВыражениеСГруппировкойМассив пока оставлю. Попробую еще вариант сделать то же через внешний набор данных.
#90
by PVV65
Шрифт заголовков можно изменить в "Макете оформления компоновки данных". Выбор макета осуществляется в настройках компоновки на закладке "Другие настройки". Создать свой макет можно либо в общих макетах ветки конфигурации. либо в другом объекте где возможно создание макетов. При создании макета надо указать тип макета - "Макет оформления компоновки данных". В открывшемся окне редактора макета, за основу возможно взять один из стандартных макетов и отредактировать его.
#91
by mirrr
В какой процедуре нужно этот макет оформления (созданный на основе стандартного) привязывать к компоновщику макета? При нажатии на кнопку "сформировать"? т.е. надо свою кнопку "сформировать" с обработчиком делать?
#92
by PVV65
>>>>>> Выбор макета осуществляется в настройках компоновки на закладке "Другие настройки".
#93
by mirrr
это стандартный макет. Я так понял, чтобы изменить шрифт заголовков полей группировок, нужно создать свой макет оформления и в нем изменить шрифт. А потом программно его подвязать к компоновщику макета. Если не так, поясните.
#96
by mirrr
Вы писали, что если в СКД применять несколько наборов данных, то итоги рассчитываются в каждом из них отдельно. Подскажите, если делать не через скд, а просто запросом в модуле отчета, то как результат запроса можно привести к виду (т.е. чтобы итоговая сумма по всем договорам была равна 8000)? таб1: Договор____СуммаДоговора____Документ__СуммаДока 1__________5000_____________Док1_______100 1__________5000_____________Док2_______5600 1__________5000_____________Док3_______4500 1__________5000_____________Док4_______1200 2__________3000_____________Док1_______500 2__________3000_____________Док2_______1600 2__________3000_____________Док3_______2500 2__________3000_____________Док4_______1250 Итого______8000________________________ХХХ т.е. чтобы итоговая сумма по всем договорам была равна 8000. Я кроме как объединением таблиц не знаю. В случае объединения будет так (таб2): Договор____СуммаДоговора____Документ__СуммаДока 1__________5000_____________""_________0 1__________0________________Док1_______5600 1__________0________________Док2_______4500 1__________0________________Док3_______1200 2__________3000_____________""_________0 2__________0________________Док1_______1600 2__________0________________Док2_______2500 2__________0________________Док3_______1250 Итого______8000________________________ХХХ Подскажите, можно ли такое сделать через соединение, т.к. в 1-ом результате (таб1) если делать итоги по сумме договора, получится 32000.
#98
by mirrr
-. Создал в разделе макетов отчета макет с типом "Макет оформления компоновки данных". В нем загрузил стандартный макет. Изменил его. Сохранил. Макет в настройках не появился.
#100
by mirrr
+ Подвязал этот макет к компоновщику макета: МакетОформления=ПолучитьМакет("МойМакет"); МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки, МакетОформления); После этого отчет выводится через этот макет. Но в настройках его не нашел, поясните.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- изменить шрифт в ВвестиЧисло(), как ?
- Значение зависимой ячейки изменить программно...
- ЗиК. Изменить Вид расчета.
- Построитель отчетов: вывод (не вывод) группировок
- Ошибка "...Вывод запрещен по причине: Вывод запрещен" - ничего не понимаю :(
- СКД: СКД. Управляемый вывод группировок.
- СКД: СКД на два запроса один отбор
- СКД: СКД: Вывод итогов запроса периодами, вывод счетчика строк...
- СКД: Как использовать результат запроса СКД который воводится в таб. поле отчета?
- СКД: Как получить реальный запрос и результат запроса из СКД?
- можно ли изменить найти и изменить значение в дереве значений
- в СКД необходим вывод группировок выглядящий как вывод детальных записей
В этой группе 1С
- Печать ценников в Word
- Выгрузка и загрузка данных XML
- Поступление доп. расходов - транспортные расходы (УТ ред. 10.3)
- Бухгалтерия 2.0 (Внешняя обработка заполнения табличный частей)
- Ошибка в запросе с "ВЫРАЗИТЬ("
- v7: Получение обновление по 1с:Вещевое довольствие 7.7
- Подвал табличной части документы и пользовательский код
- В 1с 8.2 КА при использовании префиксов в РИВ как печатать их?
- v7: Как написать батник для запуска 1С77
- v8: ГУИД объект не найден
- Как быстро скопировать данные из одного регистра в другой(регистры одинаковые)
- Отслеживание смены паспорта сотрудником
- Заполнить выборку из регистра накопления обороты
- ЗУП Как назначить выплату компенсации при увольнении
- Есть ли конфигурация "Компьютерная фирма" на 8-ке?
- СКД - сохранение параметров при использовании нескольких схем
- УТ 10.3 обработка подбор номенклатуры
- РИБ ошибка при обмене - Не установлен отбор по регистратору
- Как посмотреть прибыль от продажи товара в 1С 8.2 КА
- БП: Корректировка стоимости номенклатуры