Позиционирование на элементе справочника, соседнем с удалённым методом Удалить

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Anutko, 18 апр 2016.

  1. TopicStarter Overlay
    Anutko
    Offline

    Anutko

    Регистрация:
    16 сен 2014
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Имеется самописная база. В ней справочник. На форме списка справочника - кнопка [Удалить], которой осуществляется непосредственное удаление активного элемента методом Удалить(1). После чего в форме списка текущей строкой становится первая. А хотелось бы, чтобы текущей строкой стала соседняя с удаленной, так же, как при удалении с клавиатуры кнопкой Delete.
    Нумерация справочника текстовая (номер элемента за текущий год+"\"+две последние цифры текущего года), так что найти код ближайшего элемента прибавлением (вычитанием) по единичке не получится.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Перебери в цикле элементы до удаления - будишь знать предыдущий/следующий относительно текущего. После удаления через НайтиЭлемент позиционируйся
  3. TopicStarter Overlay
    Anutko
    Offline

    Anutko

    Регистрация:
    16 сен 2014
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Надеялась на какие-нибудь тайные недокументированные возможности по перемещению курсора на шаг, но увы )
    Сделала по вашему совету, всё работает, спасибо -Cat-
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Можно было через FormEx но я предпочитаю штатные методы
  5. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    По моему FormEx надо таки прикручивать. ведь у пользователя может быть включен режим сортировки по коду или реквизиту, может быть разгруппирован справочник, так что в вашем методе могут возникнуть не понятные для пользователя позиционирования. Проще запомнить нужный элемент сдвинуть курсор и удалить запомненный через "СоздатьОбъект"
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    так выборка соответствует текущему режиму отображения
  7. TopicStarter Overlay
    Anutko
    Offline

    Anutko

    Регистрация:
    16 сен 2014
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Решила попробовать переделать с помощью FormEx (или SendKeys, один фиг).
    Курсор, в принципе, переходит на соседний элемент, но почему-то срабатывает этот переход после всех операторов процедуры, повешенной на кнопку удаления, даже если прописать команду в середине. И в качестве текущего элемента всё равно видит тот элемент, с которого перешёл. А тот, куда перешёл - не видит! Как так?

    То есть при нажатии кнопки [Удалить] вот такой вот код:

    Код:
    Процедура ПриНажатииКнопкиКлавиатуры(КодКл)
      
        Сообщить("код клавиши: "+КодКл);
        Сообщить("элемент: "+ТекущийЭлемент().Код);
      
    КонецПроцедуры
    
    //***********************************************************************************
    
    //// на кнопке [удалить]
    
    Процедура Удалить() 
      
      
        Сообщить("до: "+ТекущийЭлемент().Код);
    
        Активизировать(Форма.ТекущаяКолонка(),0);
      
        Сервис = СоздатьОбъект("Сервис");
        Сервис.ЭмулироватьКлавиатуру("{UP}");
      
        Форма.Обновить(0);
      
        Сообщить("после: "+ТекущийЭлемент().Код);
      
        //// и т.д.
    
    КонецПроцедуры
    
    показывает мне в итоге вот такую картину в окне сообщений:

    до: 2\16
    после: 2\16
    код клавиши: 38
    элемент: 2\16
    код клавиши: 38
    элемент: 2\16

    что можно с этим сделать?
  8. TopicStarter Overlay
    Anutko
    Offline

    Anutko

    Регистрация:
    16 сен 2014
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Продолжаю свой глас вопиющего в пустыне!!! Чисто в VBA для SendKeys при аналогичной проблеме предлагается делать так:
    Код:
    SendKeys "{DOWN}"
    DoEvents
    или:
    Код:
    SendKeys "{DOWN}", True  
    (источник: http://bbs.vbstreets.ru/viewtopic.php?f=7&t=44581)
    Можно это решение адаптировать для 1С?
  9. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    Здравтвуйте.
    Мне кажется, Вы напрасно перемещаете курсор по форме справочника. Элемент не будет выбран. У Вас же есть работающий вариант с циклом по элементам, им и пользуйтесь. Можно еще в таблицу значений перенести справочник, но это только лишний код, смысл тот же.
  10. TopicStarter Overlay
    Anutko
    Offline

    Anutko

    Регистрация:
    16 сен 2014
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Уж больно жалко было запускать цикл ради одного соседнего элемента. Хотелось сделать с минимумом кода и максимумом быстродействия :) Но раз уж не получилось, оставлю как есть.
Похожие темы
  1. Oleg
    Ответов:
    2
    Просмотров:
    1.672
  2. Anatoly
    Ответов:
    2
    Просмотров:
    1.971
  3. PaPaY
    Ответов:
    11
    Просмотров:
    965
  4. GrizliK
    Ответов:
    5
    Просмотров:
    605
  5. SergeBG
    Ответов:
    10
    Просмотров:
    2.186
Загрузка...

Поделиться этой страницей