Как по "полю ввода" определить имя колонки табличного поля #689550


#0 by andryuhin
Всем привет. Есть процедура, которая вызывается при изменении реквизита колонки табличного поля.   В процедуру передается сам элемент управления, т.е. "ПолеВвода". А как определить имя колонки? (вариант с обращением к имени ТекущейКолонки НЕ предлагать! Не тот случай, т.к. процедура не всегда вызывается интерактивно)
#1 by Ерепень
элемент управления и не интерактивно?
#2 by andryuhin
Иногда НЕ интерактивно
#3 by andryuhin
Вопрос остается:   как по элементу управления получить колонку табличного поля, с которой этот элемент связан.
#4 by Пятница Мен
реквизита колонки табличного поля - как не интерактивно? может реквизит не табличного поля, а чего то другого?
#5 by andryuhin
Вот именно табличного поля, будь он не ладен
#6 by Пятница Мен
каким образом он может меняться не интерактивно? он привязан к данным?
#7 by andryuhin
Да, к данным привязан. Я уже сам запутался.  На пальцах попытаюсь озвучить. Есть документ с табличной частью. Табличная часть содержит колонки (реквизиты документа, вроде номенклатура, цена, кол-во, сумма. Все просто.).  Есть процедура "РасчетСумм", которая вызывается при изменении реквизитов в табличной части. В эту процедуру передается элемент управления. Нужно узнать, какой реквизит вызвал процедуру.
#8 by Повелитель
Ну так ТекущейКолонки.Имя Цель то озвучь, а то похоже на бред
#9 by andryuhin
В документе есть кнопка Заполнить, с ней связана процедура "Заполнить". Из нее тоже вызывается "РасчетСумм".
#10 by andryuhin
Задача сводится к следующей: До элемента управления я достучаться могу: ЭлементыФормы.ИмяТабличнойЧасти.Колонки.Номенклатура.ЭлементУправления А вот как имея "ЭлементУправления" получить его родителя, в приведенном примере "Номенклатура"
#11 by 1Сергей
.Родитель
#12 by Повелитель
Ну так:
#13 by andryuhin
не катит. Нет у поля ввода такого свойства и метода. да, похоже, что этот способ и остается. Делать через 2 процедуры, а не через 1. Спасибо.
#14 by andryuhin
А вот еще один способ додумал:
#15 by Рэйв
Поставь в ячейку свой обработчик ПриИзменении и не парь себе моск.
#16 by Рэйв
тогда ты точно будешь знать какая колонка вызвала процедуру
#17 by andryuhin
Нужно, чтобы во всех ячейках стояла ОДНА процедура, а не 15 штук для каждой ячейки. Так удобнее при связанных расчетах, когда предыдущая ячейка вызывает пересчет последующих.
#18 by zakidonoff
Никак. Если встаёт такая необходимость, значит такой код=гавнакод
#19 by Рэйв
Сделай одну БОЛЬШУЮ процедуру пересчета всего что там у тебя есть, а в процедурах ПриИзменении ячеек просто ее вызывай.
#20 by George Wheels
Может ПриВыводеСтроки?
#21 by andryuhin
Ух ты, уже и принюхался. Поздравляю с хорошим обонянием. Или ты на вкус определил? В любом случае приятного аппетита. Все, работает. Спасибо за помощь. Код из поста катит. И из поста тоже.
#22 by andryuhin
Так так и сделано в самом начале.  Одна БОЛЬШАЯ процедура, которая вызывается ПриИзменении ячеек. НО засада была в том, что эта же процедура вызывается не интерактивно при автопересчете по отдельной кнопке
#23 by Рэйв
Да какая разница если она все пересчитывает?
#24 by andryuhin
НЕТ не все.  Только ячейки с 3й по 15ю, или например с 10й по 15ю. В зависимости от того, на какой ячейке стартанули
#25 by НЕА123
.Подсказка
#26 by palpetrovich
как вариант, если сильно надо:
#27 by andryuhin
Да, это и предлагали в посте . Оно самое.  Тем не менее, спасибо.
#28 by zakidonoff
Просто ты нарушаешь базовые принципы. Любая дочерняя функция или процедура должна быть предельно "тупой". Всё, что можно посчитатьзадать в родительской процедуре, должно быть задано в ней. В твоём случае - это имя колонки. "Откуда считать" должно определяться не в "одной БОЛЬШОЙ процедуре", а там, откуда она вызывается.
#29 by andryuhin
мммм, чтобы не вдаваться в полемику лучше приведу свою проблему: Есть 15 колонок. На каждой колонке своя формула. Меняем значение 1й колонки, должны пересчитаться все до 15й.  Меняем 2ю, должны пересчитаться со 2й по 15ю и т.д. Вполне логично иметь ОДНУ процедуру, описывающую логику расчета всего документа. В результате этот алгоритм расчета можно вызывать как интерактивно (пользователь меняет значение ячейки), так и при неких общих расчетах для всех строк табличной части. В результате не плодится множество процедур, вся логика в одном месте и в нее при необходимости просто вносить изменения. ------ Может я действительно мудрю, предложи вариант, как это реализовать проще.
#30 by zakidonoff
... КонецПроцеДуры
#31 by andryuhin
Да, это сработает, но в таком подходе есть минус (во всяком случае для меня). В модуле много процедур, что не гут для "читаемости" кода. Лишний не нужный код. Хотя по сути все то же самое.
#32 by zakidonoff
А как ещё ты инициируешь срабатывание события по клику на ячейку? Через процедуру изменения таб.поля?
#33 by zakidonoff
Ну так 12 тогда тебя абсолютно всем устраивать должен. Читаемость это абсолютно не портит. Или ты хотел сразу событие на изменение в ячейке кидать на процедуру расчётссумм? -) Это явно не тру - запутаешься в условиях только.
#34 by andryuhin
да, так и делал. Событие на изменение в ячейке сразу кидал на "РасчетСумм".
#35 by andryuhin
все верно, вариант из вполне устраивает. (хотя в итоге стал использовать свой с вызовом события из ячейки на "РасчетСумм" и определением внутри, какая ячейка вызвала)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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