#0
by Darklight
Подскажите, есть ли какое внятное решение. Необходимо при формировании ВРЕМЕННОЙ таблицы провести свёртку (группировку) данных источника так, чтобы по определённому полю (счет) произошло агрегирование значение через запятую (пускай в строке), какие-то остальные поля просуммировались и по каким=-то произошла, собственно, группировка. То есть ффф 100 10.01 ффф 200 10.01 ффф 300 10.02 ааа 100 10.02 ааа 150 10.03 ггг 100 10.03 превратилось в ффф 600 10.01, 10.02 ааа 250 10.02, 10.03 ггг 100 10.03 Это всё нужно получить во временной таблице, для дальнейшего использования в СКД Это вообще реально? Я пока вижу только вариант разбивания всего пакетного запроса на части, выполняемые отдельно - в одной формируется исходная таблица источника - она выгружается в вызывающий её алгоритм, где уже программно оно суммируется по нужному правилу - затем - это всё загружается в СКД уже в качестве внешнего набора данных с вытекающим геморроем с дальнейшим (с невозможностью использовать эти данных непосредственно в запросах, а только через соединения СКД - что подстегнёт вообще всё сначала и формировать в обычных запросах, а в СКД уже выгружать уже финальный результат для вывода, тогда с СКД придётся ещё больше тянуть всяких настроек, в первую очередь фильтров для того, чтобы применить их во внешнем запросе).
#3
by kosts
Вроде затык начинается даже с преобразования числа в строку, не говоря уже про остальное...
#4
by Darklight
Потому что написано в , что это временная таблица - а не финальное агреггирование при выводе (было бы там - использовал бы штатную функцию СКД ВычислитьВыражениеСГруппировкойМассив)
#5
by Darklight
Число в строку преобразовать не надо - написано же - это счета - у них поле "код" строковое.
#6
by Darklight
Спасибо - уже читаю, хотя фраза "по сравнению с внезапросной техникой представляет больше спортивный, чем практический интерес." уже пугает :( возможно придётся всё-таки делать по внезапросной технике как я написал в
#7
by kosts
В таком случае. Т.к. количество счетов это ограниченная небольшая величина, то можно использовать искусственную таблицу, которую присоединяем там где надо, но огород еще тот будет. Чем больше счетов одновременно будет, тем огородистее.
#9
by kosts
Колонка счет 1 | Колонка счет 2 | СтрокаСчетов 10.01 | 10.02 | 10.01, 10.02 10.01 | 10.03 | 10.01, 10.03 етк
#10
by Darklight
Любопытно, что в статье упоминается функция СКД СоединениеСтрок - но таковой я в справке не нашёл (у меня релиз платформы 8.2.19.80) Опять-таки - пишу что нужно сгруппировать во временной таблице - там нет понятие Ресурс СКД! И не доступны функции языка выражений СКД. , Идею почти понял - можно про соединение чуть подробнее.
#14
by f_vadim
объемы большие? счетов много? может проще результат запроса в ТЗ, обработать и запихать во временную таблицу?
#15
by kosts
Схема запроса такая 1.Делаем обычную группировку, группируем первую колонку и счета, суммируем суммы. Результат ффф | 100 | 10.01 ффф | 200 | 10.01 ффф | 300 | 10.02 ааа | 100 | 10.02 ааа | 150 | 10.03 ггг | 100 | 10.03 2.Соединяя таблицу саму с собой По первому полю и минимаксу по счетам. Т.е. определяем какие счета должны быть суммированы (но находятся еще в разных колонках). Результат ффф | 600 | 10.01 | 10.02 ааа | 250 | 10.02 | 10.03 ггг | 100 | 10.03 | 3.Присоединяем искусственную таблицу, получаем конечны результат. Результат ффф | 600 | 10.01, 10.02 ааа | 250 | 10.02, 10.03 ггг | 100 | 10.03 И да, ужас конечно.
#16
by WildSery
Для двух счетов как раз очень частно, неуниверсально и не показывает общего алгоритма действий.
#17
by f_vadim
Для заранее известного набора счетов можно добавить для каждого счёта колонку, которую заполнить по КОГДА-ТОГДА. Затем свернуть.
#20
by Darklight
Спасибо, я идею в принципе понял - счета у меня почти фиксированные, но их всё-таки много сочетаний. Буду пробовать разные варианты реализации.
#21
by Darklight
Сделал как описано в - получилось. Вот только у меня там ещё и агрегаты числового суммирования были. Пришлось вычисления разделять на отдельные ветви и потом соединять по полям группировок - но это уже мелочи. Да и ещё, мне нужно было конкатенировать через запятую, решил добавлением запятой к началу исходных строк (ВЫБРАТЬ ","+Счет.Код КАК а), но потом от первой запятой пришлось избавляться через ПОДСТРОКА(Результат,2, 2048) - что создало длинную строку с пробелами в конце. Есть красивое решение данной проблемы?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Заполнение поля в форме на основе строки значения
- Как получить конкретный тип значения и вид значения объекта метаданных ?
- v8: Как результат запроса вывести в строку через запятую?
- Где хранятся настройки (которые по кнопкам Сохранить значения, Восстановить значения)
- Сохранить Значения, Восстановить Значения
- Как в запросе в качестве поля выбрать срез последних по дате из другого поля?
- Тип значения для поля ввода в колонке Табличного поля
- Сохранять значения, Сохраняемые значения, ВосстанавливатьЗначенияПриОткрытии?
- Заполнение поля ТЧ из поля справочника: как написать без sql?
- как в СКД включить отбор значения поля формируемого через Выбор Когда ?
- Как перенести определенную строку поля ввода, на новую строку ?
- В СКД вывести значения одного поля не каждый раз в новой строке, а через запятую
В этой группе 1С
- как убрать разделитель групп в числе?
- v7: Поставщик данных и его ПриНажатииКлавиши()
- Посоветуйте конфигурацию для мебельного индивидуального производства.
- Установлен безопасный режим. Выполнение операции запрещено
- Не работает обмен по COM
- бп и зуп, нужна идея по синхронизации подразделений, ситуация такая - бух
- V83.ComConnector vs V83.Application
- После обновление не запускается служба сервера.
- Получить вариант отчета в процедуре ПриКомпоновкеРезультата
- Как узнать путь к базе (имя базы) программно?
- В акт сверки попадает непроведенный документ
- Почему не работает ОбработкаЗаписиНового в форме документа?
- v7: можно ли изменить заголовок окна программы 1с77
- Что с партнерским?
- Вставка ссылки на картинку в определенное место в документ OpenOfficа.
- v8: Скопировать документы
- УпрФормы, НаКлиенте, проверить наличие роли у текущего пользователя
- Корректировка долга в 2.0
- Ошибка при вызове метода контекста (Создать)
- Восстановление файловой базы 1с после обновления