7.7 Предопределённое событие для активации строки справочника

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

  1. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    196
    Симпатии:
    0
    Баллы:
    26
    В 1с нет по умолчанию события на активацию элемента справочника. Как это обойти? Т.е. я хочу при смене элемента справочника перезаполнить на форме таблицу значений
  2. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    586
    Симпатии:
    58
    Баллы:
    54
    Если честно не до конца понял - Если при смене элемента справочника менять подчиненную этому элементу форму другого справочника - то ИспользоватьВладельца() или тот же элемент? Но тогда непонятно, что должно поменяться?
  3. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    196
    Симпатии:
    0
    Баллы:
    26
    Есть справочник №1. У него есть подчинённый справочник, который я выкидываю в таблицу значений на форме справочника №1. Мне нужно отловить событие "изменение текущего элемента справочника 1" чтобы далее воспользоваться функцией ИспользоватьВладельца() и перезаполнить таблицу значений.
    Вопрос: как отловить событие "изменение текущего элемента справочника" ?

    Сейчас я решаю это через предопределённую процедуру ПриВыбореСтроки(). Но она реагирует на 2й клик или Enter, а мне нужна реакция на перемещение по справочнику
  4. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    586
    Симпатии:
    58
    Баллы:
    54
    Единственное, что пока вспомнилось это ИерархическийСписок(1, 1) для подчиненного справочника, но это форма списка... Если, что вспомню - отпишусь..
  5. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    160
    Баллы:
    104
    а я все равно ничего не понял.
    К примеру, есть контрагенты и договора.
    Т.е. к примеру, в форме контрагента имеется список договоров. Т.е. нужно при изменении договора (через его форму?) перезаполнить список договоров в форме контрагента?
  6. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    586
    Симпатии:
    58
    Баллы:
    54
    Если брать связку контрагент - договор и при изменении в форме списка контрагента(по тому как я посоветовал) будет меняться форма списка договоров(при установленном иерархическом отборе)
    А вот, что нужно в действительности я не знаю o_O
  7. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    160
    Баллы:
    104
    Сдаётся мне, что у него в форме элемента справочника-владельца имеется ТЗ, в которой расположены элементы подчинённого справочника.
    Он меняет подчиненный, а ТЗ нужно обновить.
    Но проблема в том, что в 7.7, в отличие от 8.х, нет таких функций оповещения.
    Можно лишь сделать наоборот - "из главной оповестить подчиненную форму", задав параметр "КонтекстФормы":
    Код:
    ОткрытьФорму(<Элемент>,<КонтекстФормы>,<РежимПросмотра>)
    
  8. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    586
    Симпатии:
    58
    Баллы:
    54
    Ну да, плюс предопределённая ПриПовторномОткрытии()...
  9. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    196
    Симпатии:
    0
    Баллы:
    26
    Есть "форма списка" справочника Контрагенты. На этой форме ТЗ, в которой выводятся договора текущего контрагента. Нужно при изменении текущего контрагента обновлять ТЗ.
  10. Катюфка
    Offline

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

    Регистрация:
    3 июн 2013
    Сообщения:
    491
    Симпатии:
    83
    Баллы:
    54
    Здравствуйте.
    Посмотрите в типовой бухгалтерии, как сделана для справочника Номенклатура функция ИнформационнаяСтрока(). Вам должно подойти.
  11. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    196
    Симпатии:
    0
    Баллы:
    26
    Спасибо. Да, для того чтобы обрабатывать событие "смена текущего элемента списка справочника", нужно на форме создать текстовое поле, и в его поле Функция прописать обработчик. Эта функция и будет вызываться при смене текущего элемента
  12. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    196
    Симпатии:
    0
    Баллы:
    26
    Всё нормально реализовалось. Но есть маленькая проблемка, попробую объяснить, хотя и сложно наверное:
    После заполнения таблицы значений договорами, мне нужно корсор в ТЗ устанавливать на первую строку.
    В самой Функции (которая заполняет таблицу значений ТЗ) вставить строку:
    ТЗ.ТекущаяСтрока(1);
    нельзя, т.к. наверное чтото зацыкливается , и я (если эту строку поместить в функцию) не могу мышкой устанавливать курсор на любую строку ТЗ.
    Если выполнение строки: ТЗ.ТекущаяСтрока(1);
    повесить на кнопку, всё нормально отрабатывается (после обновления ТЗ я могу активировать любую строку ТЗ, а по нажатию кнопки курсор становится на первую строчку ТЗ)
    Задача: мне нужно отрабатывать выполнение этой строки после заполнения таблицы значений (т.е. чтобы курсор всегда становился на первую строку ТЗ)
    Вопрос: Куда поместить ТЗ.ТекущаяСтрока(1); ?
  13. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.201
    Симпатии:
    494
    Баллы:
    104
    Выложите обработку если она отдельная... Ну или код если из вызов в документе
  14. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    196
    Симпатии:
    0
    Баллы:
    26
    Слева табличная часть справочника "ЗначенияХарактеристикТМЦ". СПрава Таблица значений, которая содержит типовые значения характеристик. Безымянный.jpg
    [​IMG]
    При активации строки справочника, ТЗ заполняется типовыми значениями характеристики:
    Код:
    Функция ПоказатьТиповыеЗначения()
        Табл=СоздатьОбъект("ТаблицаЗначений");
        табл.НоваяКолонка("Значение");
        спр=СоздатьОбъект("Справочник.ВидыЗначенийХарактеристикТМЦ");
        спр.ИспользоватьВладельца(ТекущийЭлемент().Характеристика);
        спр.ВыбратьЭлементы();
        Пока спр.ПолучитьЭлемент() = 1 Цикл
            Если спр.ПометкаУдаления()=1 Тогда
                Продолжить;
            КонецЕсли;
            табл.НоваяСтрока();
            табл.Значение = спр.Наименование;
        КонецЦикла;
        табл.Выгрузить(ВидыЗначений);
    //        ВидыЗначений.ТекущаяСтрока(1);
    КонецФункции
    При изменении текущий строки справочника изза небольшого глюка 1с мне нужно, чтобы в ТЗ котороая справа, курсор становился на 1ую строчку.
    Логично было бы использовать в функции последней строкой код: ВидыЗначений.ТекущаяСтрока(1);
    Но это не срабатывает - теряется возможность активации строк ТЗ.
    Если же этот код повесить на отдельную кнопку, то всё нормально работает.
    Но конечно же не удобно щёлкать эту кнопку, хотелось бы чтобы активация 1й строки ТЗ происходила автоматом
  15. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.201
    Симпатии:
    494
    Баллы:
    104
    вынесите функцию в невидимый реквизит формы... только в начале поставьте проверку на то что элемент справочника поменялся, а то по каждому чиху будет обновляться
    evgPinsk нравится это.
  16. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.523
    Симпатии:
    53
    Баллы:
    54
    на форму текст (можно унести за рамку формы), в него функцию
    и код разнеси

    перем спр
    перем _номс

    Функция ПоказатьТиповыеЗначения()
    номс=текущаяСтрока
    если _номс=номс тогда
    возврат ""
    конецесли
    тз.удалитьстроки
    спр.ИспользоватьВладельца(ТекущийЭлемент().Характеристика);
    спр.ВыбратьЭлементы();
    Пока спр.ПолучитьЭлемент() = 1 Цикл
    Если спр.ПометкаУдаления()=1 Тогда
    Продолжить;
    КонецЕсли;
    тз.НоваяСтрока();
    тз.Значение = спр.текущийэлемент
    КонецЦикла;
    возврат ""
    КонецФункции


    тз.НоваяКолонка("Значение");
    спр=СоздатьОбъект("Справочник.ВидыЗначенийХарактеристикТМЦ");
    номс=0

    а почему нельзя в левой таблице выбирать значения, зачем их в ТЗ справа запихивать?
    Последнее редактирование: 8 окт 2017
    1с-ник нравится это.
  17. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.201
    Симпатии:
    494
    Баллы:
    104
    проверку на пустое значение и ЭтоГруппа Текущего элемента еще нужно добавить
  18. TopicStarter Overlay
    evgPinsk
    Offline

    evgPinsk Опытный в 1С

    Регистрация:
    27 окт 2010
    Сообщения:
    196
    Симпатии:
    0
    Баллы:
    26
    У меня так и есть
    А вот это не сделал, поэтому и был проблема, не мог активировать строки в ТЗ, попытка активации и был чих, изза которого происходило обновление ТЗ
    --- Объединение сообщений, 9 окт 2017 ---
    Потому-что поле "значение характеристики" это не поле со списком, а строка. Поэтому или вводим любое значение характеристики руками (в левой таблице), или щелчком мышки выбираем типовое значение из правой ТЗ.

    Всем спасибо
  19. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    22.201
    Симпатии:
    494
    Баллы:
    104

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