8.х Передать параметр в запрос при активизации строки

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Светлана5291, 20 окт 2014.

  1. TopicStarter Overlay
    Светлана5291
    Offline

    Светлана5291 Опытный в 1С

    Регистрация:
    6 фев 2013
    Сообщения:
    156
    Симпатии:
    0
    Баллы:
    26
    Добрый день!
    Есть форма обработки, где отражаются данные. В зависимости от настроек пользователя на форму подкачивается название стации, при изменении которой на форме заполнятся ТЗ. Хотелось бы чтобы при активизации строки ТЗ ячейка с номером вагона передавалась как параметр в запрос, а результат запроса выгружался бы на форму в ТЗ Дислокация.
    Код есть.
    Код:
    &НаКлиенте
    Процедура ЗаявкаНаВагонПриАктивизацииСтроки(Элемент)
       
    ТекДанные= Элементы.ЗаявкаНаВагон.ТекущиеДанные;
    Если ТекДанные<>Неопределено Тогда
    НомерВагона = Элементы.ЗаявкаНаВагон.ТекущиеДанные.Вагон;
    Дислокация(НомерВагона);
    КонецЕсли;
    
    КонецПроцедуры
    
    &НаСервере
    
    Процедура Дислокация(НомерВагона)
    
        Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    ДислокацияЗаказанногоВагона.Вагон,
            |    ДислокацияЗаказанногоВагона.ПоследняяОперация,
            |    ДислокацияЗаказанногоВагона.КодСтанцииПоследнейОперации КАК КодПоследнейОперации,
            |    ДислокацияЗаказанногоВагона.СтанцияЗаказа
            |ИЗ
            |    РегистрСведений.ДислокацияЗаказанногоВагона КАК ДислокацияЗаказанногоВагона
            |ГДЕ
            |    ДислокацияЗаказанногоВагона.Вагон = &Вагон";
    
        Запрос.УстановитьПараметр("Вагон", НомерВагона);
    
        РезЗапроса = Запрос.Выполнить();
        ТЗ = РезЗапроса.Выгрузить();
        ЗначениеВРеквизитФормы(ТЗ, "ДислокацияВагона");
           
    
    КонецПроцедуры // Дислокация()
    
    но в этот код при отладке не попадаю или вообще перестает работать дислокация(при изменении номера вагона в тз Дислокация появляются данные)

    Вложения:

    • 555.jpg
      555.jpg
      Размер файла:
      471 КБ
      Просмотров:
      11
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    Может проще поместить на форму динамический список регистра сведений "ДислокацияЗаказноговагона" и настраивать для него отбор при выделении строки?
  3. TopicStarter Overlay
    Светлана5291
    Offline

    Светлана5291 Опытный в 1С

    Регистрация:
    6 фев 2013
    Сообщения:
    156
    Симпатии:
    0
    Баллы:
    26
    Код:
    &НаКлиенте
    Процедура ЗаявкаНаВагонПриАктивизацииСтроки(Элемент)
       
    //ТекДанные= Элементы.ЗаявкаНаВагон.ТекущиеДанные;
    //Если ТекДанные<>Неопределено Тогда
    НомерВагона = Элементы.ЗаявкаНаВагон.ТекущиеДанные.Вагон;
    УстановитьОтбор1(НомерВагона);
    //КонецЕсли;
    
    КонецПроцедуры
    &НаСервере
    Процедура УстановитьОтбор1(НомерВагона)
       
    ДислокацияВагона1.Отбор.Элементы.Очистить();
        ЭлементОтбора1 = ДислокацияВагона1.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора1.Использование = Истина;
        ЭлементОтбора1.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Вагон");
        ЭлементОтбора1.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора1.ПравоеЗначение = НомерВагона;
               
    КонецПроцедуры
    
    Сделала динамическим списком.
    Если в процедуре ПриАктивизации строки раскомментированы, то программа зацикливается, а если закомментированы как сейчас, то вообще не срабатывает.
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    хм.....зацикливаться точно не должно.
    однако, не верно сформирован сам отбор.

    Код:
    ЭлементОтбора = ДислокацияВагона1.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Вагон");
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение = НомерВагона;
    Так работает или ошибка?
    Последнее редактирование: 20 окт 2014
  5. TopicStarter Overlay
    Светлана5291
    Offline

    Светлана5291 Опытный в 1С

    Регистрация:
    6 фев 2013
    Сообщения:
    156
    Симпатии:
    0
    Баллы:
    26
    Код:
    &НаКлиенте
    Процедура ЗаявкаНаВагонПриАктивизацииСтроки(Элемент)
        ТекДанные= Элементы.ЗаявкаНаВагон.ТекущиеДанные;
        НомерВагона = Элементы.ЗаявкаНаВагон.ТекущиеДанные.Вагон;
        Если НомерВагона<>ПрошлыйВагон Тогда
            НомерВагона = Элементы.ЗаявкаНаВагон.ТекущиеДанные.Вагон;
           
        УстановитьОтбор1(НомерВагона);
            ПрошлыйВагон = НомерВагона
        КонецЕсли;
    
    
    
    КонецПроцедуры
    
    &НаСервере
    Процедура УстановитьОтбор1(НомерВагона)
           
    
    ЭлементОтбора = ДислокацияВагона1.Отбор.Элементы.Добавить();
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.Значение = НомерВагона;
    КонецПроцедуры
    
    Так зацикливается.
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Из СП:
    --- Объединение сообщений, 20 окт 2014 ---
    Быстрый гугл:
    http://www.forum.mista.ru/topic.php?id=630431
    там же есть ответ от официалов.
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    Кстати, да, мне показалось подозрительным использование сервера для такой простой процедуры, как установка отбора на форме для динамического списка.
  8. TopicStarter Overlay
    Светлана5291
    Offline

    Светлана5291 Опытный в 1С

    Регистрация:
    6 фев 2013
    Сообщения:
    156
    Симпатии:
    0
    Баллы:
    26
    ну даже если не использовать сервер, а весь отбор прописать в процедуре ПриАктивизацииСтроки, то он просто не срабатывает
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    Если правильно сформирован сам отбор, то он должен работать, просто обязан :)
  10. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Светлана, в обработчик "ПриАктивизации.." попадаете?
    Выложите код, который у вас сейчас получился.
  11. TopicStarter Overlay
    Светлана5291
    Offline

    Светлана5291 Опытный в 1С

    Регистрация:
    6 фев 2013
    Сообщения:
    156
    Симпатии:
    0
    Баллы:
    26
    Спасибо!!! я нашла свою ошибку. В ТЗ поле Вагон был строкой,а в РС СправочникСсылка.Я поменяла и все заработало!!
    --- Объединение сообщений, 21 окт 2014 ---
    вот код
    Код:
    &НаКлиенте
    Процедура ЗаявкаНаВагонПриАктивизацииСтроки(Элемент)
       
        ТекДанные= Элементы.ЗаявкаНаВагон.ТекущиеДанные;
        НомерВагона = Элементы.ЗаявкаНаВагон.ТекущиеДанные.Вагон;
        Если НомерВагона<>ПрошлыйВагон Тогда
            //НомерВагона = Элементы.ЗаявкаНаВагон.ТекущиеДанные.Вагон;
           
        ДислокацияВагона.Отбор.Элементы.Очистить();
        ЭлементОтбора1 = ДислокацияВагона.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора1.Использование = Истина;
        ЭлементОтбора1.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Вагон");
        ЭлементОтбора1.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора1.ПравоеЗначение = НомерВагона;
        ПрошлыйВагон = НомерВагона
        КонецЕсли;
    
    КонецПроцедуры
    --- Объединение сообщений, 21 окт 2014 ---
    Еще вопрос по теме. Вот когда я открываю форму первая строка в ТЗ по умолчанию выделяется, то есть сразу же срабатывает процедура ПриАктивизацииСтроки. Можно как то сделать, что бы это процедура срабатывала только тогда, когда пользователь физически нажмет на эту строку? Или можно какую-то другую процедуру использовать?
    Последнее редактирование: 21 окт 2014
  12. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Наверное только эту можно. Сильно мешает, что при открытии срабатывает?
  13. TopicStarter Overlay
    Светлана5291
    Offline

    Светлана5291 Опытный в 1С

    Регистрация:
    6 фев 2013
    Сообщения:
    156
    Симпатии:
    0
    Баллы:
    26
    ну это не к этому куску кода. Просто у меня на форме 2 ТЗ и хотелось бы чтобы при активации строки в ТЗ контейнеры выводились данные на ТЗ вагоны. А так получается сразу активируется и не срабатывают другие процедуры.
  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    можно при открытии формы сменить фокус на другой элемент формы

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