Новости экономики и финансов. Курсы валют, ситуация на биржах, акции, котировки, аналитика: 💫 💫 💫 💫 💫 читайте на сайте

1C Управляемые Формы Обработка Прерывания Пользователя • Объект сообщениепользователю

Если нужно добавить реквизит, например, табличной части объекта, то уже в реквизите Путь указать путь к ТЧ реквизита Объект.

Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Если отладка вызывается в контексте сервера или тонкого или веб клиента, необходимая информация сохраняется в справочник Данные для отладки. 1С 8 Управляемые формы – программное изменение Обращайтесь в форму связи

Пишем код обработчика команды

Теперь наша задача написать код на внутреннем языке 1С, который будет перебирать все элементы справочника «Сотрудники».

Сразу хочу сказать, что этот код нельзя писать прямо в процедуре «ВыводВсехСотрудников», так как она выполняется на клиенте (обратите внимание на специальную строчку перед процедурой «&НаКлиенте»). Попытка прочитать данные из базы в клиентской процедуре всегда будет приводить к ошибке (пока просто запомните это).

Поэтому давайте допишем в конце модуля процедуру такого вида:

Обратите внимание, что перед ней я указал признак «&НаСервере». Это означает, что она будет выполняться на сервере, а значит мы можем из неё читать данные справочника.

Теперь организуем вызов этой процедуры из клиентской «ВыводВсехСотрудников»:

  1. Пользователь вызывает команду «ВыводВсехСотрудников» (например, нажатием на кнопку, которой у нас ещё правда нет)
  2. Команда запускает одноименную процедуру-обработчик «ВыводВсехСотрудников» на клиенте (ведь кнопка, а значит и команда находятся на клиенте)
  3. Клиентская процедура «ВыводВсехСотрудников» делает вызов серверной процедуры «ВыводВсехСотрудниковНаСервере»
  4. Серверная процедура «ВыводВсехСотрудниковНаСервере» читает данные справочника из базы и выводит их в окно сообщений

Нам осталась самая малость — написать код процедуры «ВыводВсехСотрудниковНаСервере», который пробегается по элементам справочника «Сотрудники» и выводит их в окно сообщений.

Это на самом деле несложно. Обход всех справочников в 1С однотипен. А значит научившись это делать сейчас со справочником «Сотрудники», вы сможете делать также и с любыми другими справочниками.

Для доступа к данным справочника используется менеджер, доступ к которому осуществляется так:

В этом предложении ключевая часть находится справа от знака равно. Слева — это просто переменная, в которую мы сохраняем менеджер, чтобы работать с ним дальше. Имя этой переменной могло быть не только «Менеджер», но и любое другое — хоть «Барабашка».

Что представляет из себя менеджер справочника? Менеджер — это ещё не сами данные справочника. Менеджер — это некоторый программный объект (можете представлять его себе в виде чёрного ящика), через который мы можем что-либо делать со справочником.

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

Какую часть дохода тратите на еду?
До 50%Больше 50%

Чтобы сделать это — необходимо вызвать встроенный в менеджер метод «Выбрать». Вызывается он через точку после имени переменной, в которой хранится менеджер, и возвращает коллекцию элементов справочника:

Что представляет из себя выборка? Выборка (опять же это только имя переменной, в которую мы сохраняем результат работы метода «Выбрать» и оно могло бы быть любым другим) представляет из себя коллекцию, но не такую, как например массив или список значений.

GitHub — cpr1c/tools_ui_1c: Универсальные инструменты 1С для управляемых форм

Пишем код обработчика команды

Теперь наша задача написать код на внутреннем языке 1С, который будет перебирать все элементы справочника «Сотрудники».

Сразу хочу сказать, что этот код нельзя писать прямо в процедуре «ВыводВсехСотрудников», так как она выполняется на клиенте (обратите внимание на специальную строчку перед процедурой «&НаКлиенте»). Попытка прочитать данные из базы в клиентской процедуре всегда будет приводить к ошибке (пока просто запомните это).

Поэтому давайте допишем в конце модуля процедуру такого вида:

Обратите внимание, что перед ней я указал признак «&НаСервере». Это означает, что она будет выполняться на сервере, а значит мы можем из неё читать данные справочника.

Теперь организуем вызов этой процедуры из клиентской «ВыводВсехСотрудников»:

  1. Пользователь вызывает команду «ВыводВсехСотрудников» (например, нажатием на кнопку, которой у нас ещё правда нет)
  2. Команда запускает одноименную процедуру-обработчик «ВыводВсехСотрудников» на клиенте (ведь кнопка, а значит и команда находятся на клиенте)
  3. Клиентская процедура «ВыводВсехСотрудников» делает вызов серверной процедуры «ВыводВсехСотрудниковНаСервере»
  4. Серверная процедура «ВыводВсехСотрудниковНаСервере» читает данные справочника из базы и выводит их в окно сообщений

Нам осталась самая малость — написать код процедуры «ВыводВсехСотрудниковНаСервере», который пробегается по элементам справочника «Сотрудники» и выводит их в окно сообщений.

Это на самом деле несложно. Обход всех справочников в 1С однотипен. А значит научившись это делать сейчас со справочником «Сотрудники», вы сможете делать также и с любыми другими справочниками.

Для доступа к данным справочника используется менеджер, доступ к которому осуществляется так:

Горящие товары с бесплатной доставкой
 «AliExpress Россия» работает отдельно от глобального «AliExpress» принадлежащего Alibaba. Он не зависит от мировых банковских систем и не попал под санкционный список со стороны США и Великобритании. Из Китая соответственно тоже можно заказывать ничего не опасаясь.

В этом предложении ключевая часть находится справа от знака равно. Слева — это просто переменная, в которую мы сохраняем менеджер, чтобы работать с ним дальше. Имя этой переменной могло быть не только «Менеджер», но и любое другое — хоть «Барабашка».

Что представляет из себя менеджер справочника? Менеджер — это ещё не сами данные справочника. Менеджер — это некоторый программный объект (можете представлять его себе в виде чёрного ящика), через который мы можем что-либо делать со справочником.

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

Чтобы сделать это — необходимо вызвать встроенный в менеджер метод «Выбрать». Вызывается он через точку после имени переменной, в которой хранится менеджер, и возвращает коллекцию элементов справочника:

Что представляет из себя выборка? Выборка (опять же это только имя переменной, в которую мы сохраняем результат работы метода «Выбрать» и оно могло бы быть любым другим) представляет из себя коллекцию, но не такую, как например массив или список значений.

Менеджер — это некоторый программный объект можете представлять его себе в виде чёрного ящика , через который мы можем что-либо делать со справочником.

Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Поэтому было бы правильней в форме подбора поместить их на серверную сторону, а уже на стороне документа обработать и и поместить в объект документа. Создание конфигураций 1С: добавляем обработку Обращайтесь в форму связи

Как открыть вторую форму внешней обработки в управляемом приложении 1С

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

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

//Обойдем в цикле все реквизиты внешней обработки и запишем их в структуру
_Объект = РеквизитФормыВЗначение ( «Объект» ) ;
СтруктураПараметров = Новый Структура ;
Для каждого Реквизит из _Объект . Метаданные ( ) . Реквизиты Цикл
СтруктураПараметров . Вставить ( Реквизит . Имя , Объект [ Реквизит . Имя ] ) ;
КонецЦикла ;

//Можно добавить и табличные части, и реквизиты первой формы.
СтруктураПараметров . Вставить ( «РеквизитФормы1» , РеквизитФормы 1 ) ;
СтруктураПараметров . Вставить ( «ТабличнаяЧасть1» , Объект [ «ТабличнаяЧасть1» ] . Выгрузить ( ) ) ;

//Теперь помещаем эти данные в хранилище и получаем адрес этого хранилища
АдресПередаваемыхПараметров = ПоместитьВоВременноеХранилище ( СтруктураПараметров , Новый УникальныйИдентификатор ) ;

//Создаем структуру с параметрами, которые передадим во вторую форму
_Параметры = новый Структура ( «Адрес» , АдресПередаваемыхПараметров ) ;

//Создаем оповещение, которое сработает при закрытии второй формы,
//т.к. измененные в ней данные нужно передать обратно в первую.
ОписаниеОповещения = Новый ОписаниеОповещения ( «ОбработатьЗакрытиеВторойФормы» , ЭтаФорма ) ;

//Ну и, наконец, открываем вторую форму
ОткрытьФорму ( «ВнешняяОбработка.ВыпускПроданнойПродукции.Форма.ФормаПараметровЗаполненияУПР» , _Параметры , ЭтаФорма . ОписаниеОповещения ) ;

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

&НаСервере
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )

//Получаем сохраненные в хранилище данные
СтруктураПараметров = ПолучитьИзВременногоХранилища ( Параметры . Адрес ) ;

//Загружаем табличную часть
Объект [ «ТабличнаяЧасть1» ] . Загрузить ( СтруктураПараметров [ «ТабличнаяЧасть1» ] ) ;

//Загружаем реквизиты внешней обработки
_Объект = РеквизитФормыВЗначение ( «Объект» ) ;
Для каждого Реквизит из _Объект . Метаданные ( ) . Реквизиты Цикл
Объект [ Реквизит . Имя ] = СтруктураПараметров [ Реквизит . Имя ] ;
КонецЦикла ;

При закрытии второй формы нужно сделать то же самое: собрать все данные в хранилище, передать в процедуру оповещения в первой форме и обработать там.

Передача данных между управляемыми формами: Статьи и материалы.

💥Принимайте участие в опросе и получайте бесплатную консультацию

Related posts

Добавить комментарий

*