вторник, 6 августа 2013 г.

Программный переход к разделу 1С с открытием формы в главном окне

Недавно мне потребовалось сделать кнопку, по нажатию которой пользователь переносился в другой раздел на панели разделов при этом должны была открыться форма в пределах главного окна. Пытался найти в интернете, решения именно такой задачи не нашел, потому описываю сам.
Программный переход между разделами 1С

Сначала я сделал простое открытие формы, которая располагалась в другом разделе и указывал что открывать надо в текущем окне. Примерно так:

        ОткрытьФорму("ОбщаяФорма.Форма2", , , , Окно);

Но в таком случае смена раздела не происходит. Что бы сменить раздел можно воспользоваться функцией ПерейтиПоНавигационнойСсылке() и написать примерно так:

        ПерейтиПоНавигационнойСсылке("e1cib/navigationpoint/Подсистема2");
    ОткрытьФорму("ОбщаяФорма.Форма2", , , , Окно);

Но форма откроется уже в отдельном окне, а это не есть гут. Надо указать, что окно стоит открывать в главном окне. В итоге код получился таким:

        &НаКлиенте
    Процедура ПерейтиНаФорму2(Команда)
        ПерейтиПоНавигационнойСсылке("e1cib/navigationpoint/Подсистема2");
        ОткрытьФорму("ОбщаяФорма.Форма2", , , , ПолучитьОкна()[0]);
    КонецПроцедуры

Используется функция ПолучитьОкна(), которая возвращает массив окон приложения. В этом массиве под номером 0 указывается главное окно формы.
Данный метод одинаково хорошо работает на всех видах клиентов и в веб-клиенте тоже.

1С:Предприятие 8. Веб-сервисы. Ошибки веб-сервисов и их причины


Содержание статей: 1С:Предприятие 8. Веб-сервисы
Предыдущая статья: 1С:Предприятие 8. Веб-сервисы. Возвращаем массив


Хочу рассказать об ошибках, с которыми столкнулся при разработке веб-сервисов на 1С. Статью буду дополнять по мере получения опыта.

1
Это сообщение об ошибке при подключении к веб сервису из PHP.
[31-Mar-2013 05:32:02 UTC] PHP Fatal error:  SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://test.ru/test/ws/WebServices?wsdl' : failed to load external entity

Данное сообщение говорит лишь о недоступности веб-сервера, на котором опубликована база. В этом случае попробуйте вручную вызвать http://test.ru/test/ws/WebServices?wsdl и убедиться, что WSDL формируется. Если не формируется, значит либо веб-сервер выключен, либо база опубликована по другому адресу или порту, либо блокирует фаервол. Могут быть и другие причины.