EnglishУкраїнськаmRussian
Login/New
Topic with no new replies

[BugWrong] "Полная связь" по цепочке = read only


Author Message
Written on: 11. 04. 2016 [11:29]
Syberian
Oleg Dontsov
Topic creator
registered since: 11.04.2016
Posts: 3
Ситуация: есть цепочка вложенных друг в друга виджетов, которые передают друг другу атрибут от старшего к младшему и обратно.

1. DAQ MODBUS-устройство dev_fazan с множеством регистров, среди них регистр Freq типа "полный доступ"
2. виджет-контейнер fazan, который имеет атрибут Freq, связанный с prm:...../dev_fazan/registers/Freq типа "полная связь" + галка "обработка"
3. вложенный виджет fazan/config_panel, в котором есть атрибут Freq, связанный с wdg:../a_Freq , "полная связь" + галка "обработка"

Очень удобно: есть несколько одинаковых устройств с кучей регистров (ОВЧ-радиостанции). Сделал один контейнер-панель управления и шлепай его по страницам СО, в "связях" остается только указать "родной" контроллер MODBUS, а атрибуты раскидываются по группам и виджетам сами.

Проблема:
По цепочке 1-2-3 значение Freq проходит, а "против шерсти" (при редактировании fazan/config_panel/Freq) - меняется только сам атрибут в п.3., несмотря на указание "полная связь" по всей цепочке.

Решение-"костыль":
в п.2 и п.3 организуется цепочка из атрибутов "выходная связь" по имени Freq_out, которая в п.2 связывается с DAQ-регистром Freq.
Проверено: в таком случае значение атрибута передается "вверх" при любой разумной длине цепочки.

P.S. С учетом "костыля" баг жить не мешает, но если указано "полная связь" - она должна быть полной, вроде бы так.
P.P.S. Пользуясь случаем, хочу выразить благодарность Роману и др. разработчикам системы за титанический труд и открытость системы! Успехов в развитии!
Written on: 11. 04. 2016 [12:16]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"Syberian" wrote:

По цепочке 1-2-3 значение Freq проходит, а "против шерсти" (при редактировании fazan/config_panel/Freq) - меняется только сам атрибут в п.3., несмотря на указание "полная связь" по всей цепочке.

P.S. С учетом "костыля" баг жить не мешает, но если указано "полная связь" - она должна быть полной, вроде бы так.

У меня запись по двум ссылкам прекрасно работает, причём проверить это можно на тестовом кадре элементов формы.

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

Не ошибка!

"Syberian" wrote:

P.P.S. Пользуясь случаем, хочу выразить благодарность Роману и др. разработчикам системы за титанический труд и открытость системы! Успехов в развитии!

Пожалуйста.

Learn, learn and learn better than work, work and work.
Written on: 13. 04. 2016 [11:52]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"roman" wrote:

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

2016-04-13 Roman
- !:UI.VCAEngine: Force inheritance of links types is added, independent from the attribute local modification.
Mostly for prevent the link's type changing lost, as significant one, into the modified attributes.

Learn, learn and learn better than work, work and work.
Written on: 16. 04. 2016 [09:28]
Syberian
Oleg Dontsov
Topic creator
registered since: 11.04.2016
Posts: 3
Действительно, проблема возникала из-за отсутствия наследования "полноты" доступа к атрибуту (и моей невнимательности): я добавил в контейнер библиотечный виджет с атрибутом типа "вход", а потом в библиотеке при доработке изменил атрибут виджета на "полный". На контейнер изменения не ушли - вот и Read only. Надо было перепроверить по всему дереву.

Обновил сборку 2340->2359.
Подтверждаю, теперь наследование типа доступа атрибута работает: при изменении виджета в библиотеке, тип доступа к атрибутам меняется на всех содержащих этот виджет контейнерах.
Спасибо за оперативность!



10238