Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
ThisWindow.Init PROCEDURE
...
ReturnValue = PARENT.Init()
...
! BIND variables (Вроде человеческим языком написано наименование Embedd)
Bind('TV1',Tov:Valuta) ! РАБОТАЕТ
BindExpression('TV2','Tov:Valuta + 1') ! НЕ РАБОТАЕТ - именно привязка выражения, а не рассчитанного значения
...
Relate:Tovar.Open
BindExpression('TV2','Tov:Valuta + 1') ! А ЗДЕСЬ ПРЕКРАСНО РАБОТАЕТ
Т.е. складывается такое интересное впечатление, что для BindExpression() привязка наименований
полей таблицы выполняется только при её открытии … Так и должно быть ?
Могу только подтвердить ситуацию. При этом evaluate честно сообщает об ошибке 1011. Налицо ущербность BindExpression. Грубовато, скорее надо бы в документации отобразить нюансы. Работает не так как Bind.
kreator писал(а): ↑29 Апрель 2019, 14:59Могу только подтвердить ситуацию.
Тут похоже, что снова чудны дела рук детей твоих, господи …
Уже понятно, что пространство имён из полей таблиц создаётся в методе их открытия, никто и не против.
Но тогда вставка Embed для BIND должен идти после открытия таблиц и надо написать в справке о том,
что именно "поля ОТКРЫВАЕМЫХ таблиц доступны для BIND" - и не было бы вопросов.
Нужно запомнить, где лежат ещё одни грабли и просто их обходить.
kreator писал(а): ↑29 Апрель 2019, 17:19Или не так понял?
Абсолютно правильно поняли. Но потом подумал, и понял, что видимо BindExpression - это просто надстройка над Bind.
А сам Bind ведь не использует символьные имена, он их объявляет. Поэтому говорить о расхождении разного - не смысла.
Есть в какой-то таблице Tovar поле Tov:Number. Если посмотреть описание - то получается, что имя "Tov:Number" объявлено
всегда и везде … Но это не так. Получается, что имя "Tov:Number" действует только после открытия файла Tovar в потоке.
Но почему тогда embed для BIND находится до открытия файлов ? Вот непонятность где подкралась …
Хотя, с другой стороны, это я решил, что объявлять BindExpression логично там же где и штатные BIND.
А архитектор шаблонов ABC, судя по всему, предполагал иное.
finsoftrz писал(а): ↑29 Апрель 2019, 20:37Хотите поговорить об этом?
Неа. Абсолютно чужая для меня тема. Много-много лет назад я ШВС внимательно просмотрел и удалил.
Для тех кто работал под CPD2.1/3 вопрос заброшенных разработчиком самопальных шаблонов был не особо приятным.
Но безусловно, механизмы реализации того или иного функционала в Clarion знать надо и в этом очень помогает
изучение как шаблонов, так и исходников ABC. Просто не всегда понятно почему что-то так или иначе сделано и работает ...
Игорь, это не совсем верная информация. ШВС - русифицированные группой интузиастов классические шаблоны, которые в дальнейшем, прежде всего усилиями Вадима Синявского, получили значительное функциональное развитие. В конце 90-х были самыми продвинутыми шаблонами для клариона.
Когда я в 2003 году смотрел кларион на предмет целесообразности его использования, то в ABC я не понял ничего. Конечно, сейчас, имея опыт разработки, я уже понимаю, как там устроено, знаю про виртуальные методы, условную кодогенерацию и т.п. Но сходу впечатления были отвратные. И в плане общего понимания, и в плане предлагавшегося функционала. Потом я открыл ШВС, попробовал что-то сделать, и получилось. Я смотрел сгенеренный шаблонами код и быстро схватывал, что и как работает. Дальше попробовал писать шаблоны. Поскольку функциональная планка была высокая, даже ШВС не дотягивали до нужного уровня и требовалось их значительное расширение. Написал один шаблон, второй. Оказалось, что можно в словаре задавать различные пользовательские опции, а затем полностью автоматически создавать большой слой кода, как для имеющихся таблиц, так и для тех, которые появятся в будущем. Оказалось, что можно обычным способом создавать оконные процедуры и навешивать в них шаблоны, которые просвечивают словарь. Так появилась большая стандартная app, на которой базируется фреймворк и которая может подключаться в разные проекты. А число дополнительных шаблонов постепенно перевалило за полторы сотни. По прошествию многих лет, когда шаблоны практически не модифицируются и многие тонкости забываются, всегда можно открыть их сырцы, посмотреть сгенеренный результат и быстро все вспомнить. Позже появилась технология визардов. Оказалось, что можно по определенным правилам разработать какую-то оконную процедуру, сохранить ее в txa, а затем несколькими небольшими заменами в txa создать специализированный визард для диалогов с мощным функционалом. Вначале весь код делался в привычной процедурной манере, затем стало все больше классов. Одно другого не исключает.
Конечно, ШВС не идеальны. В них много не хватало, были также унаследованные от базовых clarion шаблонов не очень удачные решения. Например, генерация кода добавления записи в form шаблоне, вместо того, чтобы вынести в отдельную процедуру, как сделано для удаления или модификации записей. Все это пришлось дорабатывать.
По состоянию на сегодня, шаблоны ШВС со всеми расширениями без проблем работают в последних версиях клариона. У меня модифицируются они крайне редко, так как все, что нужно, давно написано и отлажено. И они остаются очень прозрачны для понимания как текста самих шаблонов, так и создаваемого ими кода. В этом их несомненное преимущество. Объем кода, создаваемого ШВС, заметно больше объема кода, создаваемого ABC. Программы работают несколько быстрее.
finsoftrz писал(а): ↑30 Апрель 2019, 8:57
Объем кода, создаваемого ШВС, заметно больше объема кода, создаваемого ABC. Программы работают несколько быстрее.
Спасибо - я прочитал. Вот этот хвостик сообщения - можно сказать про любое объектно-ориентированное программирование.
Это хорошо, что у Вас есть желание, взяв некие шаблоны за основу, далее их самостоятельно поддерживать и развивать.
А я вот наоборот, поставил себе великую задачу - до нового десятилетия выкосить из проектов все заброшенные разработчиками
библиотеки и шаблоны. И далее уже не париться с совместимостью кода и поддержкой всего этого рудимента. Большая работа !
Шаблоны поддерживать и развивать практически не требуется, они достигли необходимого уровня стабильности. К слову, я, можно сказать, не использую библиотеки и шаблоны от сторонних разработчиков. Исключение составляет FRB. Хотя давно есть более функциональный аналог, но очень много бланков. И, таки да, большинство проблем связано с интеграцией библиотек и шаблонов от сторонних разработчиков. Но тут особого выбора нет, или пиши сам, или пользуйся тем, что дают/продают. У обоих подходов есть свои сторонники.
Уточню, я имел ввиду закрытые библиотеки от сторонних разработчиков. Те, которые с сырцами, используются, но тоже, по возможности, в минимальном объеме.
Игорь Столяров писал(а): ↑29 Апрель 2019, 19:20
Хотя, с другой стороны, это я решил, что объявлять BindExpression логично там же где и штатные BIND.
А архитектор шаблонов ABC, судя по всему, предполагал иное.
Для меня логично, что объявлять BindExpression там же где и BIND. Но здесь дело не в объявлениях и шаблонах. Мой ручной не работает так как я ожидаю (При не открытом файле BindExpression). Смутно помню, что BindExpression появился позднее Bind, возможно криво реализовали, или ещё какая-то муть, может, действительно, надстройка. В любом случае - плохо, что в хелпе этих нюансов нет.
Игорь Столяров писал(а): ↑29 Апрель 2019, 20:03
Так вроде тот бобик давно уже сдох … Кто юзает ШВС в 2019 г. и зачем ?
Я как появилась возможность слезть с Легаси сразу слез. Вадим Синявский не говорил почему кинул шаблоны? Почему не стал ABC-шаблоны расширять?