Здравствуйте!!!
Вопрос следующий. У меня на форме расходной накладной есть флажок Проблема. Для этого флажка в модуле формы создана процедура Проблема(). В этой процедуре я хочу написать код программы для открытия формы элемента справочника Контрагенты, который внесен в документ РасходнаяНакладная. То есть, если в поле Контрагент РасходнойНакладной записан Иваненко, и в документе ставится галочка Проблема (флажок), то тогда автоматически должен открыться справочник Контрагенты , конкретно элемент с наименованием Иваненко. Для того, чтобы в примечании элемента справочника пользователь прописал, в чем проблема этого покупателя или поставщика. Для этого в процедуре Проблема() я прописал следующий код:
Процедура Проблема()
Спр = СоздатьОбъект("Справочник.Контрагенты");
Спр.ВыбратьЭлементы();
Спр.НайтиПоНаименованию(Контрагент,0,1);
Сообщить(Спр.ТекущийЭлемент());
ОткрытьФорму(Спр.ТекущийЭлемент());
КонецПроцедуры
Сообщить(Спр.ТекущийЭлемент());
вспомогательная. Я ее потом уберу. Кстати, сообщение тоже никакое не появляется. Спасибо!
ZUBR @ Вчера, 22:48
,
Доброе утро !
Если реквизит документа Расходная Накладная Контрагент имеет тип Справочник.Контрагенты,тогда
код должен быть примерно таким :
Процедура Проблема()
Спр = СоздатьОбъект("Справочник.Контрагенты");
Спр.Наименованию(Контрагент.Наименование,0,1); //
Сообщить(Спр.ТекущийЭлемент());
ОткрытьФорму(Спр.ТекущийЭлемент());
КонецПроцедуры
andrew76 @ Сегодня, 8:12
,
Извиняюсь,небольшая поправочка в коде:
Процедура Проблема()
Спр = СоздатьОбъект("Справочник.Контрагенты");
Спр.НайтиПоНаименованию(Контрагент.Наименование,0,1); //
Сообщить(Спр.ТекущийЭлемент());
ОткрытьФорму(Спр.ТекущийЭлемент());
КонецПроцедуры
andrew76 @ Сегодня, 8:54
,
Нет, не работает. Когда я устанавливаю флажок на форме РасходнойНакладной "Проблема", и соответственно запускается процедура Проблема, то выскакивает то же сообщение, что и раньше:
" ОткрытьФорму(Спр.ТекущийЭлемент());
{Документ.РасходнаяНакладная.Форма.Модуль(170)}: Открытие окна в данном режиме недоступно!"
Реквизит Контрагент имеет тип Справочник.Контрагенты, да.
ZUBR @ Вчера, 21:45
,
А команда Сообщить() выдает пустую строку ?
Если нижеуказанный код повесить на кнопку ,которая будет расположена на форме
Расходной Накладной,то все должно работать ( у меня по крайней мере работает).
Если вешать этот код на обработчик флажка,то ошибка будет вылетать.
Поэтому могу предложить другой вариант открытия формы.
Процедура Проблема()
Спр = СоздатьОбъект("Справочник.Контрагенты");
Спр.НайтиПоНаименованию(Контрагент.Наименование,0,1); //
Сообщить(Спр.ТекущийЭлемент());
ОткрытьФорму(Спр.ТекущийЭлемент());
КонецПроцедуры
Процедура Проблема()
Спр = СоздатьОбъект("Справочник.Контрагенты");
Спр.НайтиПоНаименованию(Контрагент.Наименование,0,1); //
Сообщить(Спр.ТекущийЭлемент());
ОткрытьФормуМодально(Спр.ТекущийЭлемент());
КонецПроцедуры
andrew76 @ Сегодня, 5:14
, спасибо! Все заработало. Правда, не совсем понятно, чем отличается ОткрытьФормуМодально от просто ОткрытьФорму
ZUBR @ Сегодня, 1:57
,
Модальное окно – окно, блокирующее весь интерфейс приложения, при этом исполнение кода останавливается до момента получения ответа пользователя.
ZUBR @ 24.01.20, 22:48
,
После нажатия на флажок,вызывается у Вас форма справочника,после сохранения в ней информации , форма закрывается нормально ?
А почему не использовать сам реквизит из накладной, зачем поиск по наименованию?
Спр.НайтиЭлемент(Контрагент);
Зачем вообще поиск, когде есть ссылка?
ОткрытьФорму(Контрагент)
andrew76 @ Вчера, 7:14
,
Вызываемая форма закрывается нормально
takefive @ Сегодня, 10:45
,
Попробую как вы предложили. О результатах сообщу. Спасибо!
takefive @ 28.01.20, 10:45
,
без поиска и создания объекта не обойтись, потому что кроме открытия формы я из расходной накладной в элемент справочника переношу значение флажка Проблема:
Спр.Проблема = Проблема;
Позиционироваться также лучше по ссылке
Если Спр.НайтиЭлемент(Контрагент) = 1 Тогда
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua