helpf.pro
Регистрация

v8: Форму выбора справочника с отбором по реквизиту

Ermak
14.05.2013 09:15Прочитано: 8507
Документ Допуски
Создан Реквизит Должность, тип Справочник Должность
Создана ТЧ с реквизитом Описание, тип Строка
Справочник Должность
Реквизит Наименование, Тип Строка
Справочник Описание
Реквизит Должность, тип Справочник Должность
Реквизит Описание, тип Строка.

Нужно когда в документе Допуски выбираю в реквизите Должность значение например Слесарь, в ТЧ при выборе Описания открывался справочник Описания в выбором только Слесарь.
Написал такой вариант, подскажите как сделать отбор по должности

Код 1C v 8.х
 Процедура ДопускиОписаниеНачалоВыбора(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

ЗначениеОтбора = Новый Структура("Должность", ЭтотОбъект.Должность);
ПараметрыВыбора = Новый Структура("Отбор", ЗначениеОтбора);
ОткрытьФорму("Справочник.УМЦ_Допуски.ФормаВыбора", ПараметрыВыбора, Элемент);

КонецПроцедуры

Изменено 14.05.13 11:36:17
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
14.05.2013 11:16Ответ № 1
(0) Ermak, посмотри v8.x: Как установить отбор в форме списка справочника? там все есть и описано
Ermak
14.05.2013 11:36Ответ № 2
(1) E_Migachev, Я сделал по первому варианту но почему то у меня не работает отбор по реквизиту Должность.
Mokey
14.05.2013 11:56Ответ № 3
(0) Ermak, где-то я это уже видел, только запросом)))
Ermak
14.05.2013 12:10Ответ № 4
(3) Mokey, запрос я напишу он не сложный
Код 1C v 8.х
  Запрос = Новый Запрос (
"ВЫБРАТЬ
| УМЦ_Допуски.Должность
|ИЗ
| Справочник.УМЦ_Допуски КАК УМЦ_Допуски
|ГДЕ
| УМЦ_Допуски.Должность = &Должность");
Запрос.Параметры.Вставить("Должность", ЭлементыФормы.Должность.Значение);

А как дальше прописать чтобы открылся справочник и сделал отбор по реквизиту Должность
Mokey
14.05.2013 14:41Ответ № 5
(4) Ermak, так запрос заработал или не заработал?
https://help1c.com/help/view/11138.html
Изменено 14.05.13 14:45:26
Ermak
14.05.2013 14:53Ответ № 6
нет , я так и не понял почему когда ставлю отбор по Должности он у меня не выгружает.
Ermak
14.05.2013 14:55Ответ № 7
Мне нужно чтобы человек заходил в сам справочник с отбором по должности
Mokey
14.05.2013 17:38Ответ № 8
(6) Ermak, значит, нет такой должности
Ermak
14.05.2013 23:12Ответ № 9
(8) Mokey, ну как нет, если справочник один и значение одинаковое
Mokey
15.05.2013 10:01Ответ № 10
(9) Ermak, если вот так не работает,
Код 1C v 8.х
  Запрос = Новый Запрос (
"ВЫБРАТЬ
| УМЦ_Допуски.Должность
|ИЗ
| Справочник.УМЦ_Допуски КАК УМЦ_Допуски
|ГДЕ
| УМЦ_Допуски.Должность = &Должность");
Запрос.Параметры.Вставить("Должность", ЭлементыФормы.Должность.Значение);


а вот так работает:
Код 1C v 8.х
  Запрос = Новый Запрос (
"ВЫБРАТЬ
| УМЦ_Допуски.Должность
|ИЗ
| Справочник.УМЦ_Допуски КАК УМЦ_Допуски
|");


то однозначно либо нет такой должности, либо в ЭлементыФормы.Должность.Значение хранится не то значение. Других вариантов просто нет.
Изменено 15.05.13 10:02:22
Ermak
15.05.2013 10:55Ответ № 11
Без Параметров работает, как можно проверить какой значение попадает ЭлементыФормы.Должность.Значение
Ermak
15.05.2013 11:00Ответ № 12
я проверил вот так

Код 1C v 8.х
    Список = Элемент.СписокВыбора;	
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| УМЦ_Допуски.Описание КАК Описание
|ИЗ
| Справочник.УМЦ_Допуски КАК УМЦ_Допуски
|ГДЕ
| УМЦ_Допуски.Должность = &Должность";


Запрос.Параметры.Вставить("Должность", ЭлементыФормы.Должность.Значение);
Список.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Описание"));
Сообщить(ЭлементыФормы.Должность.Значение);


Значение выдала правильное, такое как в реквизите Должность в форме документа. Как проверить какое значение выдает в справочнике реквизит Должность
Ermak
15.05.2013 12:26Ответ № 13
Вообще не понимаю, что можно еще сделать подскажите. Я сделал внешнюю обработку чтобы проверить выгрузку

Код 1C v 8.х
 Процедура ДолжностьПриИзменении(Элемент)
Запрос = Новый Запрос;
Запрос.Текст =

"ВЫБРАТЬ
| УМЦ_Допуски.Описание
|ИЗ
| Справочник.УМЦ_Допуски КАК УМЦ_Допуски
|ГДЕ
| УМЦ_Допуски.Должность = &Должность";


Запрос.Параметры.Вставить("Должность", ЭлементыФормы.Должность.Значение);
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТабличноеПоле1.Значение = Результат;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

КонецПроцедуры

Все работает как надо. Аналогично сделал в своем документе, не работает. Че такое *15
Ermak
15.05.2013 12:29Ответ № 14
Создал новый документ все работает, что за бред так и не понял
Ermak
15.05.2013 12:35Ответ № 15
А как мне теперь сделать Форму выбора справочника с отбором по реквизиту
Ermak
15.05.2013 16:55Ответ № 16
Все разобрался, сделал вот так
Код 1C v 8.х
 Процедура ТабличноеПоле1Колонка1НачалоВыбора(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.УМЦ_Допуски.ПолучитьФормуВыбора(, Элемент);
ФормаВыбора.РежимВыбора = Истина;
ФормаВыбора.Отбор.Должность.Установить (Должность, Истина);
ФормаВыбора.Открыть();
КонецПроцедуры


Подскажите почему после выбора значение, в ячейки появляется <>
Mokey
16.05.2013 09:57Ответ № 17
(16) Ermak, если представление справочника по наименованию, а нименование не заполнено, то будет выдавать <>
Ermak
16.05.2013 12:55Ответ № 18
(17) Mokey, У меня стоит представление справочника по наименованию, но наименование я не заполняю потому что длина текста маленькая. Я создал реквизит Описание и сделал длину не ограниченную, т.е на форме у меня стоит и заполняется только реквизит Описание, а наименование я отключил чтобы не ругалась. А как мне тогда быть в моей ситуации?
Mokey
16.05.2013 17:03Ответ № 19
(18) Ermak, вот и ответ на ваш вопрос
Ermak
16.05.2013 17:13Ответ № 20
(19) Mokey, да я понял почему, но как мне быть если мне нужно чтобы была большая длина. Как тогда сделать чтобы попадала значение Описание а не Наименование?
Mokey
16.05.2013 17:27Ответ № 21
(20) Ermak, никак, если только скрыть реквизит, а на форму выводить Описание, ну и кнопочка подбора должна быть описана вручную
Изменено 16.05.13 17:27:54
Ermak
16.05.2013 19:29Ответ № 22
(21) Mokey, а как на примере прописать кнопку подбора?
Mokey
17.05.2013 12:18Ответ № 23
(22) Ermak, Откоываете модально форму выбора требуемого справочника. Эта форма вернёт выбранный элемент или неопределено, если нажали ESC (отказались от выбора). Вот этот выбранный элемент и заносите в реквизит, а на форму выводите надпись, например, Реквизит.Описание.
Ermak
17.05.2013 13:35Ответ № 24
покажите программно
Bell
17.05.2013 14:25Ответ № 25
http://novichok1c.ru/otbor-po-znacheniyu-rekvizita-tablichnoy-chasti-v-spiske-dokumentov
Bell
17.05.2013 14:29Ответ № 26
Вот у себя сдела вот так отбор по подчинению и валюте
Код 1C v 8.х
 Процедура ПодборТЧ_Договора(Кнопка)


ПараметрыПодбора = Новый Структура;
ПараметрыПодбора.Вставить("ЗакрыватьПриВыборе",Ложь);
Подбор = ПолучитьФорму("Справочник.Контрагенты_Договора.Форма.ФормаВыбораОтборы",ПараметрыПодбора,ЭлементыФормы.Договора);
Подбор.Валюта = Валюта;
Подбор.ПараметрОтборПоВладельцу = Контрагент;
Подбор.ОткрытьМодально();

КонецПроцедуры

Изменено 17.05.13 14:29:35
Ermak
17.05.2013 15:10Ответ № 27
У меня сейчас на выборе стоит такой отбор

Код 1C v 8.х
 Процедура ДопускиОписаниеНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.УМЦ_ДопДопуски1.ПолучитьФормуВыбора(, Элемент);
ФормаВыбора.РежимВыбора = Истина;
ФормаВыбора.Отбор.Должность.Установить (Должность, Истина);
ФормаВыбора.Открыть();
КонецПроцедуры


Как мне совместить вместе это дело?
Mokey
17.05.2013 15:29Ответ № 28
(27) Ermak, вставляете на форму Надпись и Кнопку.
На кнопку вешаем процедуру
Код 1C v 8.х
  Процедура Кнопка1ПриНажатии(Элемент)
ФормаВыбора = Справочники.УМЦ_ДопДопуски1.ПолучитьФормуВыбора(, Элемент);
ФормаВыбора.РежимВыбора = Истина;
ФормаВыбора.Отбор.Должность.Установить (Должность, Истина);
ВыбранныйЭлемент = ФормаВыбора.ОткрытьМодально();
Если НЕ ВыбранныйЭлемент = Неопределено Тогда
УМЦ_ДопДопуски = ВыбранныйЭлемент; //это реквизит нашего объекта
Надпись.Заголовок = ВыбранныйЭлемент.Описание;
КонецЕсли;
КонецПроцедуры
Ermak
17.05.2013 15:47Ответ № 29
я не понимаю зачем мне кнопка и надпись, мне нужно выбрать с табличного поля а не с кнопки
Mokey
17.05.2013 16:32Ответ № 30
(29) Ermak, в ТЧ? проще простого, добавьте колонку без элемента управления и при выводе строки устанавливайте текст вроде такого:
ОформлениеСтроки.Ячейки.Описание.УстановитьТекст(ТекущиеДанные.УМЦ_ДопДопуски.Описание). Но колонка с <> останется, потому что Вам надо выбирать каким-то образом. Есть варианты, но они довольно хитрые (например, спраятать колонку УМЦ_ДопДопуски, а выбор производить по комбинации клавиш или как-то ещё).
Успехов.
Изменено 17.05.13 16:33:19
Mokey
17.05.2013 16:40Ответ № 31
а можно попробовать при выводе строки непосредственно в эту ячейку устанавливать текст, правда, перед выбором всё равно текст будет теряться, но не надолго))
Изменено 17.05.13 16:42:28
Ermak
17.05.2013 17:16Ответ № 32
(31) Mokey, Покажите пожалуйста на примере
Mokey
17.05.2013 17:35Ответ № 33
я же написал уже всё
Mokey
20.05.2013 10:48Ответ № 34
Код 1C v 8.х
 Процедура ТабличноеПоле1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ОформлениеСтроки.Ячейки.Колонка1.УстановитьТекст(ДанныеСтроки.Колонка1.Описание);
КонецПроцедуры

Подразумеваем, что Колонка1 - это и есть поле, в которое Вы подбираете элемент из справочника
Ermak
21.05.2013 15:26Ответ № 35
Сделал так

Код 1C v 8.х
 Процедура ДопускиПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ОформлениеСтроки.Ячейки.Описание.УстановитьТекст(ДанныеСтроки.Описание.Описание);
КонецПроцедуры

Описание это имя колонки или поле
выдает ошибку

{Документ.УМЦ_Результат.Форма.ФормаДокумента.Форма(78)}: Значение не является значением объектного типа (Описание)
ОформлениеСтроки.Ячейки.Описание.УстановитьТекст(ДанныеСтроки.Описание.Описание);
Ermak
23.05.2013 12:40Ответ № 36
???
Mokey
24.05.2013 10:18Ответ № 37
Добрый день. А что есть ДанныеСтроки.Описание в Вашем случае? Сдаётся мне, что там точно не объект, а просто строка, текст.
А, ну правильно. У Вас же поле называется Допуски!
Код 1C v 8.х
  Процедура ДопускиПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ОформлениеСтроки.Ячейки.Допуски.УстановитьТекст(ДанныеСтроки.Допуски.Описание);
КонецПроцедуры

Изменено 24.05.13 10:19:41
Ermak
30.05.2013 10:52Ответ № 38
Выводит ошибку {Документ.УМЦ_Результат.Форма.ФормаДокумента.Форма(78)}: Поле объекта не обнаружено (Допуски)
ОформлениеСтроки.Ячейки.Описание.УстановитьТекст(ДанныеСтроки.Допуски.Описание);


Хотя ТП называется Допуски
Mokey
31.05.2013 16:19Ответ № 39
Неправильно списываете
Ermak
03.06.2013 14:24Ответ № 40
все равно выдает ошибку

{Документ.УМЦ_Результат.Форма.ФормаДокумента.Форма(78)}: Поле объекта не обнаружено (Допуски)
ОформлениеСтроки.Ячейки.Допуски.УстановитьТекст(ДанныеСтроки.Допуски.Описание);
Mokey
03.06.2013 14:59Ответ № 41
хм... может, стоит тщательней присмотреться к своим данным и реквизитам на форме? что да как называется?
Ermak
03.06.2013 16:28Ответ № 42
Вот
title

Реквизит "Описание" тип Строка
Mokey
03.06.2013 16:46Ответ № 43
{Документ.УМЦ_Результат.Форма.ФормаДокумента.Форма(78)}: Поле объекта не обнаружено (Допуски)
ОформлениеСтроки.Ячейки.Допуски.УстановитьТекст(ДанныеСтроки.Допуски.Описани

судя по скину, это утверждение правильное. "скомпонуйте" у себя оба сообщения об ошибке, которые последними сюда выкладывали, и найдёте решение

во-первых: ДанныеСтроки.Допуски - такого у Вас действительно нет
во-вторых: если Описание - строка, то где Вы выбираете Допуски?
Изменено 03.06.13 16:53:54
Ermak
03.06.2013 17:20Ответ № 44
В свойствах Описание я использую кнопку Выбора и прописано такое События

Код 1C v 8.х
 Процедура ДопускиОписаниеНачалоВыбора(Элемент, СтандартнаяОбработка)
ФормаВыбора = Справочники.УМЦ_ДопДопуски1.ПолучитьФормуВыбора(, Элемент);
ФормаВыбора.РежимВыбора = Истина;
ФормаВыбора.Отбор.Должность.Установить (Должность, Истина);
ВыбранныйЭлемент = ФормаВыбора.ОткрытьМодально();
Если НЕ ВыбранныйЭлемент = Неопределено Тогда
УМЦ_ДопДопуски1 = ВыбранныйЭлемент; //это реквизит нашего объекта
ЭлементыФормы.Надпись1.Заголовок = ВыбранныйЭлемент.Описание;
КонецЕсли;
КонецПроцедуры
Ermak
03.06.2013 17:24Ответ № 45
а до этого была так прописано

Код 1C v 8.х
 Процедура ДопускиОписаниеНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.УМЦ_ДопДопуски1.ПолучитьФормуВыбора(, Элемент);
ФормаВыбора.РежимВыбора = Истина;
ФормаВыбора.Отбор.Должность.Установить (Должность, Истина);
ФормаВыбора.Открыть();
КонецПроцедуры
Mokey
03.06.2013 17:37Ответ № 46
так если Описание - это строка, то зачем огород такой городить?
Код 1C v 8.х
  Процедура ДопускиОписаниеНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.УМЦ_ДопДопуски1.ПолучитьФормуВыбора(, Элемент);
ФормаВыбора.РежимВыбора = Истина;
ФормаВыбора.Отбор.Должность.Установить (Должность, Истина);
ВыбранныйЭлемент = ФормаВыбора.ОткрытьМодально();
Если НЕ ВыбранныйЭлемент = Неопределено Тогда
УМЦ_ДопДопуски1 = ВыбранныйЭлемент; //это реквизит нашего объекта
ЭлементыФормы.Надпись1.Заголовок = ВыбранныйЭлемент.Описание;
Элемент.ТекущаяСтрока.Описание = ВыбранныйЭлемент.Описание; //Элемент - должен быть ТабличноеПоле
КонецЕсли;
КонецПроцедуры

Изменено 03.06.13 17:37:38
E_Migachev
03.06.2013 17:41Ответ № 47
я правильно понимаю!? ты в списке документов УМЦ результат хочешь вывести Описание из ТЧ Допуски?
Ermak
03.06.2013 17:49Ответ № 48
да
Ermak
05.06.2013 09:04Ответ № 49
????
Ermak
06.06.2013 08:48Ответ № 50
(47) E_Migachev, подскажите как сделать?
Mokey
06.06.2013 09:37Ответ № 51
(50) Ermak, (46) Mokey,
Ermak
06.06.2013 14:57Ответ № 52
(46) Mokey, выдает ошибку

{Документ.УМЦ_Результат.Форма.ФормаДокумента.Форма(41)}: Поле объекта не обнаружено (ТекущаяСтрока)
Элемент.ТекущаяСтрока.Описание = ВыбранныйЭлемент.Описание; //Элемент - должен быть ТабличноеПоле

Ermak
07.06.2013 12:30Ответ № 53
?
Mokey
07.06.2013 14:30Ответ № 54
(53) Ermak, а Вы попробуйте дпилить кусочек кода под свои нужды, я же не вижу, что у Вас там на форме и как расположено! Дело 5-и минут на самом деле.
Mokey
07.06.2013 14:36Ответ № 55
ЭлементыФормы.ИМЯ_ВАШЕЙ_ТЧ.ТекущаяСтрока.Описание = ВыбранныйЭлемент.Описание;
Ermak
10.06.2013 09:39Ответ № 56
Спасибо большое получилось!
Подскажите еще, у меня этот столбец Описания стоит неограниченный, поставлена галочка Многострочный режим, но почему то не весь текст пишет в столбец.
Mokey
10.06.2013 12:08Ответ № 57
Регулируйте высоту строки табличной части
Ermak
10.06.2013 12:41Ответ № 58
только вижу высоту таб. части, а где строки?
Mokey
10.06.2013 14:50Ответ № 59
Да, со строками я погорячился, выдал желаемое за действительное. Как вариант, можно добавить в ТЧ формы ещё два столбца, расположить их друг под другом (новая колонка), выставить минимальную ширину, запретить менять ширину... ну и т.д. В итоге колонка Описания будет занимать уже две строчки))
Ermak
10.06.2013 15:06Ответ № 60
понял спасибо
Ermak
10.06.2013 15:06Ответ № 61
Вопрос закрыт!
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.