уничтожение переменных в 1С 7.7 #163531


#0 by homa
Делаю обработочку, использую две таблицы на форме. Нужно их связать (нормальным реляционным образом - главная-дочерняя). Для этого нужно отлавливать смену строки таблицы. Ничего лучше не нашел как отлавливать нажатия клавиш внешней компонентой GHOST.DLL. И все бы хорошо, но эта сволочь (я имею ввиду GHOST-а) цепляется в памяти и не дает 1С-у закрыться. Формально окно программы закрывается, а фактически процесс в памяти остается. Приходится ручками его через Task Menedger убивать. Так вот - я перелопатил ЖКК и впервые за столько лет (!) :) :( узнал, что в 1С напрочь отсутствуют средства удаления ненужных переменных. Это действительно так или я плохо искал?
#1 by Simod
"..две таблицы на форме" - это как?
#2 by Любитель XML
а чё мешалет кинуть функцию на форму (будет отрабатывать при любом изменении) и смотреть - поменялась строка таблицы или нет? Если поменялась, то дочерную таблицу перезаполнить, если же ТекущаяСтрока = строке в данный момент, то оставлять без изменения. Я так делал и по 3 таблицы на форме, тормозов не замечалось.
#3 by insider
нафига здесь dll? вешаешь на форму реквизит типа текст с функцией (передавать текущую строку ТЗ), запоминать старую строку в переменной модуля (чтоб не отрабатывалось чаще, чем надо) и все...
#4 by Любитель XML
сначала надо сделать, а потом подумать. :)
#5 by insider
разве что :)
#6 by dk
Один нюанс (2, 3) не отлавливает изменение текущей колонки, но в это наверно и не надо
#7 by insider
передаем вторым параметром и ее...
#8 by Удивленный
А по поводу убития несчастных переменных конструкция ПеременнаяДляУбийства = ""; разве не работает?
#9 by dk
Передать то можно, вот только событие не отрабатывает при смене колонки
#10 by insider
dll могут не выгружаться из памяти, бывает...
#11 by insider
да ну?..
#12 by Ангел-Хранитель
"отлавливай нажатия клавиш" с помощью FormEx.
#13 by orefkov
Поосторожнее со словом "сволочь". Объект "Addin.GhostService" должен создаваться ОДИН раз, в ГМ, в ПриНачалеРаботыСистемы, вся дальнейшая работа только ЧЕРЕЗ этот ОДИН объект. Сделаешь еще раз СоздатьОбъект("Addin.GhostService"), получишь то, что имеешь.
#14 by dk
Проверь
#15 by homa
Ща попробую... Этот вариант я в ФАК-ах вычитал, но так и не въехал что за что там цепляется и где собственно инициируется обновление... Действительно - не надо.
#16 by homa
Не понял вопроса... Это ж обработка, не документ - в ней табличной части нет. Сам ТЗ создаешь и сажаешь на форму - хоть десять.
#17 by insider
если хотя бы раз перескочили на вторую строку ТЗ - отрабатывается, так что мы оба частично правы :)
#18 by homa
Вот, оказывается, где собака порылась! Я же не хочу глобальный модуль портить, делаю внешнюю обработочку. Получается, что ее нельзя дважды запускать - обязательно выходить из 1С после каждого юзанья. Увы, меня это не устраивает.  А на "сволочь" не обижайся - я же от чистого сердца! :))
#19 by homa
Э... Хм... Э... Не подскажешь, что значит "кинуть функцию на форму"?
#20 by GrayT
Текстовый реквизит на форму, в свойствах в формуле пишешь свю функцию
#21 by insider
в тоже непонятно?
#22 by homa
я же говорю - непонятно в какой момент запускается эта функция - кто ее пинает? "любое изменение"? Я всегда считал, что это функция для обработки результата редактирования. Т.е. запустится она после активации реквизита и нажатия в нем Ентера. Буду проверять...
#23 by homa
+22 Все, въехал. Речь о текстовых реквизитах, а не о полях ввода. Спасибо всем.
#24 by Любитель XML
ты не прально понял. Вставляешь какой-нить текст на форму, у него в формуле прописываешь функцию, в которой у тебя и будет всё что тебе надо. Посмотри в ТиСе в невидимом слое есть такая штука (в Реализации)
#25 by homa
Млин! Дешево и сердито! Сделал все, что хотел. Тормоза все-таки обнаружились - если в дочерней таблице нет соответствия, то поскольку поиск выполняется простым перебором - перебирается вся таблица. Около 3000 строк - задержка в полсекунды, но раздражает. Автора одинэйсика за яйца бы подвесил - столько лишних телодвижений ради элементарнейших вещей!
#26 by Rovan
а зачем "поиск выполняется простым перебором" ?
#27 by Andy13
УдалитьОбъекты(<Объекты>,<Проверять>,<Ссылки>) не пробовал?
#28 by homa
Потому что в 1С нет аналога "seek all for FAMILY=[Иванов] and NAME=[] and ..." Не пробовал, бо по описанию это программный аналог кнопки Del, т.е. удаление документов,, элементов справочников, объектов вобщем...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С