| 
    
        
     
     | 
    
  | 
УФ. Сообщение об ошибке на строку вне отбора. | ☑ | ||
|---|---|---|---|---|
| 
    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) Нет у меня доступа - а то бы уже вынес бы им мозк )))     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |