Не срабатывает BIND

已查看 13 次
跳至第一个未读帖子

Анатолий Долидович

未读,
2024年3月6日 07:44:243月6日
收件人 cla...@googlegroups.com
Здравствуй, Clalist.

По какой причине может не срабатывать BIND(Group)?
У меня в двух приложениях производится BIND записей файлов (структура RECORD) и групп локальных переменных.
Динамические выражения по Evaluate отрабатывают.
Перенес в третье приложение, а там BIND не срабатывает ни на RECORD, ни на группу локальных переменных.
Последующие  Evaluate выводят ошибку 1011.
Объявления переменных в дипамических сделаны как полагается, через префикс с двоеточием. Атрибут Bindable у файла есть.
Второй день сижу, читаю, нигде ничего не могу найти.
Может в общих свойствах приложений и/или словарей что-то такое неуловимое есть?

-- 
С уважением,
 Анатолий                          
mailto:anatoli.d...@asb.by

Анатолий Долидович

未读,
2024年3月6日 07:47:003月6日
收件人 cla...@googlegroups.com
Уточняющая информация: Clarion 6.3.9059, ШВС.

Alexander Strumensky

未读,
2024年3月6日 17:47:183月6日
收件人 cla...@googlegroups.com
если используется UNBIND - убрать, лучше использовать PUSHBIND/POPBIND

ещё могу посмотреть что происходит, если вышлите CLW и OBJ где не срабатывает - могу покопаться немного

--
Вы получили это сообщение, поскольку подписаны на группу ClaList.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msgid/clalist/1748830745.20240306154656%40asb.by.

Анатолий Долидович

未读,
2024年3月7日 00:58:153月7日
收件人 cla...@googlegroups.com
Добрый день всем!

Ситуация следующая. Мне досталось по наследству 4 приложения. Бизнес-аналитик по этим задачам замутил тему перехода в печати договоров страхования
на HTML-шаблоны. В двух приложениях все заработало на ура. Соответствующий фрагмент кода WORK.CLW прилагается. Это исходник функции, которая берет
HTML-файл и делает в него вставки данных в определенные места. Эта технология в моих разработках работает не только в этих приложениях.
В силу специфики (печать в бланк) одно приложение из этого списка выпало. Осталось последнее, соответствующая функция в котором не работает (DO NOT WORK.CLW).
Точнее, не работает вставка данных, основанная на выполнении динамических выражений из-за того, что BIND почему-то не работает.
Прилагаю еще фрагмент шаблона договора, для понимания что в нем за выражения.
Ничего сложного тут нет.
Но, как говорится, найдите 5 отличий :)

Буду весьма признателен за помощь. Хотя сроки и не горят, я всю эту неделю трахаюсь с этой долбаной ошибкой.

ЗЫ В новой задаче по этому приложению кардинальнопоменялся договор. Так вот до этого момента договор был оформлен в виде процедуры Report, пеерписывать который - 
так лучше сразу из окна выпрыгнуть.


-- 
С уважением,
 Анатолий                          
mailto:anatoli.d...@asb.by
Work.clw
Do not work.clw
dogovor.html

Vadim Sinyavskiy

未读,
2024年3月7日 02:48:563月7日
收件人 cla...@googlegroups.com
Тут сложно что-то сказать без общей картинки (глобальных деклараций ect), но вот код из "Do not work.clw"
  PUSHBIND
  OpenFile:SPR_DK
  OpenFile:SPR_SOR
  FilesOpened = True
  bind(zod:record)
  bind(Locvars)
  retval=1
  close(wintext)
все же немного смущает... Ибо что там за структуры используются при открытии-закрытии структур и что байндится - мягко говоря неочевидно, но вот байндить, а потом закрывать структуру - вот как-то не комильфо. Как-то наталкивает на мысль о не самом правильном построении логики работы с данными... Тем более, что в "Work.clw" это логика реализована более корректно: открыли структуру -> забайндили переменные/группы -> наслаждаемся позитивным результатом


чт, 7 мар. 2024 г. в 07:58, 'Анатолий Долидович' via ClaList <cla...@googlegroups.com>:
--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/535245845.20240307085810%40asb.by.

Анатолий Долидович

未读,
2024年3月7日 04:41:033月7日
收件人 cla...@googlegroups.com
В обоих клашниках:
Объект wintext - это ASCII-файл в кодировке 1251;
Locvars - это группа локальных переменных функции PrintHTMLDog;
ZOD, PON, ZOK - это собственно базы данных из которых печатается договор. Префиксы точно такие же как и имена баз данных.
Глобальные свойства приложений одинаковые.
Вызовы функции PrintHTMLDog одинаковы.
Тля, а работать в последнем модуле не хочет.
Хотя сколько раз уже такое со мной было здесь - чего-то не заметил сразу, потом исправил, и все нормально стало :)

-- 
С уважением,
 Анатолий                          
mailto:anatoli.d...@asb.by

Oleg Fomin

未读,
2024年3月7日 06:19:423月7日
收件人 cla...@googlegroups.com

По предоставленным очень неполным исходникам действительно сложно с ходу поставить диагноз. Я бы попросил подготовить максимально изолированное рабочее приложение, демонстрирующее проблему, завернуть в зип и выложить на любой общедоступный ресурс, либо таки вложить сюда. Как правило, в процессе такой подгтовки (отсечения всего лишнего) причина становится очевидна и вопрос решается самостоятельно. Если что, конечно поможем.

--

Анатолий Долидович

未读,
2024年3月7日 07:32:173月7日
收件人 cla...@googlegroups.com
К сожалению, не получится почистить исходник настолько чтобы его можно было выложить для диагностики.
Я уже думал над этим. Надо переписывать кучу кода чтобы заглушки можно было поставить, и то я не уверен что все выйдет так как надо.
В общем прошу у всех прощения за беспокойство и считаем тему закрытой.

-- 
С уважением,
 Анатолий                          
mailto:anatoli.d...@asb.by

Александр Агеев

未读,
2024年3月7日 11:36:193月7日
收件人 cla...@googlegroups.com
У меня 11 лет назад была подобная проблема, но точно уже не помню
Сейчас порылся в старых сырцах, нашел несколько рекомендаций самому себе
Какая именно рекомендация сработала - уже не помню

1. Не делать даже условного return до BIND
Т.е. 
i = 1
If i = 0 THEN RETURN
Bind(myRecord) ! может упасть при первом обращении в evaluate
Это результат клашиного оптимизатора

2. Не биндить структуры с указателями

3. Не биндить структуры с подструктурами

4. Не обращаться в evaluate к переменным под Over

Ограничения я обошел создав дублеры нужных файлов

чт, 7 мар. 2024 г. в 19:32, 'Анатолий Долидович' via ClaList <cla...@googlegroups.com>:
--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/725710564.20240307153212%40asb.by.

Анатолий Долидович

未读,
2024年3月11日 01:53:303月11日
收件人 cla...@googlegroups.com
Здравствуйте, Александр.

Огромное спасибо за подсказку в виде списка.
Проверил все.
Структуры, которые биндятся, представляют собой обычные Group и Record, без подструктур, без использования Over и указателей.
А вот return в виде do procedurereturn в коде в районе BIND был.


-- 
С уважением,
 Анатолий                          
mailto:anatoli.d...@asb.by

Анатолий Долидович

未读,
2024年3月11日 05:23:203月11日
收件人 cla...@googlegroups.com
Огромное всем спасибо за поддержку.

Собственно говоря, даже не пойму, мой это был косяк или нет. Скорее всего да.
Я пользовался своими предыдущими наработками, которые незначительно отличались от текущей.
BIND по локальным переменням производился, но так получилось, что самая первая переменная в локальнйо группе из-за нюансов некорректно формировалась и портила всю картину.
Я посмотрел как было сделано в другом модуле, перенес все оттуда, и пусть не сразу, но заработало так как надо.
Потом еще оказалось, что в шаблоне договора нашлись две ошибки.


-- 
С уважением,
 Анатолий                          
mailto:anatoli.d...@asb.by
回复全部
回复作者
转发
0 个新帖子