Имя: Пароль:
1C
1С v8
Не работает множественный выбор
0 Eva_J
 
10.10.19
10:50
Нужно организовать множественный выбор из справочника в реквизите табличной части, ТабЧасть "Дисциплины", Реквизит "Дисциплина", Справочник "Дисциплины". Ошибок не выдает, просто значения не заполняются при выборе. Что не так?

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

&НаКлиенте
Процедура ДисциплиныДисциплинаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    
         Дисциплина = ВыбранноеЗначение;
    
КонецПроцедуры
1 FIXXXL
 
10.10.19
11:03
в ВыбранноеЗначение что прилетает?
2 DrWatson
 
10.10.19
11:04
(0) Все правильно написано. Какие вопросы к множественному выбору?
3 FIXXXL
 
10.10.19
11:06
Дисциплина = ВыбранноеЗначение;
Дисциплина - это что?
4 DrWatson
 
10.10.19
11:07
+(2) ВыбранноеЗначение должен быть массивом, и с ним надо что-то делать.
Как по замыслу хотели несколько выбранных элементов выбирать в одну строку?
5 Eva_J
 
10.10.19
11:10
(3) это реквизит где нужен множественный выбор
6 Eva_J
 
10.10.19
11:11
(4) а как сделать подскажите пожалуйста
7 ДенисЧ
 
10.10.19
11:12
Как ты желаешь несколько значений в один реквизит завпихнуть?
Ведь сказали же мудрые человеки - нельзя впихнуть невпихнуемое...
8 Eva_J
 
10.10.19
11:16
(7) да я поняла, а как правильно сделать? подскажите
9 FIXXXL
 
10.10.19
11:16
(5) это реквизит ТЧ? чет непохоже... на переменную больше похоже
10 pechkin
 
10.10.19
11:17
МножественныйВыбор и ЗакрыватьПриВыборе - разные вещи
11 FIXXXL
 
10.10.19
11:17
(6) взять коллекцию ВыбранноеЗначение и распихать ее по строкам ТЧ
ил добавить строки ТЧ и каждой присвоить нужное значение из коллекции ВыбранноеЗначение
отсюда не видно твоих задумок
12 pechkin
 
10.10.19
11:18
тут по идее нужен подбор делать
13 Eva_J
 
10.10.19
11:25
(11) а можете код подсказать пожалуйста, а то я ещё пока не очень в этом разбираюсь
14 FIXXXL
 
10.10.19
12:24
(13) код чего?
15 Случайный прохожий
 
10.10.19
12:29
Ты выбираешь значение для одной ячейки ТЧ и хочешь при этом, чтобы все остальные строки тоже заполнились или как?
16 Eva_J
 
10.10.19
13:55
(14) процедуры обработки выбора как правильно сделать
17 FIXXXL
 
10.10.19
13:57
(16) ну дык у тебя все правильно
а что дальше с выбранным делать ты видимо и сама не знаешь
какой тут код?
18 Eva_J
 
10.10.19
14:02
(17) так я поэтому у вас и спрашиваю, чтобы вы помогли, делаю вот так:

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

Список = Новый СписокЗначений;
Список.Добавить(ВыбранноеЗначение);
Для каждого Дисциплина Из Список Цикл
    

Строка = Объект.Дисциплины.Добавить();
Строка.Дисциплина = Дисциплина;
                    
КонецЦикла;                    

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

Но это тоже не правильно, подскажите скажите как надо, чтобы работало
19 Eva_J
 
10.10.19
14:03
(17) надо чтобы осуществлялся множественный выбор, и значения заполнялись в реквизит табличной части!
20 hhhh
 
10.10.19
14:06
(18) ну вот это выкинь

Список = Новый СписокЗначений;
Список.Добавить(ВыбранноеЗначение);

пиши проще

Список = ВыбранноеЗначение;
21 FIXXXL
 
10.10.19
14:07
Для каждого Дисциплина Из ВыбранноеЗначение Цикл
    

Строка = Объект.Дисциплины.Добавить();
Строка.Дисциплина = Дисциплина;
                    
КонецЦикла;
22 FIXXXL
 
10.10.19
14:08
ты без отладчика кодишь?
23 Eva_J
 
10.10.19
14:14
(20) &НаКлиенте
Процедура ДисциплиныДисциплинаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    
СтандартнаяОбработка = Ложь;

Список = ВыбранноеЗначение;
Для каждого Дисциплина Из ВыбранноеЗначение Цикл
    

Строка = Объект.Дисциплины.Добавить();
Строка.Дисциплина = Дисциплина;
                    
КонецЦикла;                    

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

Так все равно не работает
24 unenu
 
10.10.19
14:19
пока автор не покажет формы помогать нет смысла
25 hhhh
 
10.10.19
14:20
(23) ну отладчиком заходит в процедуру?
26 hhhh
 
10.10.19
14:22
(24) ей же отроду 4 с половиной месяца. У нее еще формы несформировавшиеся.
27 Eva_J
 
10.10.19
14:31
(25) да заходит
28 unenu
 
10.10.19
14:42
(26) Почему, Евгения Ефимова из Калининграда дружит с управляемыми формами, просто вот как управлять выбором, когда
ничего не показали?
29 D_E_S_131
 
10.10.19
14:46
(27) В отладчике если посмотреть через "табло", то какой тип у "ВыбранноеЗначение"?
30 Eva_J
 
10.10.19
14:53
(29) массив
31 unenu
 
10.10.19
15:01
(30) а что в отладчике покажет

ВыбранноеЗначение[0]?
32 Eva_J
 
10.10.19
15:13
(31) элемент из справочника
33 unenu
 
10.10.19
15:22
(32) тогда в вашем коде

Для каждого Дисциплина Из ВыбранноеЗначение Цикл
  Строка = Объект.Дисциплины.Добавить();
  Строка.Дисциплина = Дисциплина;
КонецЦикла;    

у Строка.Дисциплина другой тип.
отладчик все расскажет
34 Eva_J
 
10.10.19
15:54
(33) у него тип ссылка на справочник
35 DrWatson
 
10.10.19
15:55
(23) >>Так все равно не работает
А что значит "не работает"?
- Форма выбора не закрывается;
- форма закрывается, но новая строка не добавляется;
- строка добавляется, но дисциплина не заполняется;
- дисциплина заполняется, но нужно что-то ещё.
36 Eva_J
 
10.10.19
15:56
(35) строка добавляется, но дисциплина не заполняется
37 Eva_J
 
10.10.19
15:57
(35) что не так?
38 D_E_S_131
 
10.10.19
16:03
Какие типы у "Строка.Дисциплина" и "ВыбранноеЗначение[0]"? Ответ "ссылка на справочник" не подходит. Конкретно какие виды справочников.
39 Eva_J
 
10.10.19
16:11
(38) вообщем у строка.дисциплина тип неопределено, тогда почему Строка.Дисциплина = Дисциплина, здесь дисциплина элемент из справочника
40 Eva_J
 
10.10.19
16:11
(38) а у выбранное значение ссылка на дисциплины
41 DrWatson
 
10.10.19
16:20
(39) Неопределено - это когда реквизит таб. части имеет составной тип. Не присваивается, потому что в списке типов у него нет справочника дисциплин. Поставьте правильно тип.
42 Eva_J
 
10.10.19
16:30
(41) ну у реквизита тип составной и там 2 справочника этот и другой, где нужно тип поставить?
43 unenu
 
10.10.19
16:32
(42) там где СправочникСсылка.Дисциплина если у вас в ВыбранноеЗначение[0] тоже СправочникСсылка.Дисциплина
ванугю, что где-то СправочникОбъект.Дисциплина

и ежик с ужиком не хотят дружить
44 hhhh
 
10.10.19
16:34
(40) у выранное значение на прошлом допросе ты говорила массив. Какие где типы указано, можешь без вранья конкретно сказать. Как клещами из тебя каждый байт информации приходится вытягивать.
45 dezss
 
10.10.19
16:38
ОФФ: интересно наблюдать подобный эффект)))
Вроде он называется "ТП в поле", если не ошибаюсь?))))
46 DrWatson
 
10.10.19
16:38
А нет ли у формы реквизита Дисциплина, случайно.
47 Eva_J
 
10.10.19
16:48
(46) есть у тч на форме, я же все описала в самом начале
48 Eva_J
 
10.10.19
16:48
(46) туда и должны дисциплины выгружаться
49 Eva_J
 
10.10.19
16:50
&НаКлиенте
Процедура ДисциплиныДисциплинаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
    ПараметрыФормы = Новый Структура;
    
    ПараметрыФормы.Вставить("МножественныйВыбор", Истина);
    
    ОткрытьФорму("Справочник.Дисциплины.Форма.ФормаВыбораУправляемая",ПараметрыФормы, Элемент);

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


&НаКлиенте
Процедура ДисциплиныДисциплинаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)    
    
Для каждого Дисциплина Из ВыбранноеЗначение Цикл

    Строка = Объект.Дисциплины.Добавить();
    Строка.Дисциплина = Дисциплина;

КонецЦикла;
                                        
КонецПроцедуры


Где что нужно поменять в итоге? Ничего не могу понять. Простите за тупость
50 DrWatson
 
10.10.19
16:55
(47) Я не про реквизит таб. части спрашиваю, а напрямую про реквизит формы.
Это была попытка отгадать где не сходятся типы. Ну, нет, так нет. Значит дело не в этом.

Перепроверьте типы Строка.Дисциплина и Дисциплина. Хоть напишите
Сообщить(ТипЗнч(Строка.Дисциплина));
Сообщить(ТипЗнч(Дисциплина));
Т.к. код выглядит правильным.

И эта, поднимите самооценку.
51 unenu
 
10.10.19
17:01
я полагаю, что пора прекращать допрос, а то "клиента" может быть потерян.

на самом деле все что писали выше - чепуха.
для решения задачи вам необходимо что-то вроде


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

&НаКлиенте
Процедура ВыбратьЭлектронныйДокументИзБазыЗавершение(РезультатВыбора, ВходящийКонтекст) Экспорт
    
     Если РезультатВыбора <> Неопределено И РезультатВыбора.Количество() > 0 Тогда
        
        МассивВыбранныхДокументов = РезультатВыбора;
            
        ПодключитьОбработчикОжидания("Подключаемый_ДобавитьДокументыПередВыборомПунктаТребования", 0.2, Истина);
        
    КонецЕсли;
    
КонецПроцедуры


скопировал что было под рукой
52 Eva_J
 
10.10.19
17:06
(50) строка.дисциплина тип неопределено, а дисциплина это элемент из справочника
53 hhhh
 
10.10.19
17:11
(52) не до, а после строчки

    Строка.Дисциплина = Дисциплина;


вставляй эти строки сообщить().

И нет такого типа "элемент справочника" - это ты нагло врешь, там другой тип должен быть указан.
54 unenu
 
10.10.19
17:20
(53) "все врут" и значительно реже заблуждаются.

пока в коде открытия формы не будет обработчика завершения выбора - все тлен.
55 Eva_J
 
10.10.19
17:22
(53) вообщем у них у обоих тип справочникссылка.дисциплины
56 hhhh
 
10.10.19
17:25
(55) и еще там сделайте Сообщить("Дисциплина " + Строка.Дисциплина);
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс