Текущая строка #641013


#0 by mrParadox
Хочу установить текущую строку тебличного поля. НужнаяСтрока в отладке устанавливается. При установки текущей строки возникает ошибка: ---------------- {Форма.Форма.Форма}: Ошибка при установке значения атрибута контекста (ТекущаяСтрока)    ЭлементыФормы.ТаблицаЗаявок.Текущаястрока = НужнаяСтрока; по причине: Невозможно изменить текущую строку ---------------- Что я делаю не так?
#0 by mrParadox
Хочу установить текущую строку тебличного поля. НужнаяСтрока в отладке устанавливается. При установки текущей строки возникает ошибка: ---------------- {Форма.Форма.Форма}: Ошибка при установке значения атрибута контекста (ТекущаяСтрока)    ЭлементыФормы.ТаблицаЗаявок.Текущаястрока = НужнаяСтрока; по причине: Невозможно изменить текущую строку ---------------- Что я делаю не так?
#1 by mrParadox
1С:Предприятие 8.2 (8.2.15.310)
#2 by Шапокляк
Ищи строку сразу в ЭлементеФормы и активизируй ее
#3 by mrParadox
Это как?
#4 by palpetrovich
проверь на всякий случай: Если НужнаяСтрока = Неопределено Тогда ну и так получается? ЭлементыФормы.ТаблицаЗаявок.Текущаястрока = ТаблицаЗаявок[0]
#5 by Шапокляк
#6 by mrParadox
Нужная строка точно не равна неопределено - в отладчике смотрю
#7 by mrParadox
Ошибка та же
#8 by Шапокляк
см 5
#9 by mrParadox
{Форма.Форма.Форма}: Метод объекта не обнаружен (Найти)
#10 by Reset
Ээээ? эээ
#11 by Галахад
А вообще в каком месте вызывается?
#12 by НЕА123
может отбор какой...
#13 by НЕА123
+1
#14 by mrParadox
В модуле формы. Процедура ТаблицаЗаявокПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ) После редактирования я перезаполняю заново таблицу (из СКЛ) и хочу сделать актичной строку на которую редактировал
#15 by palpetrovich
давай колись, что это вообще и где эта процедура :)
#16 by mrParadox
#17 by mrParadox
Я помню, что точно так раньше делал много раз, все работало
#18 by palpetrovich
наверное тут собака и порылась :) "ПередОкончаниемРедактирования" и "я перезаполняю заново таблицу"
#19 by Reset
Оно и должно работать вроде
#20 by mrParadox
Что не так?
#21 by mrParadox
к
#22 by Шапокляк
Извиняюсь, затупила.
#23 by НЕА123
надо ПРИ а не ПЕРЕД
#24 by mrParadox
ОбновитьТаблицу - загрузка таблицы из СКЛ после внесения в СКЛ изменений.
#25 by Rovan
ПередОкончаниемРедактирования курсор находится в строке и сменить ее не может !
#26 by Reset
Вот похоже на правду)
#27 by Aprobator
надо же было так найти место для перезаполнения то. Уметь надо.
#28 by Reset
да и подменять источник данных в момент их редактирования нехорошо
#29 by mrParadox
Сделал, ошибка пропала, но Текущая строка все равно не присваевается
#30 by Reset
Навреное, надо ПОСЛЕ :)
#31 by Reset
Вообще логику пересмотреть имхо
#32 by mrParadox
После нет
#33 by Aprobator
При , Перед - и там и там работать не будет. В событиях при работе со строкой в целом, форма такого безобразия особо не потерпит. Вот ПриПолученииДанных - другое дело. Но, имхо, надо сам процесс пересматриваться.
#34 by Aprobator
впрочем по поводу ПриПолученииДанных тоже могу ошибаться. Какой смысл всего этого безобразия по умолчанию то?
#35 by Aprobator
Работаешь с конкретной заявкой, так влепи отбор. Ну или сортировку там у таблицы то и вводи данные как тебе удобно.
#36 by sadden
для чего тебе устанавливать тек строку (что хочешь дать пользователю)? тогда можно подумать как реализовать
#37 by Reset
А нужно именно после. Не может сойти с текущего, пока редактирование не завершится. Решай как. Или "обновляй" таблицу так, чтобы текущая строка осталась в таблице - тогда и менять не нужно будет
#38 by Aprobator
события После нет для этого безобразия.
#39 by mrParadox
Данная таблица - отображение таблицы в МС СКЛ сервере с возможностью её редактирования. Если пользователь изменяет/добавляет новую строку в данную таблицу, то после этого таблица очищается и полностью перезаполняется. Соответственно курсор соскакивает с редактируемой строки и её приходится искать вручную. При болльших объемах возникает путаница и морока.
#40 by Reset
Я не говорю что есть событие. Я о хроно-точке во временном пространстве
#41 by Reset
А зачем при изменении одной строчки очищать всю таблицу?
#42 by sadden
воо - тут ключевое слово очищается
#43 by Aprobator
а - понятно, я как то более приземленно мыслю. из за добавления одной записи надо перезаполнять всю таблицу заново??? Что то явно не так в датском королевстве.
#44 by mrParadox
ПриПолученииданных не проканало, 1С стала вести себя неадекватно, по несколько раз вызывать одно и то же событие "ПередОкончаниемРедактирования" /"ПриОкончанииРедактирвоания"
#45 by sadden
кнешно у тебя не установит тек строку - строки то уже очистились и заполнились новыми
#46 by mrParadox
Чтобы наверняка быть уверенным, что те действия, которые осущестлялись, реально осуществились с базой СКЛ
#47 by Reset
В свете алгоритма решения, кто ведет себя адекватно - тот еще вопрос :)
#48 by mrParadox
Так я ищу нужную строку среди новых по коду и её пытаюсь сделать активной
#49 by Aprobator
+100500. Странное какое то добавление новой строки данных.
#50 by Reset
Ерунда какая-то. Записал строку в БД - проверяешь, записалась ли, чтоли? При этом чтением всей таблицы.
#51 by sadden
я не понял до конца зачем всё так, но могу предложить следующий механизм: после редактирования строки записываешь в глобал номер заявки, далее делаешь свои хитрые манипуляции с таблицей, в событии ПриПолученииДанных по глобалу находишь нужную строку и устанавливаешь её с очисткой глобала
#52 by mrParadox
Вполне сносный алгоритм. таблица СКЛ маленькая, чтение происходит мгновенно. Если бы не сложности с окончанием редактирования
#53 by mrParadox
Пробовал , см.
#54 by sadden
у меня всё получилось
#55 by mrParadox
Ок, после обеда еще раз попробую :)
#56 by Reset
Ищи, не ищи, как совершенно верно заметили в , НЕВОЗМОЖНО сменить текущу строку. Когда ты суп ложкой ешь, ты НЕ МОЖЕШЬ взять другую ложку, пока из рта ее не вытащищь, хоть двадцать раз ты ее найди глазами или руками или чем там ты раьоту работаешь
#57 by Aprobator
ну если только от слова снести. Вообще с помощью 1С напрямую редактировать СКЛ таблицу - вставляет.
#58 by mrParadox
Код кинь, может я чё не так делаю?
#59 by mrParadox
к
#60 by НЕА123
Синтаксис: ПриОкончанииРедактирования(<НоваяСтрока>, <ОтменаРедактирования>) Параметры: <НоваяСтрока> Тип: Булево. Признак редактирования новой строки. Имеет значение Истина, если строка была добавлена или скопирована. <ОтменаРедактирования> Тип: Булево. Истина, если произошла отмена редактирования. Значение по умолчанию: Ложь Описание: Возникает ++++++++++++++++++ПОСЛЕ++++++++++++++++++ окончания редактирования строки табличного поля. Примечание: Возникает, если редактирование производится непосредственно в табличном поле. См. также: ТабличноеПоле, событие ПриНачалеРедактирования
#61 by НЕА123
гм... грязновятенько получится.
#62 by НЕА123
хз. когда новая строка, то ее, скорее может и не быть.
#63 by Reset
Я попробовал. Если в этом событии переустанавливать, ошибки не возникает, но текущая не меняется. Видимо, несмотря на то, что возникает "после", состояние редактирования еще остается "активным"
#64 by Reset
+ при ОтменаРедактирования=Истина, однако, работает (смена текущей)
#65 by sadden
он таблицу очищает, не сработает так
#66 by sadden
сделай так:
#67 by sadden
работает, проверял
#68 by mrParadox
а процедура ОбновлениеОтображения откуда вызывается?
#69 by Reset
Это событие
#70 by sadden
это стандартное событие формы, глянь в свойствах твоей формы
#71 by Rovan
делай через ОбработкуОжидания с интервалом 0.1 сек
#72 by sadden
- зачем? только систему нагрузит
#73 by mrParadox
Точняк, работает. Спасобо большое. Думал над этим вариантом, но попробовать не успел.
#74 by mrParadox
Можно сделать чтобы единовременно запускался, без повторов.
#75 by sadden
потом не факт, что перезаполнение таблицы уложится в 0.1 сек
#76 by mrParadox
я имел ввиду, что в "ПриОкончанииРедактирования" ставить обработчик ожидания для единоразового запуска
#77 by sadden
можно так, но тоже, ты же не знаешь момент времени, когда событие ПриОкончанииРедактирования отработает
#78 by sadden
а ОбновлениеОтоброжение аккурат сработает после ОкончанияРедактирования
#79 by Reset
Спасибо, мне оно не нужно ;) А будет нужно, разберусь :)
#80 by mrParadox
не сталкивался с таким событием. Век живи век учись.
#81 by mrParadox
я не тебе конкретно
#82 by mrParadox
Короче путаница пошла :)
#83 by Reset
Я тоже не тебе ;)
#84 by Reset
Это пофиг кстати, когда отработает. Но из двух зол через событие обновления - зло меньшее
#85 by sadden
как уж пофиг когда отработает событие ОкончаниеРедактирования, попробуй сделать через Оповестить, не сработает
#86 by sadden
или задержку сделать в ОкончаниеРедактирования так чтобы Обработчик раньше сработал
#87 by Reset
Я говорю что пофиг сколько он будет отрабатывать и все заполнения, выполняемые в нем - обработчик ожидания все равно запустится после этого
#88 by sadden
пробовал - не получилось
#89 by Reset
Чего не получилось? :- Яснее
#90 by sadden
нужно дождаться окончания события ОкончаниеРедактирования
#91 by Reset
Я в курсе, елки палки
#92 by Reset
и этого можно добиться, поставив одноразывый обработчик ожидания либо в событии обновления отображения. КЭП
#93 by sadden
в примере моём вместо ОбновленияОтображения после перезаполнения таблицы в ОкончаниеРедактирования делал Оповестить
#94 by sadden
на какое время ставить ОбработчикОжидания от куда ты можешь узнать?
#95 by Reset
Пофиг на какое
#96 by Reset
+ Все равно выполниться после всех действий, сколько бы они не длились
#97 by sadden
может быть (нужно проверить) тогда почему через оповестить не получилось?
#98 by sadden
+
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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