8.х Добавление кнопки командной панели при активизации строки в списке

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Николаич87, 14 окт 2015.

  1. TopicStarter Overlay
    Николаич87
    Offline

    Николаич87 Опытный в 1С

    Регистрация:
    1 апр 2015
    Сообщения:
    122
    Симпатии:
    4
    Баллы:
    29
    Приветствую, господа - есть динамический список, есть группа формы с видом КоманднаяПанель. При активизации строки в списке добавляю n кнопок на панель, после отработки процедуры добавление - начинается заново выполнение процедуры ПриАктивизацииСтроки, причем текущие данные те же, что и в первый раз. Само собой повторно команды и кнопки добавить не получается, но и никакой ошибки не появляется - просто зацикливается - Добавление существ. команды - выход на ПриАктивизации - снова попытка Добавления

    Код:
    &НаКлиенте
    Процедура СписокПриАктивизацииСтроки(Элемент)
          ..........
       ДобавитьКнопкиКоманднойПанели(ВидНоменклатуры); 
    КонецПроцедуры 
    
    &НаСервере
    Процедура ДобавитьКнопкиКоманднойПанели(ВидНоменклатуры)
       ..........
         Для каждого СтрТЗ Из ТехОперации Цикл
            Команда = ЭтаФорма.Команды.Добавить(Строка(СтрТЗ.ТехнологическаяОперация));
            Команда.Действие = "Тест";
            Команда.Заголовок = Строка(СтрТЗ.ТехнологическаяОперация);
            НоваяКнопка = Элементы.Добавить(Строка(СтрТЗ.ТехнологическаяОперация), Тип("КнопкаФормы"), Элементы.СтатусТехОперации);
            НоваяКнопка.ИмяКоманды = Строка(СтрТЗ.ТехнологическаяОперация);
          КонецЦикла;
    КонецПроцедуры 
    Автообновление у списка отключил, на обычных формах все работает - проверил
  2. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Нельзя делать контекстные серверные вызовы (с директивой "&НаСервере") в событии "ПриАктивизацииСтроки". Об этом прямо написано в синтакс-помощнике.

    А добавлять на форму кнопки при активизации строки - это, я бы сказал, очень странная задачка )
    Зачем Вам это нужно?
    Может, просто видимость (доступность) кнопок включать/выключать?
    Последнее редактирование: 15 окт 2015
  3. TopicStarter Overlay
    Николаич87
    Offline

    Николаич87 Опытный в 1С

    Регистрация:
    1 апр 2015
    Сообщения:
    122
    Симпатии:
    4
    Баллы:
    29
    Видимость уже попробовал, не вариант. т.к. мне, если в двух словах, то надо следующее:
    есть ут 10.3. есть раб. место на обычных формах, в котором список заказов клиентов. При активизации строки - программно заполняю командую панель кнопками в зависимости от того, на какой стадии выполнения заказ (у кнопок регулирую доступность, количество кнопок, заголовки и пр.). Вся задача уперлась в то, что в список надо добавить еще одну колонку, но привязать ее к реквизиту нет возможности (точнее она есть, но как то не хочется при изменении статуса заказа каждый раз тыркать ДокОбъект). В колонку надо вывести статус заказа, который хранится в РС и изменяется как раз при нажатии динамически-создаваемых кнопок командной панели. Использовал два по очереди события ТабПоля - ПриПолученииДанных и ПриВыводеСтроки, но они уж больно часто выполняются. Чтобы избежать частых обращений к серверу - поместил все, что надо в ТЗ, накинул индекс на нужные мне колонки - результат в принципе удовлетворительный, но вот фильтра по полученной колонке конечно же нет. Вот тут и решил сделать через УФ - там со списком все просто, но вот с кнопками - не получилось (

    зы меняя видимость у кнопок - мне надо менять имена команд, связанных с ними, что опять же приводит к зацкливанию
  4. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    изменение видимости будет обращаться к серверу.
    Попробуй оставить все кнопки и управлять доступностью.
    Ну или вариант с полем списка дейсвий и кнопочки "выполнить", а список перезаполнять.
    Ну или вариант с переключателем по статусам и отбором списка- переключил статус, поменял состав кнопок. Общий статус - кнопок нет
  5. TopicStarter Overlay
    Николаич87
    Offline

    Николаич87 Опытный в 1С

    Регистрация:
    1 апр 2015
    Сообщения:
    122
    Симпатии:
    4
    Баллы:
    29
    доступность не вариант - у разных заказов - разное количество статусов м.б., да и потом после достижения определенного статусы - предыдущие кнопки (в заголовке у них - имена статусов) - становятся недоступны, и все последующие тоже. Доступен только текущий статус. При нажатии на такую кнопку - Пометка становится Истина, в РС записывается операция + в каком она статусе. Получается кнопка утоплена - одна, все остальные недоступны. нажимаем на нее еще раз - Пометка и Доступность - Ложь. Аналогично пред. кнопки, следующая становится доступна и не утоплена, а все последующее за такой - также не доступны.
    Т.е. поле списка не даст возможности отобразить 3 состояния, ровно как и переключатель

    Вложения:

  6. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Вот я смотрю БСП, справочник позльзователи, там есть конструкция (Думаю она преследует похожую цель), опишу коротко, типа:
    Код:
    &НаКлиенте
    Процедура группыПользователейПриАктивизацииСтроки()
       ПодключитьОбработчикОжидания("послеактивизации", 0.1, истина);
    КонецПроцедуры
    
    &наклиенте
    Процедура ПослеАктивизации()
      ОбновитьСодержимоеформы(этаФорма);
    КонецПроцедуры
    
    
    &наклиентенасерверебезконтекста
    Процедура обновитьсодержимоеформы(форма)
    //Ну и тут манипуляции
    КонецПроцедуры 
    Забыл тег, напомните плиз
    Последнее редактирование: 15 окт 2015
  7. TopicStarter Overlay
    Николаич87
    Offline

    Николаич87 Опытный в 1С

    Регистрация:
    1 апр 2015
    Сообщения:
    122
    Симпатии:
    4
    Баллы:
    29
    тег [*code] [*/code] без *
    да, похоже оно, спасибо. завтра буду смотреть[/code]
  8. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Да, верно. Не учел.

    К слову, это поведение изменено в предстоящей версии 8.3.7 платформы.
    Начиная с этой версии, изменение видимости на клиенте не будет требовать обращения к серверу.
  9. TopicStarter Overlay
    Николаич87
    Offline

    Николаич87 Опытный в 1С

    Регистрация:
    1 апр 2015
    Сообщения:
    122
    Симпатии:
    4
    Баллы:
    29
    через обработчик ожидания также не получилось (
    &наклиентенасерверебезконтекста - форму передать можно, но добавить элемент уже нельзя
    на если просто &насервере - форму передать не получится )
    видимо все таки будет на обычных формах
  10. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Если просто на сервере - форму передавать и не нужно, он ее видит
  11. TopicStarter Overlay
    Николаич87
    Offline

    Николаич87 Опытный в 1С

    Регистрация:
    1 апр 2015
    Сообщения:
    122
    Симпатии:
    4
    Баллы:
    29
    спору нет, но на сервере результат такой же что и в самом начале :(

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