Как отловить добавление строки в табличную часть в форме? #170053


#0 by Гений 1С
Вот во всяких подборах любят добавлять строки в форму в табличную часть. Как отловить программное добавление строки в форму? А заодно можно ли отловить изменение в конкретной ячейке?
#1 by Гений 1С
В ячейке - программное изменение имеется ввиду...
#2 by Vozhd
ПриИзмененииДанных не работает?
#3 by Гений 1С
неа, не работает - ни при программном, ни при интерактивном добавлении. Я попробовал ПриПолученииДанных - она срабатывает для каждой строки, видимой в форме, но если строки добавляются за пределами видимости (слишком много строк), то естественно это событие не возникает.
#4 by dimoff
через ПодключитьОбработчикИзмененияДанных
#5 by Гений 1С
Тоже пробовал, замечательно работает для ручной правки: Но на программное изменение не реагирует.
#6 by Гений 1С
Вот еще вопрос возниг, коспода - в той же теме. Мне нужно для каждой строки документа хранить вспомогательные данные типа структура, как это можно обеспечить? Завести вспом.таблицу и связываться по индексу строки не хочется - если строку удалить, все полетит нафиг.
#7 by dimoff
При удалении строки удаляй элемент массива данных, тогда ничего не полетит
#8 by Гений 1С
Надо еще следить за соответсвием, эх, а по грамотному низзя???
#9 by dimoff
Не вижу в этом ничего неграмотного и про соответствие не понял
#10 by Гений 1С
ну ты согласен, что мне надо отслеживать удаление? А это криво
#11 by Гений 1С
То бишь слишком сложно для задачи связывания двух таблиц по индексу
#12 by dimoff
Согласен что надо отслеживать удаление, значение слова "криво" не понимаю.
#13 by Гений 1С
Объяснил в 11
#14 by dimoff
Лучше б не объяснял
#15 by Vozhd
А у меня работает. И при ручном изменении и при программном. Что я делаю не так?
#16 by Гений 1С
Погоняй этот код, у меня не пашет:
#17 by Гений 1С
при программном добавлении событие  ИзменениеДанных не вызывается, при интерактивном - вызывается
#18 by Vozhd
А почему этот код должен работать? Отслеживаются изменения не тех данных, вот и не работает...
#19 by Гений 1С
Вождь, будь другом, подскажи тупому, что надо поправить
#20 by Гений 1С
ПодключитьОбработчикИзмененияДанных("ЭлементыФормы.ТЧ.ТекущиеДанные", "ИзменениеДанных", истина); - тоже не работает.
#21 by х86
а если использовать Структура или соответствие с ключом - СтрокаТЧ ? тогда при удалении не надо будет отрабатывать удаление из структуры. Хотя не факт что взлетит
#22 by Гений 1С
такая мысль была, но выборка по конкретному номеру быстрее, чем поиск по ключу. :) Пока что то, что вы предлагаете в - самое оптимальное.
#23 by Vozhd
ПодключитьОбработчикИзмененияДанных("ЭлементыФормы.ТЧ", "ИзменениеДанных", истина);
#24 by Гений 1С
Вождь, ты просто гений, но ты знаешь, не взлетело!!! Не работает и такой вариант, я его проверял, кстати. Вот все варианты, что я проверяю:
#25 by Гений 1С
#26 by Гений 1С
Что, Вождь, теория вошла в противоречие с практикой? Бывает...
#27 by Vozhd
А у меня не только взлетает, но и не падает. Может это от того, что я не гений?
#28 by Vozhd
Понял с чем связаны проблемы. Если у объекта нет свойств, то и изменения данных не зафиксировать. У табличных частей свойств нет, а у многих других источников данных для табличный полей свойства есть... Так что придется Вам на время забыть о событиях...
#29 by Гений 1С
Что за свойства? Не очень понял, разжуйте плиз мне глупому...
#30 by Гений 1С
"табличных частей свойств нет, а у многих других источников данных для табличный полей"  - распишите эту фразу правильно, непонятно
#31 by Гений 1С
Кстати, при интерактивном изменении-то все работает... :(
#32 by Гений 1С
Попробовал добавить Реквизит3 типа Номенклатура - все то же самое.
#33 by Vozhd
У табличной части нет свойств. Нет свойств, значит нет данных. Нет данных, значит нет и их изменения. У табличного поля свойства есть. Например, ТекущаяСтрока. При интерактивном вводе новой строки, значение свойства ТекущаяСтрока изменяется, следовательно происходит изменение данных, а раз подключен обработчик, то он вызывается...
#34 by Vozhd
Например, у отборов свойства есть, а раз так, то изменение данных будет вызываться хоть при програмном, хоть при интерактивном изменении.
#35 by Гений 1С
Мда, логика платформы понятна, хоть и крива... :( С мечтой о красивой обработке событий формы придется расстатца. :(
#36 by Гений 1С
Я бы еще смирился с необработкой добавления новой строки, но вот если программно меняются ячейки ТЧ, это не отлавливаетца. Пичально.
#37 by Vozhd
Напишите свои процедуры для работы с табличными частями (добавление строк, удаление строк, изменение ячейки и т.д.) и работайте через эти процедуры.
#38 by Гений 1С
Вождь, как обойти, я знаю, но все способы - кривые. Вообще проблема касается того, что например в типовой в поступление добавляется строка подбором (программно) и мне еще нужно выискивать всевозможные способы программного изменения табличных частей
#39 by Vozhd
А может не надо напролом лезть со своим пониманием логики в чужую программу? Может сначала изучить логику авторов?
#40 by Гений 1С
Извиняйте - работа такая - тюнинг типовых. В моем случае надо реагировать на изменение номенклатуры любым способом.
#41 by Vozhd
Ну что ж, вам, гениям, виднее...
#42 by Гений 1С
Аминь, RIP
#43 by Гений 1С
Пардон, вопрос не исчерпан... В твоей логике есть небольшой изъян. При программном изменении не вызывается: ЭлементыФормы.ТЧ.ТекущиеДанные.Реквизит1 Зато при интерактивном вызывается: ЭлементыФормы.ТЧ.ТекущиеДанные.Реквизит1 По логике они должны или оба не вызываться, или вызываться всегда. Обоснуй!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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