- Удалить колонку в дереве значений #793699
- Похожие вопросы 1С
- В этой группе 1С
- Работа с деревом значений в 1С
- Дерево значений
- Дерево значений на форме
- Заполнение дерева значений
- Обход дерева значений
- Как свернуть и развернуть дерево значений
- Как удалить строку и очистить дерево значений
- Запрос и дерево значений
- Дерево значений в таблицу значений и обратно
- Отбор в дереве значений
- Удалить колонку в дереве значений
Удалить колонку в дереве значений #793699
Можно ли как то удалить колонку в дереве значений ну или в результате запроса получить только определенные колонки? Дерево в последствии выгружается на форму без перебора. ЗначениеВРеквизитФормы(ВыборкаДерево,»ДеревоРезультата»);
Спасибо. Все получилось. А вот как удалить из результатов запроса я так и не могу сообразить. У меня в запросе есть вложенный запрос и может быть куча группировок (они динамически добавляются), к тому же мне надо чтобы группировки в результате выводились в одну колонку, а не в несколько и если в результирующем запросе я ставлю в Выбор только нужные мне поля тогда не видно группировок. Запрос.Текст = «ВЫБРАТЬ
Он используется во вложенном запросе, по нему и другим (около пяти) колонкам собирается иерархия. Но вывести все это надо в одной колонке.
я просто не понимаю логики всего этого действа. А так, в запросе достаточно выбрать только то, что тебе надо
В любой непонятной ситуации оборачивай весь запрос вложеным запросом и там уже бери только нужные тебе колонки и вообще накладывай любые условия на результат финального вложенного запроса.
Мне нужно выбрать из двух документов таблицы их объединить, потом сгруппировать результат объединения по всем колонкам (с итогами) и вывести все это в виде дерева на форму только вывести в Одну колонку, а не в несколько. Примерно вот так
Я так и сделал, но тогда не получается объединить (собрать одинаковые поля из разных таблиц в одну) по последнему полю Выборка. И в результирующей таблице в группировках все нормально, а вот последний уровень имеет по две строки (из каждой таблице по одной) вместо одной.
Или я в запросах ничего не понимаю, или одна из черепашек свистит. У тебя правда запрос рисует дерево с иерархией по текстовому полю?
Если не объединять по последней колонке то да, но если объединить то получается одно лишнее вложение, это которое группировки раскрывает (+-).
ладно, я вижу, что картинка не по этому запросу сделана. Теперь самый главный вопрос — чем тебе мешает лишнее поле? Это поле нужно для иерархии. Его никак не удалить. Чем мешает?
Запрос немного урезан конечно но он взят из отладчика. А поле мешает при отображении на форме, лишнее оно. Нужно только первое «Выборка» там все вложения и прописаны.
Можно конечно и после обработки удалить лишние колонки, но я думаю что так больше времени потратиться нежели еще в запросе лишнее убрать. Запрос и так довольно долго делается (две таблицы по 15 000 строк).
Какое ключевое, Выборка? Дак я его и не собираюсь удалять, мне остальные не нужны. Я просто чувствую что мой запрос очень не оптимальный (работает не быстро и выглядит не очень), вот и подумал что смогу понять в чем. Не очень сильно понимаю как правильно делать запросы, что оптимально, а что нет. Вот у меня например делается Группировка и во вложенных запросах и во внешнем, причем по одним и тем же полям. Попробовал у внутренних запросов убрать СГРУППИРОВАТЬ стало почему то еще медленней и результаты другими.
Я так понял что можно сделать только удалением колонок после выполнения запроса . Что я и сделал, а в самом запросе либо не получиться, либо никто хочет в нем копаться чтобы понять что я делаю не так.
Похожие вопросы 1С
- Как удалить с печатной формы документа колонку.
- Можно ли в колонку таблицы значений вставить список значений?
- не могу удалить строки из Табличного Поля
- Удалить из конфигуратора документ либо модуль документа
- Как удалить колонку табличного поля
- Как в Список Значений загрузить колонку Таблицы Значений?
- Нужно удалить записи регистра сведений «Удалить права доступа пользователей»
- Как в Excel поставить/удалить группировку по некоторым строкам, и удалить по другим
- Как в Дереве значений использовать колонку с типом «Соответствие» в 1С 8.1
- Как программно удалить колонку в excel
- Выгрузить колонку результата запроса в колонку дерева значений
В этой группе 1С
- Список значений групп справочника номенклатуры
- Как соединить 3 таблицы в запросе 1с?
- Как отрыть управляемую форму в тонком клиенте?
- Розница 2.2 и обособленные подразделения
- ЗУП 3.0 не заполняется индивидуальный график
- ОпределяемыйТип Недопустимый тип
- «Определяемый тип» vs «составной тип»
- Розница 2.2 вывод штрихкода в чеке
- Переменная не определена (КонтекстЭДО)
- 1С УТ не видит драйвер ККТ
- При синхронизации документы приходят без движения.
- Несколько задач в одной точке маршрута Бизнес-процесса в УТ 11.
- Зуп 3.1.2.105 Поле «Подписал» в справке 2-НДФЛ для сотрудников
- Переменная не определена (ОбщегоНазначения)
- v7: Внешняя печатная форма
- Нумерация кассовых документов в БП 3
- v7: Отваливается фискальный регистратор
- Группировка в отдельной колонке УТ11
- Расширения конфигурации. Режим совсместимости.
- НДФЛ по обособленным подразделениям ЗУП 2.5
Источник
Работа с деревом значений в 1С
В последнее время аномально часто мне в работе попадалось дерево значений, поэтому решил написать на эту тему статью.
Попробую рассмотреть способы решения основных задач связанных с деревом значений, при этом постараюсь писать «без воды».
Дерево значений
Из названия объекта понятно, что дерево значений служит для хранения/отображения какой-либо иерархической информации. Каждая строка дерева значений может иметь какое-то количество подчиненных строк, при этом такие операции как поиск, сортировка, подсчет итогов можно проводит с учетом уровня иерархии и подчиненных строк.
Кроме этого, каждая строка дерева значений имеет свойства «Родитель» и «Строки».
Дерево значений на форме
Визуальное представление дерева значений обеспечивает элемент «Табличное поле».
Заполнение дерева значений
При заполнении дерева значений нужно помнить, что сам объект «ДеревоЗначений» и все его строки имеют свойство «Строки»и добавление новых строк на любом уровне дерева осуществляется через это свойство.
Сам же объект «ДеревоЗначений» имеет еще и свойство «Колонки», которое ничем не отличается от аналогичного свойства у таблицы значений.
Небольшой пример программного заполнения таблицы значений для управляемых форм:
Обход дерева значений
Обход всех строк дерева значений делается при помощи рекурсии, вот так будет выглядеть код для обхода дерева созданного в примере выше:
Как свернуть и развернуть дерево значений
Сворачивается и разворачивается дерево значений очень просто.
Привел три примера: для сворачивания текущей строки, для сворачивания строк верхнего уровня, для сворачивания вообще всех строк (рекурсия).
Два примера: для разворачивания текущей строки и для разворачивания всех строк. У метода «Развернуть» есть дополнительный параметр, который позволяет указать нужно ли разворачивать подчиненные строки.
Как удалить строку и очистить дерево значений
Тут опять же все просто, нужно помнить, что при удалении/очистке строки, все подчиненные строки удаляются.
Точно также можно очистить от подчиненных элементов другую другую строку.
Удалить строку дерева значений не сложнее — нужно только знать ее индекс:
Запрос и дерево значений
Результат выполнения запроса очень легко преобразовать в дерево значений, для этого нужно воспользоваться методом «Выгрузить» и указать параметр «ТипОбхода» отличным от того, что стоит по умолчанию, т.е. «ПоГруппировкам» или «ПоГруппировкамСИерархией».
Если на форме имеется реквизит «ДеревоЗначений» и связанный с ним визуальный элемент, то можно сделать примерно так:
Причем полного совпадения колонок и типов не требуется — лишние колонки будут просто отброшены, а колонки с различными типами будут заполнены пустыми значениями.
Дерево значений в таблицу значений и обратно
Преобразовать дерево значений в таблицу значений и наоборот достаточно просто, ведь дерево значений это та же таблица значений, но с дополнительной колонкой — «Родитель». У меня есть отдельная статья о том как преобразовать дерево значений в таблицу значений и обратно.
Отбор в дереве значений
Стандартного отбора в дереве значений не предусмотрено. Так получилось потому, что непонятно как разрешать ситуацию, когда родительский элемент не удовлетворяет условию отбора, а подчиненные ему элементы удовлетворяют.
Таким образом, если Вам нужно реализовать отбор в дереве значений, то начать нужно с решения именно этой проблемы. А уже после этого можно придумать несколько способов реализовать задуманное.
Первый способ — накладывать отбор до вывода дерева значений (в запросе например). Это не классический отбор, но в тех случаях когда этот способ применим, то следует применять именно его, так как это почти всегда быстрее и правильнее чем что-либо другое.
Второй способ — перебор всех строк дерева значений. Описывать здесь особенно нечего, нужно просто взять обход дерева значений, проверять каждую строку на соответствие условию отбора и удалять лишние строки.
Еще один способ заключается в том, чтобы преобразовать дерево значений в таблицу значений, сделать отбор в таблице значений, проконтролировать результат (почистить «хвосты» — строки, родитель которых не удовлетворил условию отбора) и выполнить обратное преобразование в дерево значений.
На этом все, рассказал все, что знал, надеюсь мне удалось сэкономить Вам немного времени.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
(оценок: 36, средняя оценка: 4,64 из 5)
Источник
Удалить колонку в дереве значений
Можно ли как то удалить колонку в дереве значений ну или в результате запроса получить только определенные колонки?
Дерево в последствии выгружается на форму без перебора.
(1) Спасибо. Все получилось.
(2) А вот как удалить из результатов запроса я так и не могу сообразить. У меня в запросе есть вложенный запрос и может быть куча группировок (они динамически добавляются), к тому же мне надо чтобы группировки в результате выводились в одну колонку, а не в несколько и если в результирующем запросе я ставлю в Выбор только нужные мне поля тогда не видно группировок.
(5) Он используется во вложенном запросе, по нему и другим (около пяти) колонкам собирается иерархия. Но вывести все это надо в одной колонке.
(8) я просто не понимаю логики всего этого действа. А так, в запросе достаточно выбрать только то, что тебе надо
(8)В любой непонятной ситуации оборачивай весь запрос вложеным запросом и там уже бери только нужные тебе колонки и вообще накладывай любые условия на результат финального вложенного запроса.
(9) Мне нужно выбрать из двух документов таблицы их объединить, потом сгруппировать результат объединения по всем колонкам (с итогами) и вывести все это в виде дерева на форму только вывести в Одну колонку, а не в несколько.
Примерно вот так
http://s015.radikal.ru/i330/1703/1d/751210441be6.jpg
(10) Я так и сделал, но тогда не получается объединить (собрать одинаковые поля из разных таблиц в одну) по последнему полю Выборка. И в результирующей таблице в группировках все нормально, а вот последний уровень имеет по две строки (из каждой таблице по одной) вместо одной.
Или я в запросах ничего не понимаю, или одна из черепашек свистит.
У тебя правда запрос (3) рисует дерево с иерархией по текстовому полю?
(14) Если не объединять по последней колонке то да, но если объединить то получается одно лишнее вложение, это которое группировки раскрывает (+-).
ладно, я вижу, что картинка не по этому запросу сделана.
Теперь самый главный вопрос — чем тебе мешает лишнее поле? Это поле нужно для иерархии. Его никак не удалить. Чем мешает?
(18) Запрос немного урезан конечно но он взят из отладчика.
А поле мешает при отображении на форме, лишнее оно. Нужно только первое «Выборка» там все вложения и прописаны.
(18) Можно конечно и после обработки удалить лишние колонки, но я думаю что так больше времени потратиться нежели еще в запросе лишнее убрать. Запрос и так довольно долго делается (две таблицы по 15 000 строк).
(21) Какое ключевое, Выборка? Дак я его и не собираюсь удалять, мне остальные не нужны. Я просто чувствую что мой запрос очень не оптимальный (работает не быстро и выглядит не очень), вот и подумал что смогу понять в чем. Не очень сильно понимаю как правильно делать запросы, что оптимально, а что нет. Вот у меня например делается Группировка и во вложенных запросах и во внешнем, причем по одним и тем же полям. Попробовал у внутренних запросов убрать СГРУППИРОВАТЬ стало почему то еще медленней и результаты другими.
(23) Я так понял что можно сделать только удалением колонок после выполнения запроса (1). Что я и сделал, а в самом запросе либо не получиться, либо никто хочет в нем копаться чтобы понять что я делаю не так.
(23) Моя задача решилась по способу в (1) хоть ощущение что можно лучше (правильней) так и осталось. 🙂
Источник