Имя: Пароль:
1C
1С v8
Помогите с отборами в справочнике
0 DenAst
 
09.04.13
15:36
Суть задачи:
Есть справочник сотрудников, при вводе нового сотрудника необходимо проверять есть ли такой сотрудник в справочнике. Проверка выполняется по наименованию, путем вхождения, но не в этом суть. Для проверки вызывается обработка. В ней табличная часть, в табличную часть выводятся совпадающие элементы. Если совпадения нашлись, и их несколько, то из табличной части выбирается один нужный элемент. Дальнейшее выполнение задачи выполняем вернувшись в предопределенную процедуру нового элемента справочника ПередОткрытием(), в ней такой код:
ФормаСписка = Справочники.Сотрудники.ПолучитьФорму("ФормаСписка");
Если ФормаСписка.Открыта() Тогда
               
   ФормаСписка.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр=Ложь;
   ФормаСписка.Отбор.Сбросить();            
   ФормаСписка.ЭлементыФормы.СправочникСписок.ТекущаяСтрока = ВыбСотрудник.ссылка;
   ФормаСписка.Отбор.Наименование.Установить(ВыбСотрудник.Наименование);
   ФормаСписка.Активизировать();

   Отказ=истина;
   возврат;
           
Таким образом открываю форму списка и устанавливаю фильтр по справочнику по Наименованию найденного элемента, тем самым позволяя выбрать в дальнейшем только нужное в списке справочника. Ну и делаю выборку по коду, устанавливая строку выбора на нужном элементе, затем закрываю форму этого нового элемента справочника так как уже выбрали нужное и ввод нового не понадобился.
При обычном открытии списка справочника и попытки завести новый элемент в нем все работает как надо, но хочу тоже самое сделать при открытии формы списка справочника Сотрудников из реквизита документа для выбора сотрудника из него. Поиск совпадений в обработку и проч работает как надо, но необходимо продублировать код, который в списке справочника ищет найденный элемент и выбирает его(аналогично приведеному коду) чтобы пользователь мог сразу выбрать найденный им элемент. Почему-топри выборе из документа эти же строки не работают. 1с8.2 обычное приложение.
1 DenAst
 
09.04.13
15:41
Предугадываю вопрос, почему бы не сделать обычный поиск и фильтр по найденному в списке справочника - так не годится, сделать его не проблема, но пользователи работающие с этой операцией не будут проверять поиском есть ли элемент, и будут все равно ломиться заводить сразу новых. Единственное средство - это жестко их ограничивать на ввод новых элементов в момент когда они пытаются создать нового сотрудника, поэтому такой сложный путь.
2 DenAst
 
10.04.13
08:14
подниму тему, все еще актуально
3 shuhard
 
10.04.13
08:16
(0) сделай подписку перед записью и посылай нах при наличии дублей
4 DenAst
 
10.04.13
08:20
по сути это уже будет работать даже таким методом, который уже реализовал. проблема в другом: посылать просто так не могу, могут быть одни и те же данные сотрудников, но под разными табельными номерами. Например, внешние совместители. Хочу именно указать пользователю на совпадения, чтобы список совпадений был найден и выведен пользователю, чтобы он тут же из этих совпадений мог выбрать вариант сразу в документ. Но повторюсь: при обычном открытии списка справочника через меню- все работает, а при поиске и вводе нового из реквизита документа - не работает...
5 vicof
 
10.04.13
08:26
(4) В одном случае у тебя форма выбора, в другом форма списка, поэтому и не работает
6 DenAst
 
10.04.13
08:43
(4) тоже про это подумал сразу же как наткнулся на проблему, проставил и в документе в рексизите форму выбора, которую специально создал, не видит ее модуль все равно
7 kosts
 
10.04.13
09:22
(0) Разгранич права. Сотрудников должен добавлять кадровик, а не кто попало.
8 DenAst
 
10.04.13
10:43
(7) тут вопрос не только с сотрудниками, есть такой же блок контроля новых элементов и с Контрагентами. Конфигурация управленческая, не бухгалтерская, сотрудников может быть и ссинхронизирую действительно с Бухгалтерской кадровой (задумка уже была такая), а вот с контрами будет сложнее, для них ввод в управленческой базе должен быть, т.к. каких-то контрагентов нет, а некоторым службам необходимо оформлять документы с указанием контрагентов, которых нет в системе. Поэтому вопрос остается в силе.
9 SherifSP
 
10.04.13
10:58
В событии НачалоВыбора, Отказ ставишь в истину, вызываешь вручную форму списка справочника уже с отбором по данным которые тебе нужны, но форму открываешь модально с признаком выбора, после отлавливаешь данные и работаешь с ними
10 SherifSP
 
10.04.13
11:07
(9) не Отказ, а СтандартнаяОбработка = Ложь
11 DenAst
 
10.04.13
11:12
(9) "В событии НачалоВыбора" тогда в каждый документ на каждом элементе контрагента/сотрудника придется блок этот добавлять либо вызов процедуры... Хотелось бы что-то универсальное.. С добавлением блоков есть и простые способы: типа текстовой строки поиска, и только потом открытие элемента или вариантов на основе введенной строки, и сразу передача выбранного в документ, это все на порядок проще. Но хочется сделать в одном месте, чтобы было централизовано.
12 SherifSP
 
10.04.13
11:24
(11) А общие модули для чего?
13 DenAst
 
10.04.13
11:56
(12) Общие модули для вызова в любом случае придется указывать в каждом документе.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн