1. Дон Кихот 10.01.19 08:39 Сейчас в теме

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

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

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

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

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

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

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

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

ФормаВыбора.Открыть();
8. Дон Кихот 10.01.19 09:35 Сейчас в теме
Зарплата и кадры государственного учреждения, редакция 3.1 (3.1.8.185)
Отбор по реквизиту управляемой формы ТекущийВидЗанятости ФормыЭлемента Справочника Сотрудники
11. Boneman 215 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 24 10.01.19 09:47 Сейчас в теме
(9)Надо на клиент передать в Массиве

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

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

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

Показать


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

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

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

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

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

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

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 110 000 руб. до 120 000 руб.
Полный день

Аналитик 1С
Санкт-Петербург
зарплата от 80 000 руб.
Полный день

Программист 1С
Самара
зарплата от 50 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день