8.х [РЕШЕНО] Составной тип данных в ТАКСИ

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

  1. TopicStarter Overlay
    lirikons
    Offline

    lirikons Опытный в 1С

    Регистрация:
    10 июн 2014
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Добрый день.

    Реквизит документа имеет составной тип - два справочника. Когда на форме документа в поле выбора, связанного с этим реквизитом, выбирается первый справочник, все в порядке - отрывается этот справочник, оттуда выбирается значение. Когда выбирается второй справочник - вместо того, чтобы открыть список элементов этого справочника в процедуру "Обработка выбора" этого поля передается тип - "Справочник.Подразделения". Что с этим можно сделать?
  2. Дмитрий@
    Offline

    Дмитрий@ Новичок в 1С

    Регистрация:
    9 ноя 2014
    Сообщения:
    30
    Симпатии:
    1
    Баллы:
    4
    Попробуйте в событие добавить "Стандартная обработка = ложь"
  3. TopicStarter Overlay
    lirikons
    Offline

    lirikons Опытный в 1С

    Регистрация:
    10 июн 2014
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Не помогает.
  4. Дмитрий@
    Offline

    Дмитрий@ Новичок в 1С

    Регистрация:
    9 ноя 2014
    Сообщения:
    30
    Симпатии:
    1
    Баллы:
    4
    Давайте немного уточним вопрос.
    Есть форма, на форме поле ввода связанное с реквизитом составного типа. Когда вы нажимаете кнопку выбора в поле ввода, открывается окно где вы должны выбрать справочник, который нужно открыть. После выбора справочника открывается окно выбора элементов этого справочника. Когда вы выбираете элемент справочника, то выбранный элемент отображается в поле ввода формы.
    Событие "обработка выбора" в данном случае срабатывает дважды: при выборе справочника, и при выборе элемента справочника.
    У вас так работает или как-то по другому.
  5. TopicStarter Overlay
    lirikons
    Offline

    lirikons Опытный в 1С

    Регистрация:
    10 июн 2014
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Да, вы правильно описали - есть поле ввода, связанное с составным типом данных. В этом составном типе 2 справочника. На поле ввода назначена процедура "Обработка выбора". Когда я нажимаю на кнопку выбора и выбираю первый справочник - открывается окно выбора элементов этого справочника, откуда я выбираю элемент, после чего отрабатывает процедура, в которую передается значение Справочники.ПервыйСправочник.ЭлементПервогоСправочника. Если я выбираю второй справочник, то процедура отрабатывает сразу, не показывая элементов второго справочника. В процедуру передается тип(Справочники.ВторойСправочник). А нужно, чтобы можно было выбрать элемент второго справочника, и чтобы он также передавался в процедуру.
  6. Дмитрий@
    Offline

    Дмитрий@ Новичок в 1С

    Регистрация:
    9 ноя 2014
    Сообщения:
    30
    Симпатии:
    1
    Баллы:
    4
    Что-то странное. Попробуйте закоментарить процедуру обработка выбора и посмотрите как ведет себя система, то есть выводит ли окно выбора элементов второго справочника.
  7. Дмитрий@
    Offline

    Дмитрий@ Новичок в 1С

    Регистрация:
    9 ноя 2014
    Сообщения:
    30
    Симпатии:
    1
    Баллы:
    4
    Как я говорил, Процедура отрабатывает "обработка выбора" дважды после выбора справочника, и тогда в процедуру передается название справочника. И второй раз она вызывается когда выбирается элемент выбранного справочника, тогда в процедуру передается значение выбранного элемента справочника.
    Если вы поставили точку останова в процедуре "Обработка выбора", то программа должна отработать так:
    -открывается окно выбора справочника, после того как вы выбрали какой справочник открыть, происходит останов в процедуре "обработка выбора" и передается в процедуру название справочника, после продолжения программы открывается окно выбора элементов справочника, после выбора элемента справочника происходит останов в процедуре "обработка выбора" и передается значение выбранного элемента.

    Скиньте текст процедуры и укажите где ставите точку останова.
    Скорей всего у вас в процедуре стоит оператор условие, который проверяет тип передаваемого параметра, и в зависимости от этого указывает что делать.
  8. TopicStarter Overlay
    lirikons
    Offline

    lirikons Опытный в 1С

    Регистрация:
    10 июн 2014
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Процедура самописная. Я, к сожалению, смогу скинуть текст только в понедельник, но комментировать пробовал - все работает нормально.
    В самой процедуре вызывается функция на сервере с запросом, где в условии Справочник.Ссылка сравнивается с выбранным значением. Когда выбранное значение -тип Справочник, возникает несоответствие типов.

    Я думаю, вы правы, и процедура отрабатывает дважды, тогда нужно в самой процедуре поставить условие на проверку выбранного значения, и все должно заработать. Но интересно все же, почему в случае с первым справочником передается сразу элемент, а со вторым - сначала справочник, а потом элемент.
  9. Дмитрий@
    Offline

    Дмитрий@ Новичок в 1С

    Регистрация:
    9 ноя 2014
    Сообщения:
    30
    Симпатии:
    1
    Баллы:
    4
    Если вставить в процедуру такой код, то окно выбора элемента справочника2 не будет открываться.

    Если Тип("СправочникСсылка.Справочник2") = ВыбранноеЗначение Тогда

    Стандартнаяобработка = ложь;

    КонецЕсли;
    lirikons нравится это.
  10. TopicStarter Overlay
    lirikons
    Offline

    lirikons Опытный в 1С

    Регистрация:
    10 июн 2014
    Сообщения:
    63
    Симпатии:
    0
    Баллы:
    26
    Сделал так:

    Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.СправичникРаз") ИЛИ ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.СправочникДва") Тогда
    СтандартнаяОбработка = Ложь;
    КонецЕсли;

    Спасибо.

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