Содержание:
1. Критерии отбора в 1С
2. Пример создания отбора в 1С 8
3. Связанные документы в 1С 8.3
1. Критерии отбора в 1С
Критерии отбора в 1С – это некоторый объект в метаданных, при помощи которого можно производить отборы информации внутри базы системы 1С по представленным параметрам поиска – условиям. Можно сказать, что критерии отбора – это сводка правил, согласно которым может быть произведён выбор информации по некоторому условию в пользовательском режиме.
Рассмотрим, как происходит отбор в журнале по критерию «Контрагент»:
Рис. 1 Отбор по критерию «Контрагент»
Данный метод очень удобен для создания структуры с подчинённостями. Её можно посмотреть, кликнув на «Перейти к иерархическому списку связанных документов», как показано ниже:
Рис. 2 Перейти к иерархическому списку связанных документов в 1С
Рассмотрим, как происходит работа связанных критериев отбора в системе 1С. Запустим 1С как «Конфигурато и откроем в метаданных раздел с критериями, как показано ниже:
Рис. 3 Раздел с критериями отбора в 1С
В «Данных» будет задан «Тип», соответствующий типу значений, которые будут подлежать отбору для поиска.
Как пример, в «ДокументыПоКонтрагенту» – тип «СправочникСсылка.Контрагенты», отбору «ДокументыСотрудников» соответствует тип «СправочникСсылка.ФизическиеЛица», как можно увидеть на скриншотах ниже:
Рис. 4 Использование критериев отбора данных
Рис. 5 Пример с критериями отбора в 1С
Стоит учесть, что можно прописывать любой тип или же определять объект по древу конфигурации, указывая некоторую произвольную ссылку:
Рис. 6 Использование критериев отбора в 1С с произвольной ссылкой
Удобство критериев отбора данных заключается в том, что внутри критерия можно задействовать и реквизиты из различных таблиц.
Во вкладке «Состав» видны элементы, для которых соответствуют данные того типа, который был прописан для работы критерия отбора. В данном окне нужно проставить «галочки» около элементов, при помощи которых производится отбор. Как только данный перечень будет указан, отбор начнёт работать.
Рис. 7 Работа критерия отбора
Видов критериев по отбору может быть много, но для работы с ними необходимо создание форм, которые в последствии можно помещать на панель с инструментами и в меню пользователя. Критерии всех выделенных объектов можно будет просматривать, кликнув на «Ещё».
Рис. 8 Форма критериев отбора в 1С
2. Пример создания отбора в 1С 8
Рассмотрим на примере создание отбора в 1С 8. Создадим «ДокументыПоНоменклатуре», кликнув на «Добавить», как показано на скриншоте с примером ниже:
Рис. 9 Создание отбора в 1С 8
На вкладке «Данные» прописываем его тип «СправочникСсылка.Номенклатура».
На вкладке «Состав» нужно проверить всю документацию и около необходимой проставить «галочки» в «Номенклатура». Это и есть те элементы, при помощи которых происходит отбор.
Рис. 10 Выбор элементов для отбора в 1С 8
Также стоит отметить, что для работы отбора в 1С 8 необходимо, чтобы он находился на рабочем экране у пользователя. Находим на древе справочник «Номенклатура», после чего открываем форму для элемента. На вкладке «Командный интерфейс» устанавливаем «галочку» около строки «Документы по номенклатуре», как показано на скриншоте ниже:
Рис. 11 Критерий отбора в 1С ДокументыПоНоменклатуре
Далее запускаем команду «Обновить конфигурацию базу данных» и делаем сверку работы отбора. Запускаем любой из элементов внутри справочника «Номенклатура» и переходим на ссылку «Ещё», где находится строка «Документы по номенклатуре», как можно увидеть ниже:
Рис. 12 Проверка работы отбора в 1С 8
Кликаем на вышеописанную ссылку, после чего появится перечень документов, внутри которых содержится выбранная позиция:
Рис. 13 Список документов с критерием отбора в 1С
При помощи критериев отбора происходит программно динамический отбор и отображаются все данные, которые являются результатом поиска. Для того чтобы результат был корректным, не стоит делать слишком много видов критериев по отбору.
3. Связанные документы в 1С 8.3
Теперь, как только основные понятия были закреплены, можно перейти к основной теме статьи – связанным документам. Связанные документы в 1С 8.3 работают по схожему принципу. Связи между документами можно увидеть, нажав на «Перейти к иерархическому списку связанных документов». Данная кнопка располагается на панели с инструментами, как показано ниже на скриншоте:
Рис. 15 Связанные документы в 1С 8.3
Чтобы связи между документами отображались и у пользователя, необходимо в настройках для критериев отбора «СвязанныеДокументы», которые находятся во вкладке «Данные», определить перечень нескольких связанных между собой документов, как продемонстрировано ниже:
Рис. 16 Перечень нескольких связанных между собой документов
Также на панели «Состав» определить те документы, которые могут стать документами-основаниями для других:
Рис. 17 Запрос связанные документы
При помощи механизмов для критериев можно получать связанные документы, а также получать список всех связанных элементов у пользователя. Также, стоит отметить, что при описании необходимых критериев в выборке автоматически будут созданы необходимые запросы для связанных документов. Данное свойство делает проще создание любых критериев по отбору данных, а также упрощает реализацию быстрой выборки по выбранным
параметрам.
Специалист компании «Кодерлайн»
Анна Лисовая
Связанные документы
Поиск по критериям отбора связанных документов по ссылке
ВыбДок – документ для которого ищем связные
СвязанныеДокументы = КритерииОтбора.СвязанныеДокументы.Найти(ВыбДок);
Для Каждого ТекСвязанныйДокумент из СвязанныеДокументы Цикл
Сообщить(ТекСвязанныйДокумент);
КонецЦикла;
Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.
Комментарии
AlexMir
#1, 20 сентября 2019 17:35
Этот метод не выводит всю цепочку связанных документов. Выведет только пару связанных документов. Далее этим методом нужно перебрать все полученные документы по цепочке и зафиксировать всю цепочку в списке значений. Затем вывести готовый список значений.
0
11.05.23 – 10:52
Здравствуйте. Подскажите пожалуйста БП 3 задача найти связанные документы. Делаю так
Запрос.Текст=”ВЫБРАТЬ
| СвязанныеДокументы.Ссылка КАК Ссылка
|ИЗ
| КритерийОтбора.СвязанныеДокументы(&Документ) КАК СвязанныеДокументы”;
Результат запроса пустой.
И даже если вообще не задавать параметры к виртуальной таблице все равно пустой. С чем это может быть связано?
1 – 11.05.23 – 10:58
Наверное, у &Документ нет связанных документов, зарегистрированных в этом критерии отбора.
Ваш Кэп
2 – 11.05.23 – 11:06
(1) Есть. И даже если запустить запрос вообще без параметров, то результат запроса пустой. И интерактивно показывает связанные документы. БП типовая на поддержке.
3 – 11.05.23 – 11:07
значит неверно указываете параметр
4 – 11.05.23 – 11:16
(0) Опиши, что с чем связано, и какой параметр указываешь. Возможно, родительский документ пытаешься найти
5 – 11.05.23 – 11:38
(4) По документу “Поступление на расчетный счет” пытаюсь найти связанный документ “Счет на оплату покупателю”. Интерактивно через структуру подчиненности все нахожу. Программно никак. Конфигурация БП 3.0 Типовая на поддержке
6 – 11.05.23 – 11:46
(5) покажите передачу параметра
7 – 11.05.23 – 11:49
(6) Запрос.УстановитьПараметр(“Документ”, Док) Где Док – ссылка на документ “Поступление на расчетный счет”
8 – 11.05.23 – 12:08
(5) ну т.е. ты ищещь родительский документ
попробуй в параметр передать Счет, что будет
Поиск по критерию отбора – это поиск по всем реквизитам документов, указанным в Составе критерия, для которых значение реквизита равно заданному параметру.
9 – 11.05.23 – 12:09
(7) Это ещё надо доказать. Покажите присвоение Док
10 – 11.05.23 – 12:23
(8) Да я ищу родительские документы к документу “Поступление на расчетный счет”, если указываю счет то выводит все подчиненные объекты, мне надо наоборот по подчиненному получить родительские.
11 – 11.05.23 – 12:23
(0)
ОбщаяФорма.СвязанныеДокументы
Читать текст
процедура ВывестиРодительскиеОбъекты(ОсновнойОбъект, ДеревоРодительскиеОбъекты, ВыведенныеОбъекты);
12 – 11.05.23 – 12:41
(10) хорошо что тут телепаты собрались
выбрать ДокументОснование из Документ.ПоступлениеНаРасчетныйСчет где Ссылка = &Ссылка
13 – 11.05.23 – 12:45
(12) Нет, в том то и дело что документ основание не заполнено в Документ.ПоступлениеНаРасчетныйСчет а в структуре подчинености есть родительский документ “Счет на оплату” Помогло это ОбщаяФорма.СвязанныеДокументы “ВывестиРодительскиеОбъекты(ОсновнойОбъект, ДеревоРодительскиеОбъекты, ВыведенныеОбъекты);”
shuhard
14 – 11.05.23 – 14:21
(10) низяяя, 150000 раз обсуждалось
Критерий отбора связанные документы
Автор margo, 22 окт 2020, 09:28
0 Пользователей и 2 гостей просматривают эту тему.
Подскажите как из связанных документов получить выборку документов разных типов и обработать их?
если настроен Критерий отбора, подчиненные документы
тогда так, для того что бы выбрать все дерево, используйте это код в рекурсивном вызове
//а еще, самое простое, посмотрите или возьмите готовый код, в своей (любой типовой) базе отчет Структура подчиненности или отчет Связанные документы
в разных базах называется по разному
//***** Создание запроса
лкЗапрос=Новый Запрос;
лкЗапрос.УстановитьПараметр("Документ",прСтрДер.Ссылка);
лкЗапрос.Текст="ВЫБРАТЬ Ссылка ИЗ КритерийОтбора.ПодчиненныеДокументы(&Документ)";
//***** Выполнение и обход результата запроса
лкВыборка=лкЗапрос.Выполнить().Выбрать();
Пока лкВыборка.Следующий() Цикл
//лкВыборка.Ссылка - подчиненный документ;
//... здесь ваш код
КонецЦикла;
если помогло нажмите: Спасибо!
Цитата: LexaK от 22 окт 2020, 10:15
если настроен Критерий отбора, подчиненные документы
тогда так, для того что бы выбрать все дерево, используйте это код в рекурсивном вызове
//а еще, самое простое, посмотрите или возьмите готовый код, в своей (любой типовой) базе отчет Структура подчиненности или отчет Связанные документы
в разных базах называется по разному
//***** Создание запроса
лкЗапрос=Новый Запрос;
лкЗапрос.УстановитьПараметр("Документ",прСтрДер.Ссылка);
лкЗапрос.Текст="ВЫБРАТЬ Ссылка ИЗ КритерийОтбора.ПодчиненныеДокументы(&Документ)";
//***** Выполнение и обход результата запроса
лкВыборка=лкЗапрос.Выполнить().Выбрать();
Пока лкВыборка.Следующий() Цикл
//лкВыборка.Ссылка - подчиненный документ;
//... здесь ваш код
КонецЦикла;
дело в том,ч то у меня получается пакет выборок, их нужно посместить в одну и посортировать по дате, а потом перепровести. в чем проблема : 1. как поместить их все в одну выборку (результаты всех пакетов) 2. если у меня в связи нет Поступление безналичных денежных средств, тогда запрос вообще пустой в результате. вот мой код:
Заказ = Неопределено;
Запрос = Новый Запрос;
Запрос.Текст =
//”ВЫБРАТЬ
//| СвязанныеДокументы.Ссылка
//|ИЗ
//| КритерийОтбора.СвязанныеДокументы(&Документ) КАК СвязанныеДокументы
//|ГДЕ
//| СвязанныеДокументы.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
//| И СвязанныеДокументы.Ссылка.ПометкаУдаления = ЛОЖЬ
//|;
//|
//|////////////////////////////////////////////////////////////////////////////////
//|ВЫБРАТЬ
//| СвязанныеДокументы.Ссылка
//|ИЗ
//| КритерийОтбора.СвязанныеДокументы(&Документ) КАК СвязанныеДокументы
//|ГДЕ
//| СвязанныеДокументы.Ссылка ССЫЛКА Документ.ВозвратТоваровОтКлиента
//| И СвязанныеДокументы.Ссылка.ПометкаУдаления = ЛОЖЬ
//|;
//|
//|////////////////////////////////////////////////////////////////////////////////
//|ВЫБРАТЬ
//| СвязанныеДокументы.Ссылка
//|ИЗ
//| КритерийОтбора.СвязанныеДокументы(&Документ) КАК СвязанныеДокументы
//|ГДЕ
//| СвязанныеДокументы.Ссылка ССЫЛКА Документ.ВзаимозачетЗадолженности
//| И СвязанныеДокументы.Ссылка.ПометкаУдаления = ЛОЖЬ
//|;
//|
//|////////////////////////////////////////////////////////////////////////////////
//|ВЫБРАТЬ
//| СвязанныеДокументы.Ссылка
//|ИЗ
//| КритерийОтбора.СвязанныеДокументы(&Документ) КАК СвязанныеДокументы
//|ГДЕ
//| СвязанныеДокументы.Ссылка ССЫЛКА Документ.СписаниеЗадолженности
//| И СвязанныеДокументы.Ссылка.ПометкаУдаления = ЛОЖЬ
//|;
//|
//|////////////////////////////////////////////////////////////////////////////////
//|ВЫБРАТЬ
//| СвязанныеДокументы.Ссылка
//|ИЗ
//| КритерийОтбора.СвязанныеДокументы(&Документ) КАК СвязанныеДокументы
//|ГДЕ
//| СвязанныеДокументы.Ссылка ССЫЛКА Документ.НалоговаяНакладная
//| И СвязанныеДокументы.Ссылка.ПометкаУдаления = ЛОЖЬ
//|;
//|
//|////////////////////////////////////////////////////////////////////////////////
//|ВЫБРАТЬ
//| СвязанныеДокументы.Ссылка
//|ИЗ
//| КритерийОтбора.СвязанныеДокументы(&Документ) КАК СвязанныеДокументы
//|ГДЕ
//| СвязанныеДокументы.Ссылка ССЫЛКА Документ.Приложение2КНалоговойНакладной
//| И СвязанныеДокументы.Ссылка.ПометкаУдаления = ЛОЖЬ
//|;
//|
//|////////////////////////////////////////////////////////////////////////////////
//|ВЫБРАТЬ
//| СвязанныеДокументы.Ссылка
//|ИЗ
//| КритерийОтбора.СвязанныеДокументы(&Документ) КАК СвязанныеДокументы
//|ГДЕ
//| СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПоступлениеБезналичныхДенежныхСредств
//| И СвязанныеДокументы.Ссылка.ПометкаУдаления = ЛОЖЬ
//| И СвязанныеДокументы.Ссылка.ХозяйственнаяОперация.Ссылка = ЗНАЧЕНИЕ(перечисление.хозяйственныеоперации.поступлениеоплатыотклиента)
//|;
//|
//|////////////////////////////////////////////////////////////////////////////////
//|ВЫБРАТЬ
//| СвязанныеДокументы.Ссылка
//|ИЗ
//| КритерийОтбора.СвязанныеДокументы(&Документ) КАК СвязанныеДокументы
//|ГДЕ
//| СвязанныеДокументы.Ссылка ССЫЛКА Документ.СписаниеБезналичныхДенежныхСредств
//| И СвязанныеДокументы.Ссылка.ПометкаУдаления = ЛОЖЬ
//| И СвязанныеДокументы.Ссылка.ХозяйственнаяОперация.Ссылка = ЗНАЧЕНИЕ(перечисление.хозяйственныеоперации.возвратоплатыклиенту)”;
Запрос.УстановитьПараметр(“Документ”, Заказ);
Результаты = Запрос.ВыполнитьПакет();
//Таблица = новый массив;
РТУ = Результаты[0].выбрать();
//таблица.Добавить(рту);
//Пока рту.
//Результаты.Вы
//ВыборкаРеализацияТоваровУслуг = Результаты[0].Выбрать();
//ВыборкаРеализацияТоваровУслуг.Следующий();
//
//ВыборкаРасходныйОрдерНаТовары = Результаты[1].Выбрать();
//ВыборкаРасходныйОрдерНаТовары.Следующий();
//Возврат (ВыборкаРеализацияТоваровУслуг <> Неопределено И ВыборкаРеализацияТоваровУслуг.КоличествоСвязанныхДокументов <> 0)
// ИЛИ (ВыборкаРасходныйОрдерНаТовары <> Неопределено И ВыборкаРасходныйОрдерНаТовары.КоличествоСвязанныхДокументов <> 0)
так оставьте один запрос, и вот это:
ЦитироватьСвязанныеДокументы.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
– уберите!
попробуйте запрос сначала в консоли запросов!
в одну колонку Ссылка вам вернутся как раз документы разных типов (все какие есть подчиненные)
если помогло нажмите: Спасибо!
Цитата: LexaK от 22 окт 2020, 11:00
так оставьте один запрос, и вот это:ЦитироватьСвязанныеДокументы.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
– уберите!
попробуйте запрос сначала в консоли запросов!
в одну колонку Ссылка вам вернутся как раз документы разных типов (все какие есть подчиненные)
гы… точно) будем пробоавть)
Добавлено: 22 окт 2020, 13:25
Цитата: LexaK от 22 окт 2020, 11:00
так оставьте один запрос, и вот это:ЦитироватьСвязанныеДокументы.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
– уберите!
попробуйте запрос сначала в консоли запросов!
в одну колонку Ссылка вам вернутся как раз документы разных типов (все какие есть подчиненные)
в консоли все получилось, а вот в обработке выборка пустая почему-то
все получилось, спасибо большое
Иногда требуется для конкретного документа увидеть всю структуру связанных документов. Например, с договором могут быть связаны дополнительные соглашения, акты и накладные, а также история переписки с контрагентом. Чтобы посмотреть цепочку связей необходимо в карточке документа перейти на закладку «Связи».
Если на закладке «Связи» нажать кнопку «Структура связей» в командной панели, то появится схематическое изображение цепочки связей.
Карточку любого документа, указанного в структуре связей, можно открыть двойным щелчком мыши.