Имя: Пароль:
1C
1С v8
УФ. Сообщение об ошибке на строку вне отбора.
,
0 mvgfirst
 
24.09.12
15:36
Есть две табличных части у документа ТабЧастьА и ТабЧастьБ
в ТабЧастьБ хранятся строки подчиненные строкам ТабЧастьА
При активизации строки в ТабЧастьА - накладывается отбор по ключу и отображаются только нужные строки в ТабЧастьБ.
Все работает как и ожидалось.

Дошел до момента Проверки Заполнения.
Независимо от того сам ли отрабатываю проверку или стандартными средствами пользуюсь - наткнулся на одну особенность. Если незаполнено поле в ТабЧастьБ в строке которая находится вне диапазона отбора (т.е. не принадлежит к текущей выделенной строке ТабЧастьА) - "балон" с ошибкой выскакивает в верхней левой части главного окна 1С.

С одной стороны оно и понятно - строка не видна на экране и нет возможности его ("балон") отобразить в правильном месте.

Но хотелось бы что бы при переходе на эту ошибку можно было спозционировать запись в ТабЧастьА таким образом что бы строка в ТабЧастьБ стала видимой (попала в диапазон отбора) и соответственно "балон" с ошибкой отобразился в "правильном" месте. Каких либо событий которые возникают перед отображением сообщения или при переключении между сообщениями об ошибках я не нашел (хотя это как раз то самое место где можно было бы реализовать механим перепозиционирования)

По ходу дела ошибок выскакивает много и ожидаемое поведение системы со стороны пользователя - это когда кликая на ошибках видит где они возникли (особенно актуально при большом количестве строк в ТабЧастьА и в ТабЧастьБ)

Готов рассмотреть любые предложения кроме "троллерских" и "абсурдных".
А так же с глубоким вниманием отнесусь к отсылке на описание способов реализации подобной взаимосвязи "от производителя" так сказать... т.е. как такие механизмы предпочитает реализовыавть сами 1С-овцы?
1 mvgfirst
 
24.09.12
15:54
Нет вариантов? Или вопрос слишком прост что бы на него отвечать?
2 m-serg74
 
24.09.12
16:01
наверное "абсурдно", но может отключать отбор в Б при проверке заполнения?
3 mvgfirst
 
24.09.12
16:07
Проблема то не в отборе? а в отображени информации пользователю. Я осознанно накладываю отбор что бы пользователь перемещаясь по ТабЧастьА видел только нужные позиции в ТабЧастьБ

Если же я буду отключать отбор - пользователю на обозрение "вывалятся" все строки независимо от принадлежности к ТабЧастьА - уверен что это введет пользователя в ступор ну или как минимум вызовет дизориентацию и негативное отношение к программе

Сейчас я пошел тем путем что просто не подставляю реквизит поле в структуру данных "СообщитьПользователю" - тем самым выводится только сообщение но не позиционируется "балон" возле незаполненного поля. Но наряду с другими документами где этот механизм используется - выглядит по меньшей мере некрасиво.

Поэтому ищу способ обойти это "ограничение". Нужно то всего лишь в момент когда пользователь переходит к сообщению о незаполненном поле - спозиционироваться на этом поле "перестроив отборы" )
4 mvgfirst
 
24.09.12
16:30
Все еще надеюсь получить совет или хотя бы намек на решение вопроса.

Неужели никто не решал подобных задач?
5 vmv
 
24.09.12
16:35
вброшу для наводки, по фик куда и зачем я кидаю этот код у себя - там есть идея того, что тебя нужно для правильной работы мастер-детали

&НаКлиенте
Процедура ТчСтрокиБОтборВключитьМодифицировать(Пометка)
   
   Тф = Элементы.ТчСтрокиБОтбор;
   
   Для каждого ДфЭлКл Из Отчет.ТчСтрокиБОтбор Цикл
       
       ДфЭлКлВОтборе = Тф.ПроверитьСтроку(ДфЭлКл.ПолучитьИдентификатор());
       Если НЕ ДфЭлКлВОтборе Тогда
           Продолжить;
       КонецЕсли;
       ДфЭлКл.Включить = Пометка;
       
   КонецЦикла;
   
   ТчСтрокиБУстановитьОтбор();    
   
КонецПроцедуры
6 vmv
 
24.09.12
16:36
довесок

&НаКлиенте
Процедура ТчСтрокиБУстановитьОтбор()

   Элементы.ТчСтрокиБ.ОтборСтрок =
   Новый ФиксированнаяСтруктура(ТчСтрокиБПолучитьСтруктуруОтбораСтрок(Отчет.ТчСтрокиБ, Отчет.ТчСтрокиБОтбор));
   
   КлиентИнициализацияРфТчСтрокиБКоличество();    

КонецПроцедуры
7 mvgfirst
 
24.09.12
16:56
(5)(6) Не совсем понял смысл вброшенного. Вернее общий смысл понимаю - идет установка отбора.
Но даже и близко понять не могу чем это может помочь в моей ситуации?
Мне наложить отбор на все строки в которых есть незаполненные поля, что ли? Это не совсем тот результат который мне нужен.

На всякий случай еще раз озвучу идеальный сцеарий который я хотел бы получить:
После отбработки "ОбработкаПроверкаЗаполнения" 1С-ка выдает список ошибок заполнения. Пользователь переключаясь между ошибками (или на "балоне" стрелочками или в списке ошибок справа) перемещается между незаполненными полями формы. При этом если следующее незаполненное поле находится вне диапазона текущего отбора - форма перестраивает отбор таким образом что бы строка с нужным полем оказалась видимой. При этом свзяь мастер-детайл должна сохранятся, т.е. для отображения нужной строки производится перепозиционирование строки в мастере.

Вопросы перепозиционирования меня не волнуют, прекрасно понимаю как это реализовать. Я не понимаю (незнаю) в каком моент это делать - как поймать момент что пользователь переключился на ошибку указывающую на поле вне отбора?
8 vmv
 
24.09.12
17:26
(7) собрать сообщения от ощибках в коллекцию, например список значений. Значение - ИдентификаторСтроки, представление сообщение от ошибке.

Выввалить этот список в свою форму или покопаться в стандартном СообщениеПользователю, вроде там все АйДи строи/поля можно всунуть, читать СП я не буду.

Обратотать выбор пользователя в свой форме или стандарте
9 mvgfirst
 
24.09.12
17:33
(8) О! Годный вариант - сделать свою систему обработки незаполненных значений.
С одной стороны - рабочее решение, а с другой делать все вместо системного механизма - не камильфо ( Зачем тогда он (системный механизм)

Что же, если других вариантов нет - и такой сойдет. Хотя мне кажется должно быть какое-то более универсальное решиние?

Ничего не слышно в будущих релизах не собираются вводить событий для обработки сообщений пользователю?
10 mvgfirst
 
24.09.12
22:19
Так то вариантов больше нет? Или есть?
11 vmv
 
24.09.12
22:24
(9) зайди на форум разработчикаов и поной - сопельки подотрут и сделают, так всегда было, тока агрументируй типа, не сделоете меня продадут в рабство, там у них уже куча мала пожалений на обработчики обновления, события таблиц формы, а технология обработчиков ожидания уже дико устарела - именно из-за них аццке тормозат порно-сайты, но 1С - не такая! она будет лучьше!
12 mvgfirst
 
24.09.12
22:26
(11) Нет у меня доступа - а то бы уже вынес бы им мозк )))