Получить форму справочника из внешней обработки

1. Дон Кихот 10.01.19 08:39 Сейчас в теме
Во внешней обработке нужно сделать отбор справочников сотрудники по реквизиту формы, бьюсь пол дня, в интернете на эту тему в основном стеб, подскажите пожалуйста.
В синтаксис помощнике у справочника нет методов получающих данные формы или открывающие форму.
Экспериментировал с методом ПолучитьФорму(), результат ноль
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. Boneman 298 10.01.19 09:16 Сейчас в теме
(1)
нужно сделать отбор справочников сотрудники по реквизиту формы

уточните задачу,
какая конфигурация, и по какому именно реквизиту формы вы отбор хотите делать ?
2. Дон Кихот 10.01.19 09:08 Сейчас в теме
Получить форму получилось на клиенте, но только одного справочника, как перебрать все справочники, на клиента он не передает выборку справочников
3. NatalkaBal 28 10.01.19 09:09 Сейчас в теме
4. Дон Кихот 10.01.19 09:12 Сейчас в теме
В форме списка нет реквизита по которому нужно сделать отбор
6. NatalkaBal 28 10.01.19 09:16 Сейчас в теме
(4)
СписокСотрудников    = СписокСотрудниковНаСервере(Необходимы параметры);

ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Ссылка", СписокСотрудников));
ОткрытьФорму("Справочник.Сотрудники.ФормаСписка", ПараметрыФормы);

&НаСервере
Функция СписокСотрудниковНаСервере(Необходимы параметры)
	
	Запрос= Новый Запрос();
	Запрос.Текст =
	"ВЫБРАТЬ ";

	РезультатЗапроса = Запрос.Выполнить().Выполнить();
		
	Возврат РезультатЗапроса
	
КонецФункции

Показать
5. SedovSU@mail.ru 297 10.01.19 09:13 Сейчас в теме
Ну как вариант на обычных формах, если я конечно правильно вопрос понимаю
Например, есть обработка в ней есть реквизит "вид номенклатуры". Нужно открыть формы выбора справочника номенклатуры с отбором по данному реквизиту то можно написать так:

ФормаВыбора = Справочник.Номенклатура.ПолучитьФормуВыбора();
ФормаВыбора.СправочникСписок.Отбор.ВидНоменклатуры.Значение = ВидНоменклатуры;
ФормаВыбора.СправочникСписок.Отбор.ВидНоменклатуры.Использование = Истина;
ФормаВыбора.СправочникСписок.Отбор.ВидНоменклатуры.ВидСравнения = ВидСравнения.Равно;
ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.ВидНоменклатуры.Доступность = Ложь;

ФормаВыбора.Открыть();
8. Дон Кихот 10.01.19 09:35 Сейчас в теме
Зарплата и кадры государственного учреждения, редакция 3.1 (3.1.8.185)
Отбор по реквизиту управляемой формы ТекущийВидЗанятости ФормыЭлемента Справочника Сотрудники
11. Boneman 298 10.01.19 10:06 Сейчас в теме
(8)
Зарплата и кадры государственного учреждения, редакция 3.1 (3.1.8.185)
Отбор по реквизиту управляемой формы ТекущийВидЗанятости ФормыЭлемента Справочника Сотрудники

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

Более конкретно.
Текущий вид занятости, меняется разными документами, прием на работу, кадровый перевод - соответственно в момент приема текущий вид занятости один, спустя какое то время другой...т.е. данные по текущему виду занятости не могут хранится на форме, они хранятся в периоде.
Данные по виду занятости хранятся в регистре сведений "ТекущиеКадровыеДанныеСотрудников", вот именно оттуда и нужно брать информацию.
делаешь срез, с отбором по организации, и текущему виду занятости,
и просто берешь сотрудника оттуда
19. Дон Кихот 11.01.19 14:48 Сейчас в теме
(11)Сделал запрос в консоли к регистру сведений "ТекущиеКадровыеДанныеСотрудников", колонка ТекущийВидЗанятости пустая, хотя у сотрудника вид занятости заполнен
9. Дон Кихот 10.01.19 09:44 Сейчас в теме
На клиента функция возвращает ссылку на один справочник, а РезультатЗапроса или выборку не возвращает, выдает ошибку:

по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'
10. NatalkaBal 28 10.01.19 09:47 Сейчас в теме
(9)Надо на клиент передать в Массиве

&НаСервере
Функция СписокСотрудниковНаСервере(Необходимы параметры)
    
    МассивСотрудников = Новый Массив;
    Запрос= Новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ
     |	Сотрудники.Ссылка КАК Ссылка
     |ИЗ
     |	Справочник.Сотрудники КАК Сотрудники";

     Выборка    = Запрос.Выполнить().Выбрать();
     Пока Выборка.Следующий() Цикл
	СтруктураДанных = Новый Структура("Ссылка");
	ЗаполнитьЗначенияСвойств(СтруктураДанных, Выборка);
	МассивСотрудников.Добавить(СтруктураДанных);
     КонецЦикла;
	
	Возврат МассивСотрудников;

КонецФункции

Показать


Какой запрос создал?
13. Дон Кихот 10.01.19 10:33 Сейчас в теме
(10)В запросе просто выбрал все справочники сотрудники, отбор же можно делать только после получения формы
14. NatalkaBal 28 10.01.19 10:36 Сейчас в теме
(13)Отбор можно и в запросе, главное ссылку на сотрудника передать
15. Дон Кихот 10.01.19 11:08 Сейчас в теме
(14)Отбор по реквизиту формы не получится его нет в справочнике, он становится доступным только при открытой форме или я не все понимаю
16. NatalkaBal 28 10.01.19 11:15 Сейчас в теме
(15)Я имею в виду через запрос получать необходимый список сотрудников. Я так понимаю, на форме внешней обработки есть реквизит например ТекущееСостояниеСотрудника, выбираешь из перечисления, нажимаешь ОК, и выводятся все сотрудники соответствующие этому реквизиту?
17. Дон Кихот 10.01.19 12:42 Сейчас в теме
(16)Мне нужна обработка только для получения данных одноразово и только с одним значением реквизита, его я установлю в коде.
Передать параметром в запрос реквизит формы из перечисления не получится, так я понимаю, поясните пожалуйста, если я не прав
18. NatalkaBal 28 10.01.19 13:54 Сейчас в теме
Отбор по реквизиту управляемой формы ТекущийВидЗанятости ФормыЭлемента Справочника Сотрудники

(17) Вы правы, если речь идет об этом реквизите
А если реквизит находится на форме внешней обработки (например ВидЗанятости) то его можно передать
&НаКлиенте
СписокСотрудников  = СписокСотрудниковНаСервере(Объект.ВидЗанятости);

ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Ссылка", СписокСотрудников));
ОткрытьФорму("Справочник.Сотрудники.ФормаСписка", ПараметрыФормы);

&НаСервере
Функция СписокСотрудниковНаСервере(пТекущийВидЗанятости)
    
    МассивСотрудников = Новый Массив;
    Запрос= Новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ
|	ТекущиеКадровыеДанныеСотрудников.Сотрудник КАК Ссылка
|ИЗ
|	РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
|ГДЕ
|	ТекущиеКадровыеДанныеСотрудников.ТекущийВидЗанятости = &ТекущийВидЗанятости";
Запрос.УстановитьПараметр("ТекущийВидЗанятости", пТекущийВидЗанятости);

     Выборка    = Запрос.Выполнить().Выбрать();
     Пока Выборка.Следующий() Цикл
    СтруктураДанных = Новый Структура("Ссылка");
    ЗаполнитьЗначенияСвойств(СтруктураДанных, Выборка);
    МассивСотрудников.Добавить(СтруктураДанных);
     КонецЦикла;
    
    Возврат МассивСотрудников;

КонецФункции
Показать
12. Дон Кихот 10.01.19 10:30 Сейчас в теме
В массиве на клиента передает, спасибо, на данный момент задачу решил, позже думаю попробовать вариант с регистром сведений "ТекущиеКадровыеДанныеСотрудников" и напишу развернутый ответ на свой вопрос, всем огромное спасибо
20. Светлый ум 406 27.09.23 11:37 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот