[РЕШЕНО] Дерево значений в обычных формах

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем TODD22, 13 сен 2015.

  1. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Создание колонки Вкл раскомментируй.
    Когда ты присваиваешь значение данным элемента формы, у тебя же там колонки вкл в текущем твоем варианте в дереве значений нет.
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Прилепил еще один вариант решения на основании обработки, созданной shurikvz.

    upload_2015-9-14_21-36-29.png

    Вложения:

  3. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Как же тяжело быть тупым :( Не могу придумать как сделать...

    Нашёл в инете пример и переделал обработку на 3 состояния флага. Если у района отмечены не все магазины то он серый.

    Нет ли у кого нибудь примера. У меня на форме есть второе дерево такое же как и первое. То есть в первое выводится список на доставку, во второе список загруженных в "машину".
    Ну и кнопки между ними. В первой я отметил на доставку и те что на доставку по кнопке перенеслись в "машину" и удалились из первой таб части(или можно сделать что бы не удалялись а как то изменялись что бы видно было что перенесены). Вместе с группой. И что бы обратно можно было переносить. Из машины в таб часть "На загрузку".

    Может как то иначе это разрулить? В итоге нужно сформировать документ на доставку. Со списком накладных. Но нужно выводить именно с детализацией по району.

    Буду рад любой посильной помощи :)

    Вложения:

  4. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Ставлю флажки.
    И просто циклом прохожу. У родителей флажок равен 0. Хотя значение должно быть у одного флага 1 у второго 2.
    --- Объединение сообщений, 16 сен 2015 ---
    Значение флажка всегда 0

    Вложения:

    Последнее редактирование: 16 сен 2015
  5. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Потому что оббегать нужно одно дерево, а флажки ставить - в другом :)
    А ты бежишь по тому дереву, где флажки НУЖНО установить и удивляешься, чего это они не установлены :)
    TODD22 нравится это.
  6. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Блин... вот затупил то :)

    Ну вот осталось теперь придумать как их перемещать между деревьями :)
    --- Объединение сообщений, 16 сен 2015 ---
    Не могу придумать сам алгоритм.

    Мне же нужно из одной таблицы те что отмечены удалить. Затем во вторую добавить.
    При этом родителя нужно удалить из первой если вся группа переносится и не удалять если не вся. Добавить во вторую таблицу нужно так же если все переносятся с родителем и тд... Да ещё если переносится без родителя из первого дерева. А во второй родитель уже есть... мутные эти деревья. Никогда с ними не связывался.
  7. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Ищи строки в дереве-приемнике и по данным дерева-источника, если нашел меняй значение флажка у строки и у родителя, если не нашел - добавляй.
  8. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Так мне же не флажки нужно изменять. А удалить из первого дерева отмеченные и добавить их во второе дерево.

    В первом дереве(реализация) я отмечаю нужные мне элементы. Во второе дерево переношу. Из первого отмеченные удаляю.

    И так же на оборот из "доставки" отмечаю и переношу в дерево "реализация".

    То есть перемещение строк между деревьями.
    --- Объединение сообщений, 16 сен 2015 ---
    Пока что придумал так.
    Сделал массив как переменную модуля.

    Пробегаю по дереву и те что отмечены помещаю в массив.
    Но что то массив не очень подходит. Мне ещё нужен индекс и значение флажка.
    --- Объединение сообщений, 16 сен 2015 ---
    Вот чего наваял

    Вложения:

    Последнее редактирование: 16 сен 2015
  9. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Ищи строки в дереве-источнике сперва по значению флажка - это будет быстрее, чем бегать по всему дереву и проверять значение флажка. Родителя у найденной строки ты всегда определишь.

    В дереве-приемнике ищешь строку, которую переносишь, если строки нет, то ищешь родителя, если и его нет, то добавляешь родителя и к нему строку. Следующая итерация уже будет с найденным родителем. Я бы еще запоминал количество перенесенных строк - это даст возможность установить значение флажка родителя в дереве-приёмнике сразу в процессе переноса.
  10. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Сделал вместо массива таблицу значений.

    Но я так понимаю у дерева нет общего индекса. Он только у подчинённых родителю элементов.

    Теперь нужно как то это всё удалять :(
    --- Объединение сообщений, 16 сен 2015 ---
    В дереве приёмнике флажки нужно очищать.
    Что бы их юзер руками проставлял. А то он перенесёт. Затем не очистит и какие нибудь отметит на удаление из доставки и перенесённые строки то же будут убраны.

    Вложения:

  11. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Так у тебя по сути уникальные комбинации район-магазин будут кочевать между ДЗ.
    Строки удаляются как и в ТЗ, не обязательно по индексу.

    Мне не понятно зачем переносить строки и снимать при этом флажки - это такой способ заколебать юзера? :)

    Отметили флажками куда отгружать - сразу обрабатываем дерево и формируем что необходимо, для чего вообще перетаскивать строки из одного ДЗ в другое?

    А если юзер 20 строк перетащил, в дереве приемнике уже были строки, ему опять 20 флажков проставлять?

    Если надо что-то делать с другими строками дерева, так сделай еще колонку с флажками, пусть там отмечают строки для другого действия системы.
    Последнее редактирование: 16 сен 2015
  12. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Первое дерево "Реализации" там должны быть документы сгруппированные с начало по району внутри района по контрагенту.

    Юзер отмечает те документы которые идут на отгрузку. У них до этого в 7.7 было так. То есть отмечать можно как по району в целом магазины так и часть магазинов. Жмёт кнопку и эти строки дерева перемещаются в дерево "на доставку".
    Чаще всего перемещают из дерева "реализация" в дерево "на доставку". Просто им нужно видеть именно в виде дерева. И должна быть возможность убрать строки из доставки.

    Если я галочки отмечу в дереве "на доставку" то юзер может первый раз переместить. Затем галочки не снять. Переместить в него второй раз и передумать. И вернуть назад. Тогда улетят и предидущие строки.

    Я думаю надо во второй таблице галочки снимать после перемещения. К тому же там есть возможность отметить как по району в целом так и выборочно по магазинам.
  13. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Смысл перетаскивания строк между деревьями мне до сих пор не понятен. Почему нельзя делать все в пределах одного дерева? Отгружаем отмеченное флажками.
    С этими переносами сам юзер может запутаться, если как ты говоришь
  14. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Смысл в том что у них так и раньше было. До этого у них в базе было 2 дерева. В одном реализации по районам во втором что погружено.
    Дело в том что там в обработке ещё и машина выбирается. Есть 10 машин. И во втором окне нужно смотреть их загрузку. Что то на доставку в машину добить, что то из неё убрать итд.

    То есть в дереве "Реализация" весь список документов РТИУ на дату(или за период). А в дереве на доставку то что погружено в конкретный автомобиль.
  15. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Привяжи дерево к списку автомобилей :)
  16. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    С привязкой дерева к списку авто не понял.
  17. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Добавь колонку "Машина" в дерево
  18. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Да не... это уже муть какая то будет.

    Когда у тебя два окна тогда понятней. В одном то что надо загрузить. В другом то что погружено в конкретную машину.
    Меняем машину и во втором окне видим состав по районам и документам реализации на доставку. Так удобней. А в одно окно я не понимаю как это всё сделать.
    --- Объединение сообщений, 17 сен 2015 ---
    Вернее понимаю. Но как с этим работать мне не понятно.
    Мне нужно из одной машины например выгрузить. А затем закинуть в другую машину.
    Выбираю в шапке нужную машину. Нахожу нужный док доставки. Выгружаю из машины. Выбираю другую машину смотрю по каким районам уже запланировано и добавляю в неё.
  19. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    обработку не смотрел.
    хрень какая-то непонятная.
    1) нафига флажки тогда в первом дереве в принципе, они что решают?
    2) не понятно как это в 7-ке выглядит, конкретнее как выглядит переключение между машинами
    3) нафига второе дерево делать именно деревом? Ок им надо видеть структуру подчиненности, пусть смотрят ее в первом дереве, а для преставления того что находится в машине достаточно плоского списка имхо.
    4) и все равно не понятно, для чего там какие-то флажки, что в первом что во втором дереве
  20. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Первое дерево это все документы реализации товаров и услуг на дату. Которые нужно отгрузить.
    Второе дерево это машина. То есть реализации распределённые на конкретную машину.
    Флажки нужны что бы отмечать реализации которые будут помещены в конкретную машину для отправки.
    В первом окне может быть 100 реализаций. В машину грузят только 15 из них. Смотрят по району доставки и выбирают. Отмечают флажками. Нажимают кнопку и переносят в машину(во второе дерево).

    В шапке выбирают следующую машину. Отмечают реализации и перемещают в следующую машину. И тд. Для этого и нужны флажки. А как ещё в дереве отметить то что нужно перенести на доставку.
    Реквизит в котором выбирается машина.
    Просто я его ещё не делал. Мне с деревьями для начала разобраться бы. Буду дома скину скрин как это в 7ке выглядит.
    У них сделано деревом в 7ке. И хотят точно так же что бы было в 8ке. То есть уже есть работающая обработка в 7ке и им нужно именно так же.
    Дерево для того что бы видеть доставки по районам в машине. Их много в одну машину грузят. Одна машина за день может объезжать 5-7 районов доставки и 40+ торговых точек.
    При том что у многих точек названия очень похожи типа "Холди", "Холди+","Холди-МК" и тд. И вот попробуй не запутайся тут.
    В первом дереве отметил. Нажал кнопку и те элементы что отмечены флажками перенеслись во второе дерево.
    Как ещё можно перенести часть строк дерева? Как пользователь их отмечать будет?

Поделиться этой страницей