8.х Как открыть форму элемента справочника из СЗ?

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем belbuh, 4 авг 2013.

  1. TopicStarter Overlay
    belbuh
    Offline

    belbuh Новичок в 1С

    Регистрация:
    18 июл 2013
    Сообщения:
    46
    Симпатии:
    2
    Баллы:
    4
    Пишу внешний отчет.
    На форме есть список значений (СЗ), куда я подбором вношу элементы справочника.
    хочу по двойному щелчку открыть форму текущего элемента СЗ.

    вот мой код

    Код:
    Процедура ОткрытьЭлементИзСписка()
    Если СЗ.Количество()<>0 Тогда
    СсылкаНаЭлементСправочника = ЭлементыФормы.СЗ.ТекущаяСтрока;
    ПараметрыФормы = Новый Структура("Ключ", СсылкаНаЭлементСправочника);
    ОткрытьФорму("Справочник.ОсновныеСредства.ФормаОбъекта", ПараметрыФормы);
    КонецЕсли;
    КонецПроцедуры
    
    но у меня открывается форма создания нового элемента справочника.


    как я понимаю, я некорректно передаю ссылку на объект...

    как правильно сделать?
  2. La Navidad
    Offline

    La Navidad Опытный в 1С

    Регистрация:
    25 дек 2012
    Сообщения:
    203
    Симпатии:
    1
    Баллы:
    26
    Код:
    ОткрытьЗначение(СсылкаНаЭлементСправочника);
  3. TopicStarter Overlay
    belbuh
    Offline

    belbuh Новичок в 1С

    Регистрация:
    18 июл 2013
    Сообщения:
    46
    Симпатии:
    2
    Баллы:
    4
    С таким кодом у меня вылетает окошко со значением текущей строки СЗ.
    А мне надо открыть форму элемента.

    Я уже думал, что может у меня в СЗ не ссылки, а строки.
    Но не может же этого быть, когда подбираю я вот так:

    Код:
    Процедура СписокОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    СтандартнаяОбработка=Ложь;
    Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.ОсновныеСредства") Тогда
    Если СЗ.НайтиПоЗначению(ВыбранноеЗначение)=Неопределено Тогда
    НоваяСтрока = СЗ.Добавить();
    НоваяСтрока.Значение = ВыбранноеЗначение;
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
  4. Yuriy_Alexandrovich
    Offline

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

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Если в значении ссылка на элемент, если нужно открыть форму элемента то для обычного приложения
    Код:
    Форма = СсылкаНаЭлемент.ПолучитьФорму(<ИмяФормы>);
    Если НЕ Форма.Открыта() Тогда Форма.Открыть(); КонецЕсли;
    
  5. Yuriy_Alexandrovich
    Offline

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

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    В вашем случае, попробовать :
    Код:
    Форма = ПолучитьФорму("Справочник.ОсновныеСредства.ФормаЭлемента",Параметр);
    Форма.Открыть();
    
  6. TopicStarter Overlay
    belbuh
    Offline

    belbuh Новичок в 1С

    Регистрация:
    18 июл 2013
    Сообщения:
    46
    Симпатии:
    2
    Баллы:
    4
    спасибо, что откликнулись. увы, получаю ошибки.
    может я чего недосказал. я пишу внешний отчет. 1с 8.2. Бухгалтерия гос. учреждения 1.0

    я так понимаю, что у меня передаваемое значение неподходящего типа.
    задача простейшая, но я не пойму что делать.

    если я делаю так
    Код:
    СсылкаНаЭлементСправочника = ЭлементыФормы.СЗ.ТекущаяСтрока;
    Форма = СсылкаНаЭлементСправочника.ПолучитьФорму("Справочник.ОсновныеСредства.ФормаЭлемента");
    Форма.Открыть();
    то получаю
    если так
    Код:
    СсылкаНаЭлементСправочника = ЭлементыФормы.СЗ.ТекущаяСтрока;
    Параметр = Новый Структура("Ключ", СсылкаНаЭлементСправочника);
    Форма = ПолучитьФорму("Справочник.ОсновныеСредства.ФормаЭлемента",Параметр);
    Форма.Открыть();
    то такой косяк
  7. TopicStarter Overlay
    belbuh
    Offline

    belbuh Новичок в 1С

    Регистрация:
    18 июл 2013
    Сообщения:
    46
    Симпатии:
    2
    Баллы:
    4
    La Navidad правильно мне подсказал. За что ему muchas gracias! ;)

    моя ошибка была в том, что в качестве параметра мне надо было передавать нужные данные.
    вот рабочий код, который может быть пригодится таким же начинающим как я.

    Код:
     Если СЗ.Количество()<>0 Тогда
    Параметр = ЭлементыФормы.СЗ.ТекущаяСтрока;
    ОткрытьЗначение(Параметр.Значение);
    КонецЕсли;

    т.е. вариант ОткрытьЗначение(Параметр) работать не будет.

    нужно писать ОткрытьЗначение(Параметр.Значение)

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