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) хоть ощущение что можно лучше (правильней) так и осталось. 🙂

Источник

Оцените статью