1с как передать параметр в обработку
Как программно открыть обработку с передачей параметра в 1С
Просто открыть форму обработки можно так:
Открыть форму обработки с передачей параметров:
А в форме обработки, которую открыли, эта ссылка будет доступна через коллекцию “Параметры”.
В обработчике ПриСозданииНаСервере() можно проверить наличие переданных параметров с помощью
Внимание! : Параметры формы доступны только в событии формы “ПриСозданииНаСервере”. Т.е. в других процедурах, с этой ссылкой работать не получится!
Здесь два варианта:
1) Создать реквизит формы, допустим, с именем “СсылкаНаДокумент”. И в событии “ПриСозданииНаСервере” заполнить этот реквизит.
И дальше уже работать с ним.
2) Создать не реквизит формы, а параметр (закладка “Параметры” – там же рядом с закладками “Реквизиты” и “Команды”). Назвать его надо будет так же, как ключ структуры, используемый в коде открытия формы (в моем примере – “ДокСсылка”). И в свойствах этого параметра установить флаг “Ключевой параметр”.
Тогда к этому параметру можно будет обращаться так, как указано выше – Параметры.ДокСсылка. Но уже не только в событии “ПриСозданииНаСервере”, а в любой процедуре модуля формы.
Поиск по сайту
Okolokompa в Яндекс Дзен
Все материалы и продукты на этом сайте выложены в целях ознакомления для зарегистрированных пользователей фирм производителей материала или продукта, или его авторов. Помните, что скачанные материалы или продукты, Вы используете на свой страх и риск. Автор и администрация этого сайта не несет никакой ответственности за использование этих материалов или продуктов третьими лицами.
В случае, если вы используете один из перечисленных здесь материалов или продуктов, Вы обязаны официально приобрести его у фирмы производителя или автора.
1с как передать параметр в обработку
Параметр и контекст формы
| Параметр и контекст формы. Передача параметра и работа с ним. Передача контекста, как параметра. | Автор статьи: Ангел-Хоронитель | Редакторы: Волшебник, Ангел-Хранитель Последняя редакция №12 от 28.05.06 | История URL: http://kb.mista.ru/article.php?id=172 |
Ключевые слова: параметр, контекст, форма, передача, передать
Итак, что же такое параметр?
Параметр – это значение, передаваемое в форму при открытии. Параметр может иметь любой тип и принимать любое значение.
Зачем нужен параметр?
Параметр нужен для передачи в форму дополнительных значений. Например: откуда открыта форма.
Как передать параметр?
Параметр передается в форму при открытии. Например:
Как получить параметр в открывшейся форме?
Получить параметр, переданный в форму, мы можем таким образом:
Как передать несколько значений?
Поскольку параметр может принимать любое значение, он может принимать значение типа Список. Пример
Пример обработки его в открывшейся форме:
Что такое контекст формы?
Контекст – это идентификатор формы, что-то вроде ее имени. Он используется для того, чтобы точно указать программе, к какой форме вы обращаетесь. То есть с помощью контекста можно обращаться к одной форме из другой.
Как работать с контекстом?
Все довольно просто. Для того, чтобы с контекстом работать, его надо сначала передать.
Передается он с помощью параметра. Например:
Но правильнее будет воспользоваться такой процедурой в глобально модуле:
использовать ее нужно так:
Для закрепления полученных знаний приведем практический пример.
Создадим тестовую обработку, и назовем ее Пример. Добави на нее кнопку Закрыть для закрытия формы. Теперь добавим на нее Текстовый реквизит и пропишем ему в поле Формула ТР. Также в модуле формы пропишем:
Теперь откроем форму списка справочника Номенклатура и добавим туда кнопку. В формуле кнопки напишем
Запустите 1С, откройте справочник номенклатуры, нажмите кнопку. Откроется форма и там будет наименование выбранной номенклатуры. Мы передали параметр.
Теперь передадим несколько значений. У кнопки поменяем формулу на ОткрытьПример(). Опишем процедуру:
В обработке перепишем:
Пробуем. В зависимости от того, группа или нет, текущий элемент, в обработке пишется полное наименование или обычное.
Теперь поработаем с контекстом. Перепишем процедуру ОткрытьПример:
Изменим и обработку:
В текстовом реквизите на обработке в формулу пропишем Надпись() и приделаем туда еще одну кнопку Обновить у которой в формулу пропишем Форма.Обновить()
Запускаем. При открытии в текстовом реквизите высвечивается текущий элемент справочника, но при его смене надпись не меняется, а меняется она только после нажатия кнопки Обновить. То есть текстовый реквизит на форме не обновляется. Незадача? Давайте решим и ее. Оказывается, при открытии формы можно получить и ее контекст из места открытия. В форме списка справочника объявим переменную ПримерКонт. Перепишем процедуру ОткрытьПример:
Теперь в функции какого-нить текстового реквизита (например ИнформационнаяНадпись()), пропишем такие строки:
Практика: Передаем произвольный параметр и открываем форму выбранной нами дополнительной обработки
В этой статье я решил собрать 2 практических случая, которые используются не так часто, но которые нужно знать, чтобы вообще знать что так можно. Все это я решил сделать и показать в одной конфигурации на базе БСП. Для данного примера скачал с официального сайта 1с (https://releases.1c.ru/) версию БСП 3.0.1.428.
1. Передача пользовательского параметра в управляемое приложение.
Варианты передачи пользовательского параметра.
УП (управляемое приложение) может принимать пользовательские параметры, которые могут передаваться из других приложений. Этот параметр можно обработать произвольным образом. В данной статье в зависимости от его значения будем открывать разные дополнительные обработки, которые используются в любой конфигурации на БСП (библиотеки стандартных подсистем). Существует множество способов передать пользовательский параметр в управляемое приложение, все их описать не представляется возможным, поэтому расскажу про 3 самых простых для меня:
Просто через командную строку (Выполнить > cmd)
В этом случае можно просто указать полный путь к базе 1С и необходимый минимум параметров: «C:\Program Files (x86)\1cv8\8.3.14.1779\bin\1cv8.exe»
Через “батник” (.bat файл)
Все то же самое, только в файле:
Pause нужно для того, чтобы окно не закрылось, как правило останавливать выполнение скрипта считается плохим тоном. Если не установить кодировку 866, то система не сможет корректно прочитать кириллицу.
Вызов через скрипт visual basic (.vbs скрипт)
Пример vbs:
Чтобы не было проблем с кириллицей, можно сохранить в кодировке Windows-1251.
/C [строка текста] — передача параметра в конфигурацию.
Хорошая статья про запуск 1С с параметрами: //infostart.ru/public/104654/
При отладке параметр можно передавать из конфигуратора:
2. Открытие дополнительной обработки на начальной странице.
Создаем новую обработку.
В конфигурации БиблиотекаСтандартныхПодсистемДемо добавляем новую обработку, предварительно включив возможность редактирования:
Переименуем обработку, например, в ОсновноеРабочееМестоПользователя. В модуле управляемого приложения в событии ПриНачалеРаботыСистемы прописываем следующий код:
Создадим обработку “Моя обработка”.
Далее создадим простую внешнюю обработку, для подключения ее как дополнительную. Назовем ее, к примеру, Моя обработка.
В модуле объекта напишем:
В Функции СведенияОВнешнейОбработке() получим ПараметрыРегистрации:
— укажем версию (удобнее всего указывать дату, сразу понятно что за версия);
— вставим в них новое свойство “Информация”, и нашей информацией;
— укажем БезопасныйРежим = Ложь;
— добавим новую команду, укажем представление, идентификатор, тип команды в свойстве Использование и ПоказыватьОповещение = Ложь;
Создадим форму обработки и назначим ее как основная. На форме создадим декорацию и укажем у нее Заголовок “Это моя обработка”.
После того как подключим, по имени обработки (он же ИдентификаторОбработки по которому в системе определяется уникальность обработки), можно будет к ней обращаться.
Создадим обработку “Моя новая обработка”.
По такому же принципу создадим еще одну дополнительную обработку, но с идентификатором МояНоваяОбработка. Теперь у нас есть выбор из двух обработок, и в зависимости от значения передаваемого параметра мы можем выбирать любую. Чтобы не было совсем скучно на форме нашей новой обработки помимо декорации давайте создадим новую Группу вида Коммандная панель.
А в ней Подгруппу вида Подменю.
Затем создадим две команды и назначим им обработчики. Теперь у нас в группе коммандной панели есть группа подменю, в которой содержатся две команды.
В модуле объекта нашей второй обработки МояНоваяОбработка напишем:
Вернемся к встроенной в конфигурацию обработке.
Теперь вернемся к встроенной в конфигурацию обработке ОсновноеРабочееМестоПользователя и в форме в событии ПриСозданииНаСервере напишем:
Далее создадим новую процедуру ОткрытьФормуОбработки и в событии ПриОткрытии ее вызовем:
Опытным путем удалось установить, что если обращаться в событии ПриОткрытии к ЭтаФорма.Окно и передавать его как параметр для метода ОткрытьФорму(), то обработка не будет открываться в текущем окне. Поэтому тут используется метод глобального контекста ПодключитьОбработчикОжидания() в котором указали имя процедуры, которая должна быть обязательно с ключевым словом Экспорт.
В Функции ПодключитьВнешнююОбработку() подключается обработка из справочника ДополнительныеОбработкиИОтчеты. Метод ОбщегоНазначения.ЗначенияРеквизитовОбъекта() получает сразу одним запросом значение двух реквизитов и возращает их в структуре. Затем из ХранилищеОбработки получаем данные обработки в бинарном формате (ДвоичныеДанные), помещаем во временное хранилище, чтобы методом ВнешниеОбработки.Подключить(), можно было подключить эту обработку в системе и затем уже обращаться к ней в строковом параметре метода ОткрытьФорму().
Как вы поняли, мы будем передавать и анализировать какой параметр приходит. Он строкового типа, поэтому в нем можно передать, к примеру, имя обработки, чтобы она сразу открылась.
Если мы будем передавать пользовательский параметр “МояОбработка”, откроется наша первая обработка, если параметр “МояНоваяОбработка”, откроется наша вторая обработка.
Как видно на скриншоте, в открытой обработке ОсновноеРабочееМестоПользователя мы программно подключили другую обработку, которую определили в нашем пользовательском параметре и открыли основную форму этой обработки внутри окна другой формы.
Передача параметров в формы внешней обработки
Формы:УФ.
Есть внешняя обработка.Нужно в форму обработки передать некоторые данные при открытии.
В модуле формы код подключения.
То есть открыв нужный документ я вижу значок «внешней обработки», нажав на который у меня откроется форма этой обработки.
В самом модуле формы обработки, в процедуре «ВыполнитьКоманду» я пишу что-то вроде
Для передачи параметров в форму внешней обработки всегда нужно указывать эти же параметры на вкладке «Параметры»?
Что я не так сделал?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Передача параметров обработки
Есть обработка. Выбираю на ней кучу флажков, параметров выполнения этой обработки. Также выбираю.
Создание внешней печатной формы с возможностью передачи параметров
Пытаюсь переделать внешнюю печатную форму из 1С 8.2 под версию 8.3, в связи с чем возникают.
Передача параметров из управляемой формы обработки в управляемую форму другой обработки
Есть 2 обработки, в одной из них(Назовём её первой) есть кнопка, при нажатии на которую открывается.
1С:Предприятие 8.3 (8.3.15.1869)
Та же беда.Поле не найдено.
Че-то никак не пойму..а если написать:
Сообщить(Параметры), то будет выведено «ДанныеФормыСтруктура»
А вот потом идет выполнение процедуры «ВыполнитьКоманду»,в которой уже передаются в открываемую форму мои параметры(см.скриншот)
В какой момент то?Вот именно что сначала выполняется «ПриСозданииНаСервере», когда я даже еще не зашел в клиентскую процедуру, где у меня формируется структура параметров открытия.
Именно тут у меня она срубается,так как в Параметры я не передавал еще ничего!
Не говнокод, а говнокодище получается.
Добавлено через 39 секунд
Что написано в функции СведенияоВнешнейОбработке()
Добавлено через 1 минуту
Если форма уже открыта, ПриСозданииНаСервере уже не вызывается. (и даже если вызывается, то все уже давно инициализированно)
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Загрузка формы внешней обработки
Добрый вечер. 1с 8.1, создаю регламентное задание, которое теоретически должно открывать форму.
1с 7.7 Вызов процедуры внешней обработки из другой внешней обработки
Здравствуйте всем! Вопрос такой: Есть внешняя обработка Обработка1. Обработка1 запускается через.
Добавление данных в форму списка из формы выбора внешней обработки
Добрый день, поставили задачу создать внешнюю форму. Форма должна содержать два поля выбора, в.

Добрый день, форумчане. Сильно не пинайте. Ситуация такая: из главной формы вызываю дочернюю.

Доброго времени суток, господа программисты. Нужно написать две программы, используя для этого HTML.
Как программно открыть внешний отчет из «Дополнительных отчетов и обработок» и передать параметры (при помощи БСП)
Дано: конфигурация на платформе 1С 8.3. В «Дополнительные отчеты и обработки» загружен отчет или обработка.
Задача: открыть данный отчет/обработку программно в коде, например, по кнопке.
В моем случае нужно было на одну из форм документа в конфигурации добавить кнопку, которая бы открывала внешний отчет (зарегистрированный через дополнительные отчеты и обработки), с фильтром по данному документу. Чтобы не изменять саму конфигурацию, было сделано расширение к данному документу (расширения здесь не будут рассматриваться, данное описание только в качестве примера), которое добавляло кнопку на форму документа.
Далее рассмотрим пример кода, который будет срабатывать по нажатию кнопки и открывать внешний отчет.
В сети интернет много примеров, как открыть внешний отчет или обработку. Большинство из них содержит код загрузки из файла, если это внешний файл отчета.
Итак, в БСП есть модуль работы со справочником «Дополнительные отчеты и обработки» (ДополнительныеОтчетыИОбработки), в частности есть процедура открытия отчета и функция подключения внешнего отчета:
Вторая вызывается из первой, но ее также можно вызвать и отдельно (что и будет сделано ниже).
Один из вариантов использовать первую процедуру, но он мне не понравился из-за необходимости излишних действий, чтобы заполнить переменную ВыполняемаяКоманда, а также тем, что передать параметры в отчет можно только массивом (ОбъектыНазначения).
Поэтому решила использовать функцию под номером 2, что подключает нужный отчет/обработку, который затем можно открыть по имени, возвращаемому данной функцией.
Итак, сам пример (полный код):
Пример формы с кнопками, вызывающими эти процедуры:
Скачать пример данной формы можно в файлах к статье.
Если вызывается отчет на СКД, то нужно создать для него типовую форму. Подробнее см. Как добавить типовую форму для СКД
Примечание: создавать форму, как оказалось, не обязательно. См. вариант вызова СКД без создания формы
Чтобы сработал код передачи параметров в СКД (ОткрытьВнешнийОтчетСКДсПараметром), нужно в модуле объекта СКД добавить код, принимающий эти параметры:
Скачать пример данного СКД отчета можно в файлах к статье.
Также пробовала передавать параметры в СКД вот так:
Однако возникала ошибка: Невозможно применить фиксированные настройки. Пересекаются элементы отбора.
Поэтому выше описала, как передавала параметры отбора в отчет СКД при котором такой ошибки не было.
Обработки тестировались на демо-базе БСП версии 2.4.5.
См. также Как в СКД по щелчку на какой-либо ячейке в отчете получить значение другой ячейки (там применяется метод, описанный в статье для вызова внешней обработки в качестве расшифровки ячейки СКД)











