Имя: Пароль:
1C
1С v8
отбор в форме выбора УФ
0 Kurbash
 
24.04.14
13:35
В конфигурации есть документ с реквизитами Номенклатура, Операция, тип справочник у обоих.
Есть РС где содержатся данные, на каждую номенклатуру несколько операций.
Хочу стобы при выборе операции в списке были только те, которые соответствуют номенклатуре в строке ТЧ.
Нужен отбор. Пытаюсь сделать так:


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

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

не канает. в чем ошибка?
1 Kurbash
 
24.04.14
13:43
ап
2 Kurbash
 
24.04.14
14:10
ау, люди
3 Ns33
 
24.04.14
14:12
Как-то оно странно. Я бы сделал так:

Еще одна форма выбора с нужным мне запросом в динамическом списке. Указываем эту форму для выбора для реквизита ТЧ операция.
Через связи параметров выбора передаем номенклатуру и в ПриСозданииНаСервере() устанавливаем параметром динсписка эту номенклатуру.
4 Kurbash
 
26.04.14
10:23
заморочился еще с одним отбором:

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

&НаКлиенте
   Процедура ПодборСотрудников(Команда)
СтандартнаяОбработка = Ложь;                              
ПараметрыФормы = Новый Структура;      
Если ЗначениеЗаполнено(Объект.Подразделения) тогда            
ПараметрыФормы.Вставить("ТекущаяСтрока",Объект.Подразделения);
иначе        сообщить("Подразделение не заполнено!");      
КонецЕсли;                      
ФормаВыбора = ПолучитьФорму("Справочник.Сотрудники.ФормаВыбора",ПараметрыФормы, );      
ФормаВыбора.Элементы.Список.Отображение = ОтображениеТаблицы.Список;      
ЭлементОтбора = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));      
ЭлементОтбора.ЛевоеЗначение     = Новый ПолеКомпоновкиДанных("Подразделение");      
ЭлементОтбора.ВидСравнения      = ВидСравненияКомпоновкиДанных.Равно;      
ЭлементОтбора.ПравоеЗначение     = Объект.Подразделения;      
ЭлементОтбора.Использование      = Истина;      
ФормаВыбора.Открыть();
КонецПроцедуры


-отбор работает но выбираемы значения не добавляются в ТЧ.

&НаКлиенте
       Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
       Если ТипЗнч(ЗначениеВыбора) = Тип("Массив") Тогда
       Для каждого СпрСсылка Из ЗначениеВыбора Цикл
           т = Объект.ТЧ.Добавить();
           т.Сотрудник = СпрСсылка;
       КонецЦикла;
   Иначе
           т = Объект.ТЧ.Добавить();
           т.Сотрудник = ЗначениеВыбора;

   КонецЕсли;

       КонецПроцедуры
что сделал не так?
5 Wobland
 
26.04.14
10:32
СтандартнаяОбработка = Ложь; - это сильно, конечно
6 Kurbash
 
26.04.14
10:34
а если без приколов?
7 Wobland
 
26.04.14
10:36
(6) никчёмная и бесполезная переменная
8 Wobland
 
26.04.14
10:36
у тебе форма-источник вообще знает, что иногда какие-то внешние события происходят? подбор, например?
9 Kurbash
 
26.04.14
10:39
(8)ну да, я пытаюсь отловить выбираемые значения обработкой выбора
10 Wobland
 
26.04.14
10:41
Описание:

Возникает на клиенте при выборе объекта в одной из подчиненных форм или при вызове в одной из подчиненных форм метода ОповеститьОВыборе".

ну лан, я по-другому немного работал
11 Kurbash
 
26.04.14
10:42
так то я по верному пути?
12 Wobland
 
26.04.14
10:43
(11) спроси у откладчика, мне лениво напрягаться ;)
13 Kurbash
 
26.04.14
10:44
да я со вчерашнего  вечера сижу...башка уже не варит, одно перестаю делать если ен понимаю как другое делаю, а тут получается вот тут затыка-дальше никуда...
14 Kurbash
 
26.04.14
10:46
самое главное что в голове вертится что где то фигню маленькую упустил а где найти не могу, на обычных формах делал же
15 Wobland
 
26.04.14
10:48
16 Kurbash
 
26.04.14
10:54
блин вот я прогнал....все. понял, спс, с меня пирожок и пончик
17 Wobland
 
26.04.14
10:56
за дополнительную конфетку могу тыкнуть пальцем во второй параметр у открыть форму
18 Kurbash
 
26.04.14
10:58
давай
19 Kurbash
 
26.04.14
10:58
я просто про форму владелец забыл у себя в получить форму
20 Wobland
 
26.04.14
11:00
21 Kurbash
 
26.04.14
11:02
ага, понял, спс
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн