1с поиск элемента формы

Программная работа со справочниками

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

Создание элемента справочника

Создание новой группы:

Создание нового элемента:

Поиск элементов справочника

Для поиска элементов справочников в языке программирования 1С предусмотрено несколько методов:

Во всех методах если поиск успешный, то будет возвращена ссылка на найденный элемент.

Изменение элементов справочника

Для изменения реквизитов справочника необходимо выполнить следующие действия:

Программное изменение справочника возможно только на стороне сервера.

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

Удаление элементов справочника

Элементы справочника могут быть помечены на удаление и удалены из базы непосредственно.

Пометку на удаление можно установить/снять двумя разными способами:

Пример непосредственного удаления элемента справочника:

Обход элементов справочника

Для обхода элементов справочника в языке программирования 1С предусмотрено два метода:

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

Рассмотрим примеры обхода элементов справочника:

Выбор элементов справочника запросом

Простой пример поиска и вывода товаров со стоимостью больше 1000:

Открытие форм справочника

Для открытия любых форм справочников рекомендуется использовать метод

Для открытия формы элемента или группы справочника также возможно использовать более простой метод

Кроме методов ОткрытьФорму () и ПоказатьЗначение () есть и другие (ОткрытьФормуМодально, ОткрытьЗначение, ПолучитьФорму), но их использование не рекомендуется, т.к. часть этих методов использует режим модального открытия, часть противоречит свежим рекомендациям фирмы 1С.

Приведем примеры программного открытия форм справочника:

Внимание!

Следует понимать, что интерактивная работа (в том числе открытие форм) в 1С возможна только на стороне клиента. В то же время поиск и изменение данных возможны только на стороне сервера.

Остались вопросы?
Спросите в комментариях к статье.

Источник

Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download

242c6b510215f7347a73eb99495ad236 close

Реализация поиска по первым символам в Управляемых формах

Пользователь кликают ячейку в колонку которая его интересует, когда решил что пора искать нажимает CTRL+S, набирает первые символы искомого объекта и далее нажимает вперед или назад. Поиск работает аналогично как обычных формах.

Краткое описание алгоритма:

Осуществляем выборку всех объектов, по правилам отбора которые настроены в динамическом списке и упорядочиваем наш результат выборки. Для того что бы результат запроса был пронумерован используем СКД с выводом в таблицу значений. Для того чтобы таблицу значений хранить на клиенте создаем реквизит на форме с типом таблица значений. Полученную таблицу из СКД, выгружаем в реквизит формы. И если пользователь нажал вперед то в динамическом списке делаем текущую строку, ссылку на следующий объект, после объекта активной строки из нашей таблицы значений в реквизите формы. И если пользователь нажал назад то в динамическом списке делаем текущую строку, ссылку на предыдущий объект, после объекта активной строки из нашей таблицы значений в реквизите формы.

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

1) Создаем форму списка

2) У формы списка создаем два реквизита

а) СтрокаПоиска с типом Строка

б) ВыборкаПоОбъект с типом таблица значений

3)На форме списка размещаем реквизит формы «СтрокаПоиска» в поле ввода и назначаем горячую клавишу «Ctrl+S».

4) Создаем две команды формы Вперед и Назад, размещаем их на форме списка. Командам назначаем обработчики.

5)В объекте, в нашем случае в номенклатуре создаем СКД с помощью которой будет формироваться список объектов по которым будет ходить курсор поиска. В СКД пишем запрос так что бы потом представлялось возможным открыть его в конструкторе запроса, а в коде заменить определенные подстроки и получить запрос к исполнению. А именно в время поиска важна Сортировка в списке объектов и то в какая ячейка сейчас выделена (по ней искать и нужно).

УПОРЯДОЧИТЬ ПО
&ПараметрУПР

В этом запросе потом меняем

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

5) программно переносим отборы настроенные в динамическом списке в нашу СКД поиска (этого пока не реализовано в примере, если будет актуально хотя бы нескольким пользователям то можно и доработать).

6) Так же в настройках СКД предусмотрительно добавляем возможные отборы, для иерархического справочника это будет Родитель элемента.

В случае если поиск в иерархическом справочнике, и отображение не списком то будет заполнять отбор

7) У элемента формы СПИСОК создаем событие «СписокПриАктивизацииЯчейки» в нем прописываем заполнение переменой «АктинаяЯчейка» объявленной в модуле формы:

8) У поля ввода «СтрокаПоиска» (пункт 3), создаем обработчик события «АвтоПодбор», в нем прописываем:

ПараметрыПоиска = ФормированиеСтруктурыПоиска ();
ПоискПодобноНаСервер ( ПараметрыПоиска );

9)В обработчиках команд форм «ВПЕРЕД» и «НАЗАД» пишем

Процедура Вперед ( Команда )

НомерТекущегоДокумента = СтрокаДокумента [ 0 ]. СистемныеПоляНомерПоПорядку ;

&НаКлиенте
Процедура Назад ( Команда )

НомерТекущегоДокумента = СтрокаДокумента [ 0 ]. СистемныеПоляНомерПоПорядку ;

10) Пишем вспомогательные процедуры

&НаСервереБезКонтекста
Функция ПоискПодобно ( ПараметрыПоиска )

ПроцессорВыводВКолецкцию =Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений ;
ВыборкаПоОбъект = Новый ТаблицаЗначений ;

Источник

Как получить значение элемента формы 1С

1. Реквизиты объекта и реквизиты формы в 1С

В обычном приложении у элемента формы 1С 8.3 было свойство «Значение», доступное как для чтения, так и для записи. Какой аналог в управляемом приложении?

Элементы формы 1С 8.3 могут содержать реквизиты двух видов: реквизиты объекта 1С и реквизиты формы.

1

Красным помечен реквизит объекта 1С Контрагент, а зеленым – реквизит формы в 1С.

Интерактивно выберем эти элементы в пользовательском режиме 1С и попробуем прочитать их «программно» кнопкой «Прочитать».

2

Если читать значения реквизитов в клиентской процедуре, то код для 1С Предприятия будет следующий:

3

3a

Все бы хорошо: мы получили на клиенте значения реквизитов объекта 1С и формы, но – не значения элементов формы 1С. На клиенте значение элементов формы 1С получить нельзя.

2. Как получить значения из элементов формы 1С

Чтобы получить значения из элементов формы 1С, нам потребуется серверный вызов:

4

Именно на сервере у элемента формы 1С 8.3 становится доступно свойство ПутьКДанным, по которому его можно извлечь либо из Объекта, который имеет тип ДанныеФормыСтруктура:

5

…либо из Формы, которая имеет тип ФормаКлиентскогоПриложения:

6

Форма и ее элементы не видны на сервере без контекста. То есть код для 1С:Предприятия выдаст множество ошибок.

Также Форму нельзя передать как параметр в процедуру и функцию на сервер или в общий модуль.

7

8

Новое значение доступно как параметр процедуры ВыбранноеЗначение.

9

Система дает шанс что-то сделать в этой ситуации.

Источник

Реализация поиска по первым символам в Управляемых формах

Пользователь кликают ячейку в колонку которая его интересует, когда решил что пора искать нажимает CTRL+S, набирает первые символы искомого объекта и далее нажимает вперед или назад. Поиск работает аналогично как обычных формах.

Краткое описание алгоритма:

Осуществляем выборку всех объектов, по правилам отбора которые настроены в динамическом списке и упорядочиваем наш результат выборки. Для того что бы результат запроса был пронумерован используем СКД с выводом в таблицу значений. Для того чтобы таблицу значений хранить на клиенте создаем реквизит на форме с типом таблица значений. Полученную таблицу из СКД, выгружаем в реквизит формы. И если пользователь нажал вперед то в динамическом списке делаем текущую строку, ссылку на следующий объект, после объекта активной строки из нашей таблицы значений в реквизите формы. И если пользователь нажал назад то в динамическом списке делаем текущую строку, ссылку на предыдущий объект, после объекта активной строки из нашей таблицы значений в реквизите формы.

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

1) Создаем форму списка

2) У формы списка создаем два реквизита

а) СтрокаПоиска с типом Строка

б) ВыборкаПоОбъект с типом таблица значений

3)На форме списка размещаем реквизит формы «СтрокаПоиска» в поле ввода и назначаем горячую клавишу «Ctrl+S».

4) Создаем две команды формы Вперед и Назад, размещаем их на форме списка. Командам назначаем обработчики.

5)В объекте, в нашем случае в номенклатуре создаем СКД с помощью которой будет формироваться список объектов по которым будет ходить курсор поиска. В СКД пишем запрос так что бы потом представлялось возможным открыть его в конструкторе запроса, а в коде заменить определенные подстроки и получить запрос к исполнению. А именно в время поиска важна Сортировка в списке объектов и то в какая ячейка сейчас выделена (по ней искать и нужно).

УПОРЯДОЧИТЬ ПО
&ПараметрУПР

В этом запросе потом меняем

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

5) программно переносим отборы настроенные в динамическом списке в нашу СКД поиска (этого пока не реализовано в примере, если будет актуально хотя бы нескольким пользователям то можно и доработать).

6) Так же в настройках СКД предусмотрительно добавляем возможные отборы, для иерархического справочника это будет Родитель элемента.

В случае если поиск в иерархическом справочнике, и отображение не списком то будет заполнять отбор

7) У элемента формы СПИСОК создаем событие «СписокПриАктивизацииЯчейки» в нем прописываем заполнение переменой «АктинаяЯчейка» объявленной в модуле формы:

8) У поля ввода «СтрокаПоиска» (пункт 3), создаем обработчик события «АвтоПодбор», в нем прописываем:

ПараметрыПоиска = ФормированиеСтруктурыПоиска ();
ПоискПодобноНаСервер ( ПараметрыПоиска );

9)В обработчиках команд форм «ВПЕРЕД» и «НАЗАД» пишем

Процедура Вперед ( Команда )

НомерТекущегоДокумента = СтрокаДокумента [ 0 ]. СистемныеПоляНомерПоПорядку ;

&НаКлиенте
Процедура Назад ( Команда )

НомерТекущегоДокумента = СтрокаДокумента [ 0 ]. СистемныеПоляНомерПоПорядку ;

10) Пишем вспомогательные процедуры

&НаСервереБезКонтекста
Функция ПоискПодобно ( ПараметрыПоиска )

ПроцессорВыводВКолецкцию =Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений ;
ВыборкаПоОбъект = Новый ТаблицаЗначений ;

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с поиск по таблице значений на форме
  • 1с поиск и замена значений управляемые формы