Опубликовано ср, 18/04/2012 — 00:07 пользователем guru
1. Создаём Критерий отбора.
2. Выбираем тип данных, по которому будет производиться отбор в списке документов.
3. Выбираем справочники и документы, в которых будет применяться отбор.
4. Создаём новую форму списка копированием.
5. Добавляем реквизит формы с типом данных как и в критерии отбора.
6. Добавляем на форму поле ввода. (Данные – реквизит формы, созданный в п.5. Выбор групп и элементов – Элементы.)
7. Создаём обработчик события ПриИзменении.
//Отбор по номенклатуре
Процедура НоменклатураПриИзменении(Элемент)
Если ЗначениеЗаполнено(Номенклатура) Тогда
Отбор.ОтборПоНоменклатуре.Установить(Номенклатура);
Иначе
Отбор.ОтборПоНоменклатуре.Использование = Ложь;
КонецЕсли;
КонецПроцедуры
8. Устанавливаем созданную форму в качестве основной формы списка.
© При копировании материалов сайта ссылка на оригинал обязательна.
|
|||
| bplmeddy
19.07.16 — 13:41 |
Добрый день. |
||
| Горогуля
1 — 19.07.16 — 13:42 |
ссылка в списке |
||
| bplmeddy
2 — 19.07.16 — 13:44 |
(1) Не очень Вас понял. Если можно — поподробней обьясните пожалуйста. |
||
| PR
3 — 19.07.16 — 13:45 |
Вообще-то из коробки уже работает, че вы там городите? |
||
| Горогуля
4 — 19.07.16 — 13:45 |
наклади фильтр по ссылке. чтоб она была в заранее подготовленном списке |
||
| bplmeddy
5 — 19.07.16 — 13:47 |
(4) Воистину,всё гениальное — просто. Идея насколько простая, настолько и хороша. Спасибо огромное, буду пробовать. |
||
| hhhh
6 — 19.07.16 — 13:48 |
критерии отбора покурите |
||
| PR
7 — 19.07.16 — 13:49 |
(0) УФ? |
||
| bplmeddy
8 — 19.07.16 — 13:50 |
(7) Нет. |
||
| bplmeddy
9 — 19.07.16 — 13:53 |
(4) (5) Хотя есть и трудность. Если таких документов 10-15, а вывести надо все? Фильтр то работает по принципу Равно/Неравно, а ссылки уникальны. Вот и загвоздка. |
||
| Горогуля
10 — 19.07.16 — 13:54 |
ссылка в списке. в списке ссылка. списке ссылка в. в ссылка списке |
||
| hhhh
11 — 19.07.16 — 13:56 |
(9) тогда критерии отбора покурите |
||
| bplmeddy
12 — 19.07.16 — 13:56 |
(10) Прошу простить мою «глупость» , но нИпонятнА =( |
||
| lera01
13 — 19.07.16 — 13:59 |
(12) Чтобы организовать отбор по всем документам какого-то вида, в табличной части которых есть реквизит с нужным вам значением, нужно написать запрос. По результату запроса сформировать список ссылок на документы и засунуть их в отбор. |
||
|
Горогуля 14 — 19.07.16 — 13:59 |
(12) Фильтр работает не только по принципу Равно/Неравно |
Быстрый старт в Python для 1С Разработчиков | 1s-to-python.ru
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 47
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
Быстрый отбор в справочнике по первой букве 0
В статье описан способ быстрой организации отбора в списке справочника по первой букве наименования. Механизм легко дотачивается под собственные нужды.
https://helpf.pro/uploads/img/_1-T4ZDj6uNPX.png
// ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ
НаКлиенте
Ввод записей в журнал расчетов 1
Добавление записи в журнал расчетов:
Метод Новая может быть вызван где угодно, в глобальном модуле, модуле обработок, документов и т.д.
Данный метод проверяет корректность заполненных реквизитов журнала расчетов. При вводе новых записей журнал
Восстановление узла распределенной информационной базы из резервной копии 0
В случае возникновения ситуации, при которой необходимо восстановить резервную копию информационной базы, работающую в рамках распределенной информационной базы, можно воспользоваться следующими рекомендациями.
Процедура восстановления информационно
Выборка (перебор) бизнес-процессов 0
Выбрать( , , , )
отбора
отбора
(необязательный) — Структура. Задает реквизит вида расчета и значение этого реквизита, по которому будет создана выборка. Ключ структуры задает имя реквизита, а значение структуры — значение отбора по этому рекви
Посмотреть все результаты поиска похожих
|
0 / 0 / 0 Регистрация: 28.05.2010 Сообщений: 26 |
|
|
1 |
|
отбор в списке документов04.06.2010, 14:46. Показов 41612. Ответов 10
Друзья, помогите в модуле формы списка документов прописана следующая процедура Процедура ПриОткрытии(Отказ, СтандартнаяОбработка) которая устанавливает отбор по реквизиту документа автор если его создатель текущий пользователь. однако пользователь может отключить отбор по данному реквизиту в списке документов. как сделать чтобы он не мог отключать отбор по реквизиту автор, или же после отключения опять программно устанавливался отбор по автору. Помогите пожалуйста. 8.1
0 |
|
1 / 1 / 0 Регистрация: 15.11.2009 Сообщений: 947 |
|
|
04.06.2010, 23:50 |
2 |
|
ЭлементыФормы.ДокументСписок.НастройкаОтбора.Автор .Доступность = Ложь; Но при отключении отбора не забыть вернуть в Истину.
0 |
|
0 / 0 / 0 Регистрация: 23.04.2010 Сообщений: 553 |
|
|
05.06.2010, 00:49 |
3 |
|
ДокументСписок.Отбор.Автор.ВидСравнения = ВидСравнения.Равно; Можно заменить 1 строкой: Код ( (Unknown Language)):
ЭлементыФормы.ДокументСписок.НастройкаОтбора.Автор .Доступность = Ложь; Будет красиво и изящно
0 |
|
0 / 0 / 0 Регистрация: 28.05.2010 Сообщений: 26 |
|
|
05.06.2010, 10:29 |
4 |
|
ЭлементыФормы.ДокументСписок.НастройкаОтбора.Автор .Доступность = Ложь; Спасибо! И с заменой трех строк одним условием прикольно! еще хотелось бы уточнить при прописании строки ЭлементыФормы.До….. = Ложь;
0 |
|
0 / 0 / 0 Регистрация: 23.04.2010 Сообщений: 553 |
|
|
05.06.2010, 13:43 |
5 |
|
полностью закрывается отбор для текущего пользователя по колонке «автор» а что добавить чтоб отбор по этой колонке был но при пользовании им, а вернее его отключении, значение отбора по колонке «автор» все равно возвращалось к отбору по автору с текущим имененм пользователя? Не совсем понятен вопрос. Вы хотите запретить снятие отбора по полю «Автор», но в тоже время его блокировать не надо и при отключении отбора, все равно сохранялся фильтр по текущему пользователю?
0 |
|
0 / 0 / 0 Регистрация: 28.03.2004 Сообщений: 1,913 |
|
|
05.06.2010, 15:05 |
6 |
|
Спасибо! И с заменой трех строк одним условием прикольно! Что значит ваше «прикольно»? Анекдотично, скоморошество, буффонада, Сатирично…
0 |
|
0 / 0 / 0 Регистрация: 28.05.2010 Сообщений: 26 |
|
|
05.06.2010, 15:50 |
7 |
|
Не совсем понятен вопрос. Вы хотите запретить снятие отбора по полю «Автор», но в тоже время его блокировать не надо и при отключении отбора, все равно сохранялся фильтр по текущему пользователю? именно, только не полностью запретить а при отключении пользователем отбора его значение возвращалось к фильтру по текущему пользователю
0 |
|
0 / 0 / 0 Регистрация: 23.04.2010 Сообщений: 553 |
|
|
05.06.2010, 16:46 |
8 |
|
«Прав был медведь Винни Пух п**н если есть, то его сразу нет» (с) Тоже и про отбор: Гипотетически сделать то, что вы хотите возможно, но:
0 |
|
0 / 0 / 0 Регистрация: 28.05.2010 Сообщений: 26 |
|
|
05.06.2010, 16:52 |
9 |
|
:fuckyou: Вини Пух да…. ясно, спасибо
0 |
|
0 / 0 / 0 Регистрация: 23.04.2010 Сообщений: 553 |
|
|
05.06.2010, 16:53 |
10 |
|
Мне наверно кажется, но в ветке также кто-то пишет курсовую, с подобной структурой Добавлено:
Вини Пух да…. ясно, спасибо Намек ясен куда копать? P.S. Типа того, только это из Сектора Газа».
0 |
|
0 / 0 / 0 Регистрация: 28.05.2010 Сообщений: 26 |
|
|
05.06.2010, 16:57 |
11 |
|
про Сектор да…. в принципе про направление я понял…. чего-нибудь поразмыслю. Все равно огромное спасибо!
0 |
На днях получил задание реализовать поиск документа по контрагенту, указанному в нем. Все было бы элементарно просто, но структура документа была не совсем обычна. Документ регистрирует продажу долга контрагентов сторонней организации, при этом одним документом может продаваться сразу несколько долгов. Поэтому в документе есть табличная часть, состоящая из двух колонок: Контрагент и СуммаДолга.
Список документов представлен управляемой формой и динамическим списком на ней. И конечно стандартный инструмент Настройка списка дает возможность проводить отбор только по реквизитам документа, но не по реквизитам табличной части.
Рассмотрим причину возникновения этой проблемы. Дело в том, что формирование динамического списка происходит на основе запроса. Этот запрос может быть сформирован как вручную, так и автоматически, если мы указываем Основную таблицу динамического списка. Когда мы создаем форму списка по умолчанию применяется второй способ — автоматическое формирование запроса. При этом в выбираемые поля запроса попадают все реквизиты документа и табличные части. И именно по этим полям потом можно делать отбор. Но табличные части попадают в поле запроса целиком, поэтому сделать отбор по конкретному реквизиту табличной части невозможно.
Решением проблемы может быть изменение стандартного автоматически формируемого запроса. Для этого нужно выполнить следующие действия:
- В свойствах реквизита Список на управляемой форме установим флаг Произвольного запроса и перейдем в Настройку списка. Для наглядности для появившегося запроса можно открыть конструктор запросов.
- В конструкторе запросов необходимо убрать из полей выборки все табличне части. Вместо этого добавим табличную часть, по реквизиту которой необходимо делать отбор, в источники запроса (таблицы).
- Далее левым соединением соединяем табличные части с самим документом.
- И делаем группировку по всем полям (хотя можно и использовать ВЫБРАТЬ РАЗЛИЧНЫЕ).
- На вкладке Компановка данных — Таблицы снимаем флаг Обязательно для табличной части. Это нужно для того, чтобы соединение выполнялось не всегда, а только если используется отбор. Таким образом экономятся ресурсы и ускоряется работа конфигурации.
На вкладке Компановка данных — Условия создаем необходимые условия отбора по необходимым реквизитам табличной части.
- Сохраняем запрос и переходим на вкладку Настройка. Там можно сразу добавить необходимые условия отбора, чтобы пользователям самим не приходилось каждый раз выбирать поля. Не забудьте снять флаги с полей отбора, иначе при открытии формы списка условие отбора будет сразу применено.
ДокументСписок.Отбор.Сбросить();
ДокументСписок.Отбор.статус.ВидСравнения=ВидСравнения.Содержит;
ДокументСписок.Отбор.Статус.Значение="Принята";
ДокументСписок.Отбор.Статус.установить();
Хотите узнать больше по этому вопросу?
Подпишитесь на нашу рассылку новостей
Подписаться
Чтобы задать вопрос или предложить тему статьи, нажмите на кнопку ниже:
Предложить статью
Рассмотрим различные варианты установки отбора при выборе объекта на документе ДокументОтборПриемаТовара. У документа имеются следующие реквизиты (см. рисунок 1):
- ПоставщикОтбор (тип СправочникСсылка.Поставщики);
- ТоварОтбор (тип СправочникСсылка.Товары);
- ОтветственныйОтбор (тип СправочникСсылка.Ответственный);
- ПриемТовара (тип ДокументСсылка.ПриемТовара).
| Рисунок 1. Структура документа ДокументОтборПриемаТовара |
Выбирать будем документ ПриемТовара, а отбор в форме выбора будет устанавливаться по реквизитам с постфиксом Отбор.
Документ ПриемТовара имеет реквизиты (см. рисунок 2):
- Поставщик (тип СправочникСсылка.Поставщики);
- Ответственный (тип СправочникСсылка.Ответственный);
- Комментарий (Тип Строка).
А так же табличную часть Товары, состоящую из реквизитов Товар (тип СправочникСсылка.Товары) и Количество (тип Число).
| Рисунок 2. Структура документа ПриемТовара |
1. Установка отбора в свойствах реквизита объекта метаданных
Самый простой вариант отбора. Нужно всего лишь в свойствах реквизита «Связи параметров выбора» и «Параметры выбора» задать параметры выбора. Допустим, при выборе документа ПриемТовара, нужно в форме выбора показывать документы отобранные по поставщику и только проведенные. Для этого в связях параметров выбора задаем отбор по поставщику, а в параметрах выбора отбор только проведенных документов (см. рисунок 3).
| Рисунок 3. Отбор в свойствах реквизита объекта метаданных |
Больше ничего делать не нужно, платформа сама завернет указанные параметры выбора в структуру (см. рисунок 4) и поместит её в параметр Отбор формы выбора, далее, анализируя данный параметр формы, платформа устанавливает отборы для динамического списка.
| Рисунок 6. Значение параметра формы выбора Отбор |
2. Установка отбора в свойствах элемента формы
Такой же простой вариант как и первый, только те же самые свойства задаются для элемента формы (см. рисунок 5).
| Рисунок 5. Отбор в свойствах элемента формы |
Свойства элемента формы имеют приоритет над свойствами реквизита объекта.
3. Установка собственного отбора при создании формы выбора на сервере
Усложним задачу и будем производить отбор документов по табличной части, а конкретно по товару в ней. Для этого в связях параметров выбора зададим связь, где параметр будет Товар (прям ручками пишем), а реквизит ТоварОтбор (см. рисунок 6).
| Рисунок 6. Связь параметра Товар с реквизитом ТоварОтбор |
Именно такую задаем связь, так как более одной точки(.) в колонке Имя при написании параметра мы не можем использовать (платформенное ограничение), то есть написать «Отбор.Товары.Товар» мы не сможем.
Так как имя параметра мы задали вручную, то платформа его не поместит в параметр Отбор формы выбора, поэтому в форме выбора документа ПриемТовара в обработчике события ПриСозданииНаСервере напишем программный код, который будет обрабатывать наш параметр Товар и устанавливать отбор по реквизиту табличной части:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Товар = Неопределено;
ЭтотОбъект.Параметры.Свойство("Товар", Товар);
Если Товар <> Неопределено Тогда
ФиксОтбор = ЭтотОбъект.Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор;
ЭлементОтбора = ФиксОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товары.Товар");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Товар;
ЭлементОтбора.Использование = Истина;
КонецЕсли;
КонецПроцедуры
4. Программная установка параметров выбора
Так как у элемента формы есть свойства СвязиПараметровВыбора и ПараметрыВыбора, и они доступны не только для чтения, но и на запись, то все что описано выше можно выполнить с помощью программного кода. Для этого в форме документа ДокументОтборПриемаТовара в событии ПриСозданииНаСервере напишем код, который будет формировать массив связей параметров и параметров выбора, и устанавливать их в соответствующие свойства элемента формы ПриемТовара, который связан с реквизитом объекта ПриемТовара:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Создаем связи параметров выбора.
МассивСвязей = Новый Массив;
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Поставщик", "Объект.ПоставщикОтбор");
МассивСвязей.Добавить(НоваяСвязь);
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Ответственный", "Объект.ОтветственныйОтбор");
МассивСвязей.Добавить(НоваяСвязь);
НоваяСвязь = Новый СвязьПараметраВыбора("Товар", "Объект.ТоварОтбор");
МассивСвязей.Добавить(НоваяСвязь);
// Создаем параметры выбора.
МассивПараметров = Новый Массив;
НовыйПараметр = Новый ПараметрВыбора("Отбор.Проведен", Истина);
МассивПараметров.Добавить(НовыйПараметр);
// Устанавливаем связи параметров и параметры выбора для элемента формы.
Элементы.ПриемТовара.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязей);
Элементы.ПриемТовара.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
КонецПроцедуры
Для корректной работы отборов необходимо создать событие ПриСозданииНаСервере с таким же программным кодом как в варианте №3 у формы выбора документа ПриемТовара.
5. Установка параметров выбора в момент начала выбора
Этот вариант позволяет «на лету» устанавливать параметры выбора. Усложним задачу и будем устанавливать отбор только по заполненным реквизитам отбора.
В модуле формы документа ДокументОтборПриемаТовара в событии НачалоВыбора для элемента ПриемТовара, который связан с реквизитом объекта ПриемТовара, напишем код, который будет устанавливать параметры выбора в зависимости от заполненности реквизитов отбора:
&НаКлиенте
Процедура ПриемТовараНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
МассивПараметров = Новый Массив;
Если ЗначениеЗаполнено(Объект.ПоставщикОтбор) Тогда
НовыйПараметр = Новый ПараметрВыбора("Отбор.Поставщик", Объект.ПоставщикОтбор);
МассивПараметров.Добавить(НовыйПараметр);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ОтветственныйОтбор) Тогда
НовыйПараметр = Новый ПараметрВыбора("Отбор.Ответственный", Объект.ОтветственныйОтбор);
МассивПараметров.Добавить(НовыйПараметр);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ТоварОтбор) Тогда
НовыйПараметр = Новый ПараметрВыбора("Товар", Объект.ТоварОтбор);
МассивПараметров.Добавить(НовыйПараметр);
КонецЕсли;
НовыйПараметр = Новый ПараметрВыбора("Отбор.Проведен", Истина);
МассивПараметров.Добавить(НовыйПараметр);
Элементы.ПриемТовара.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
КонецПроцедуры
Для корректной работы отборов необходимо создать событие ПриСозданииНаСервере с таким же программным кодом как в варианте №3 у формы выбора документа ПриемТовара.
6. Открытие формы выбора с установленным параметром формы Отбор в момент начала выбора
Данный способ отличается от предыдущего тем, что мы отменяем стандартную обработку события НачалоВыбора, сами формируем параметр формы Отбор, передаем его в открываемую форму выбора с указанием владельца формы, то есть все делаем за платформу. Обратите внимание, что в данном случае нам не нужно обходить ограничение платформы (больше одной точки в имени параметра), что бы установить отбор по товару в табличной части, достаточно указать параметр отбора Товары типа Структура, в котором ключом будет имя колонки «Товар», а значение ссылка на товар.
&НаКлиенте
Процедура ПриемТовараНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Отбор = Новый Структура;
Если ЗначениеЗаполнено(Объект.ПоставщикОтбор) Тогда
Отбор.Вставить("Поставщик", Объект.ПоставщикОтбор);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ОтветственныйОтбор) Тогда
Отбор.Вставить("Ответственный", Объект.ОтветственныйОтбор);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ТоварОтбор) Тогда
Отбор.Вставить("Товары", Новый Структура("Товар", Объект.ТоварОтбор));
КонецЕсли;
Отбор.Вставить("Проведен", Истина);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ОткрытьФорму("Документ.ПриемТовара.ФормаВыбора", ПараметрыФормы, Элемент);
КонецПроцедуры
Отборы на динамический список платформа наложит сама, писать дополнительно код больше не нужно, как в варианте №3.
А что будет, если отбор в связях параметров выбора и параметры выбора пересекаются?
Как показал мой эксперимент, страшного ничего не случится, платформа установит отбор по связям параметров выбора.












