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

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
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

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
43
Надеюсь никто не сойдет с ума прочитав данный пост) Извиняюсь, наверное можно было изложить мысль и проще...
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
Сделай себе в VS свой класс с нужной структурой, поля, таблицы, списки, все что угодно, скомпилируй в dll, в зенке создаешь объект и пихаешь в него все нужные данные. потом сериализируешь его в JSON и одной переменной передаешь в подпроект. там десериализируешь и работаешь с этим объектом. возврат так же.
 
  • Спасибо
Реакции: djaga и material

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
43
Сделай себе в VS свой класс с нужной структурой, поля, таблицы, списки, все что угодно, скомпилируй в dll, в зенке создаешь объект и пихаешь в него все нужные данные. потом сериализируешь его в JSON и одной переменной передаешь в подпроект. там десериализируешь и работаешь с этим объектом. возврат так же.
Думаю для реализации всего написанного, нужно не слабо прокачать скиллы. Пост сохраню в заметки, уверен через годик вытяну из него куда больше полезной информации.

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

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

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

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
переменные можно создать прямо во время работы шаблона.
после создания, можно присвоить им данные.
можно все переменные одного проекта пихнуть в таблицу с 2-мя колонками и эту таблицу передать через одну служебную переменную, которая есть в каждом проекте/подпроекте. (или просто передать как таблицу или можно через контекст передать)
из таблицы можно развернуть все переменные.
обратно так же. свернуть в таблицу, передать в служебную переменную и развернуть в основном проекте.

это все есть на форуме. обычная работы с набором данных.
 
  • Спасибо
Реакции: material

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
43
переменные можно создать прямо во время работы шаблона.
после создания, можно присвоить им данные.
можно все переменные одного проекта пихнуть в таблицу с 2-мя колонками и эту таблицу передать через одну служебную переменную, которая есть в каждом проекте/подпроекте. (или просто передать как таблицу или можно через контекст передать)
из таблицы можно развернуть все переменные.
обратно так же. свернуть в таблицу, передать в служебную переменную и развернуть в основном проекте.

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

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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 525
Благодарностей
3 375
Баллы
113
Попробуйте контекст как альтернативу.
 
  • Спасибо
Реакции: material

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 101
Благодарностей
132
Баллы
63
Мой костыль занимает ровно 1 экшен с перечислением переменных, которых нет во вложенном проекте и наоборот, чтобы они не почистились позже функционалом "Очистка неиспользуемых переменных"
Еще раз для тугодумов.
1. Можно кубик как перечисляешь переменные, которые вносишь в подпроекты.
2. В подпроекте нужно очистить ластиком от неиспользуемых, в том числе внесенных с основного?
т.е. заходить в подпроекты с набором из основного, а потом в каждом чистить от неиспользованных?
 

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
43
Еще раз для тугодумов.
1. Можно кубик как перечисляешь переменные, которые вносишь в подпроекты.
2. В подпроекте нужно очистить ластиком от неиспользуемых, в том числе внесенных с основного?
т.е. заходить в подпроекты с набором из основного, а потом в каждом чистить от неиспользованных?
Забудем про ластик, он только сбивает с толку, проблема не в нём по сути, он нужен сугубо для удобства, чтобы не сорить в проектах.

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

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

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

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
43
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

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
43
переменные можно создать прямо во время работы шаблона.
после создания, можно присвоить им данные.
можно все переменные одного проекта пихнуть в таблицу с 2-мя колонками и эту таблицу передать через одну служебную переменную, которая есть в каждом проекте/подпроекте. (или просто передать как таблицу или можно через контекст передать)
из таблицы можно развернуть все переменные.
обратно так же. свернуть в таблицу, передать в служебную переменную и развернуть в основном проекте.

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

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