Проект в проекте [передача переменных и их значений]

material

Client
Регистрация
23.03.2021
Сообщения
378
Реакции
173
Баллы
43
Приветствую. При использовании функции проект в проекте, нужно передать недостоющие переменные и их значения из Проекта #1 в Проект #2. После выполнения Проекта #2, теперь нужно передать недостающие переменные и их значения в Проект #1.

На данный момент проблема в том, что для передачи значения переменной из Проекта #1 в Проект #2 и обратно, нужно чтобы данная переменная была в Проекте #1 и в Проекте #2, то есть в обоих проектах. Сейчас пользуюсь простым костылём в виде создания кубика со списком переменных, чтобы они не удалялись при использовании функции "Очистка неиспользуемых переменных" и так в каждом проекте, которые используются для работы Проекта в проекте.

Область применения. Разберем детально работу на примере Переменной #1. У нас есть Проект #1 - основной, Проект #2 и Проект #3 вспомогательные. Запускаем Проект #1, в нем не используется Переменная #1, в проекте её нет. Далее мы переходим из Проекта #1 в Проект #2 (проект в проекте) и получаем там значение Переменной #1, которую в будущем мы будем использовать в Проекте #3, но проблема в том, что значение Переменной #1, не передастся из Проекта #2 в Проект #1 после выполнения, так как в Проекте #1 нет Переменной #1. По итогу Проект #3, в который мы через некоторое время попадем из Проекте #1 (проект в проекте), остается без Переменной #1 и работа заканчивается ошибкой.

Да, проблема легко решается, если в Проект #1 добавить Переменную #1, но Переменная #1 никак не используется в Проекте #1 и её нужно добавлять получается насильно к привязке к кому-либо кубику, который просто будет расположен в стороне от проекта, чтобы Переменная #1 не удалилось в будущем, через использования функционала "Очистка неиспользуемых переменных". В данном случае описана работа одной переменной, когда их скажем 20-30 уже не так интересно, приходиться вручную синхронизировать переменные между проектами и когда появляются новые, постоянно список обновлять.

Возможно я усложняю, но мне просто нужно чтобы во всех проектах, используемых в функционале проект в проекте, были одинаковые переменные, даже если изначально список используемых переменных в проектах отличался.
 
  • Спасибо
Реакции: djaga
Надеюсь никто не сойдет с ума прочитав данный пост) Извиняюсь, наверное можно было изложить мысль и проще...
 
Сделай себе в VS свой класс с нужной структурой, поля, таблицы, списки, все что угодно, скомпилируй в dll, в зенке создаешь объект и пихаешь в него все нужные данные. потом сериализируешь его в JSON и одной переменной передаешь в подпроект. там десериализируешь и работаешь с этим объектом. возврат так же.
 
  • Спасибо
Реакции: djaga и material
Сделай себе в VS свой класс с нужной структурой, поля, таблицы, списки, все что угодно, скомпилируй в dll, в зенке создаешь объект и пихаешь в него все нужные данные. потом сериализируешь его в JSON и одной переменной передаешь в подпроект. там десериализируешь и работаешь с этим объектом. возврат так же.

Думаю для реализации всего написанного, нужно не слабо прокачать скиллы. Пост сохраню в заметки, уверен через годик вытяну из него куда больше полезной информации.

Тезисно всё равно не совсем понимаю, как это поможет именно в работе с функционалом "Проект в проекте", ведь переменные уже должны быть во вложенном проекте на момент перехода из основного проекта во вложенный, если переменных во вложенном проекте не будет, то и значения переменных не передадутся из основного проекта во вложенный. Это же правило работает и наоборот, если вложенный проект выполнил работу и задал значение переменной, которой нет в основном проекте, то значение переменной банально не перейдет в основной проект, так как в основном проекте изначально не было переменной.

Я к тому, что как только выполнился экшен "Проект в проекте", уже поздно что либо делать, наверное, так как переменные фикцируются именно в моменте выполнения экшена.

Возможно какой-то аналог есть на C#, экшену "Проект в проекте", где можно указать свойста создания недостающих переменных.
 
переменные можно создать прямо во время работы шаблона.
после создания, можно присвоить им данные.
можно все переменные одного проекта пихнуть в таблицу с 2-мя колонками и эту таблицу передать через одну служебную переменную, которая есть в каждом проекте/подпроекте. (или просто передать как таблицу или можно через контекст передать)
из таблицы можно развернуть все переменные.
обратно так же. свернуть в таблицу, передать в служебную переменную и развернуть в основном проекте.

это все есть на форуме. обычная работы с набором данных.
 
  • Спасибо
Реакции: material
переменные можно создать прямо во время работы шаблона.
после создания, можно присвоить им данные.
можно все переменные одного проекта пихнуть в таблицу с 2-мя колонками и эту таблицу передать через одну служебную переменную, которая есть в каждом проекте/подпроекте. (или просто передать как таблицу или можно через контекст передать)
из таблицы можно развернуть все переменные.
обратно так же. свернуть в таблицу, передать в служебную переменную и развернуть в основном проекте.

это все есть на форуме. обычная работы с набором данных.

Понимаю можно всё сначала сохранить, потом перейти во вложенный проект, потом выгрузить все данные в него, а по завершению работы во вложенном проекте все данные снова сохранить и при переходе в основной проект, снова их выгрузить. Сложно получается, думаю мой вариант легче, с синхронизацией переменных во всех шаблонах, которые используются по линии функционала "Проект в проекте". Мой костыль занимает ровно 1 экшен с перечислением переменных, которых нет во вложенном проекте и наоборот, чтобы они не почистились позже функционалом "Очистка неиспользуемых переменных". В вашем же случае появляются целые блоки обработки данных перед исполнением экшена "Проект в проекте" и после его выполнения, это в любом случае больше 1 экшена, который на данный момент решает проблему, но который не удобно поддерживать в актуальном состоянии, добавляя в него постоянно новые переменные.

У меня в другом вопрос, почему в функционале "Проект в проекте" нет свойства создавать недостоющие переменные из основного проекта во вложенный и из вложенного в основной. Пока рано отвечать "Спроси у разработчиков", если не будет решения, попробую создать тему и как то обратить на это внимание.
 
  • Спасибо
Реакции: bizzon
Попробуйте контекст как альтернативу.
 
  • Спасибо
Реакции: material
Мой костыль занимает ровно 1 экшен с перечислением переменных, которых нет во вложенном проекте и наоборот, чтобы они не почистились позже функционалом "Очистка неиспользуемых переменных"
Еще раз для тугодумов.
1. Можно кубик как перечисляешь переменные, которые вносишь в подпроекты.
2. В подпроекте нужно очистить ластиком от неиспользуемых, в том числе внесенных с основного?
т.е. заходить в подпроекты с набором из основного, а потом в каждом чистить от неиспользованных?
 
Еще раз для тугодумов.
1. Можно кубик как перечисляешь переменные, которые вносишь в подпроекты.
2. В подпроекте нужно очистить ластиком от неиспользуемых, в том числе внесенных с основного?
т.е. заходить в подпроекты с набором из основного, а потом в каждом чистить от неиспользованных?

Забудем про ластик, он только сбивает с толку, проблема не в нём по сути, он нужен сугубо для удобства, чтобы не сорить в проектах.

При использовании функционала "Проект в проекте" нельзя переносить недостоющие переменные во вложенный проект и обратно из вложенного в основной, если во вложенном были переменные, которых не было в основном.

По факту чтобы пользоваться функционалом "Проект в проекте" переменные всех используемых подпроектов должны быть между собой синхронизированы, иначе возможны ошибки при выполнении, описанные в первом посте.
Возможно я неверно интерпретирую функционал ZP "Проект в проекте", но если шаблон сложный, и в нем используется несколько подпроектов, почему я должен синхронизировать переменные во всех подпроектах и захломлять их мусором? Другими словами добавлять в них переменные из других проектов, просто для того, чтобы "Проект в проекте" корректно отрабатывал. Здесь же на форуме Боги оптимизиции, но даже у меня от такого варварства поскрипывает.

На данный момент значения переменных из основного проекта во вложенный передаются тогда и только тогда, когда во вложенном имеется переменная используемая в основном проекте. Такая же история и со вложенным проектом, если в нем были переменные, которых не было в основном, то после выполнения вложенного проекта, информация не перейдет в основной, если в основном нет переменной используемой во вложенном. Другими словами перед работой с "Проект в проекте" нужно в обязательном порядке добавлять в проекты заранее все недостоющие переменные каждого из проектов.
 
Последнее редактирование:
Short Version

Исходные данные.
В Проекте 1, есть Переменная 1, Переменная 2, Переменная 3.
В Проекте 2, есть Переменная 4.
В Проекте 3, есть Переменная 4, Переменная 5.

Запуск проекта.
Акт 1. В Проекте 1 имеется экшен "Проект в проекте", который ссылается на Проект 2, там происходит некая операция, результатом которой становится значение Переменной 4. Проект 2 выполняется и по логике экшена "Проект в проекте" мы переносимся в Проект 1, значение Переменной 4 при этом не перенеслось в Проект 1, так как в нем исходя из исходных данных выше, нет Переменной 4, а есть только Переменная 1, Переменная 2, Переменная 3.

Акт 2. Далее, находясь в Проекте 1 и выполнив определенные действия нам теперь нужно перенестись в Проект 3, через экшен "Проект в проекте" и использовать данные Переменной 4, значения которой нет в Проекте 1, так как значение было получено ранее в Проекте 2, который после выполнения не передал в Проект 1, значение Переменной 4, так как её не было в Проекте 1 изначально.

Вот теперь всё сломалось, а чтобы не ломалось нужно чтобы во всех трех проектах изначально были: Переменная 1, Переменная 2, Переменная 3, Переменная 4, Переменная 5. Получается, чтобы корректно использовать на полную экшен "Проект в проекте", нужно всем проектам прописывать одинаковые переменные, даже если напрямую они в некоторых из них не используются. Одним словом намеренно мусорить в проектах, а потом ещё и следить за этими переменными, чтобы они были актуальными, в процессе доработки проектов в будущем.
 
Последнее редактирование:
  • Спасибо
Реакции: bizzon
переменные можно создать прямо во время работы шаблона.
после создания, можно присвоить им данные.
можно все переменные одного проекта пихнуть в таблицу с 2-мя колонками и эту таблицу передать через одну служебную переменную, которая есть в каждом проекте/подпроекте. (или просто передать как таблицу или можно через контекст передать)
из таблицы можно развернуть все переменные.
обратно так же. свернуть в таблицу, передать в служебную переменную и развернуть в основном проекте.

это все есть на форуме. обычная работы с набором данных.
Думаю для реализации всего написанного, нужно не слабо прокачать скиллы. Пост сохраню в заметки, уверен через годик вытяну из него куда больше полезной информации.

Немного ошибся, прошло 2 года, пока я дошел до реализации твоего совета. Не знаю, за что тебе поставили "Read only", но считаю тебя одним из сильнейших технарей этого форума, который к тому же помогает советами другим людям.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)