|
Создание списка выбора для поля табличной части документа | ☑ | ||
---|---|---|---|---|
0
NIGHTHUNTER
15.08.22
✎
11:51
|
В табличной части документа, в первой коленке выбирается ссылка на документ.
У этого документа, есть табличная часть, в которой хранятся некие номера. Необходимо дать пользователю возможность выбора перечня номеров, которые хранятся в определенной колонки тч, выбираемого документа. то есть имея ссылку на документ, можно получать номера его табличной части. Как дать пользователю, в документе выбирать из этого перечня номеров. Номер может быть один, так как повторяется, может быть несколько так как разные. Как в следующем за полем с типом ссылка на документ, вывести список этих номеров? |
|||
1
NIGHTHUNTER
15.08.22
✎
12:03
|
там нужно как то заполнять СписокВыбора, этого поля табличной части?
Подскажите пожалуйста как именно??? |
|||
2
Ёпрст
15.08.22
✎
12:11
|
(0) .Добавить
|
|||
3
Kigo_Kigo
15.08.22
✎
12:15
|
НачалоВыбора стандартнаяОбработка = ложь и поехали накидывать СЗ из документСсылка
|
|||
4
mikecool
15.08.22
✎
12:19
|
(1) когда уже ты поиском будешь пользоваться?
|
|||
5
Фантазер
15.08.22
✎
12:33
|
(4) А это тоже своеобразный поиск. Через коллективный разум. Зато человек учится формулировать задачи. А в процессе формирования вопроса часто приходит и ответ.
|
|||
6
NIGHTHUNTER
15.08.22
✎
14:44
|
Подскажите пожалуйста, почему не работает выбор в поле?
// &НаСервере Функция ПолучитьСписокномеровНаСервере(ДокументСсылка) CписокНомеров = Новый Массив; // Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ХХХ_ПредварительныйЗаказПоставщикуТовары.ХХХ_НомерДобавления КАК НомерДобавления |ИЗ | Документ.ХХХ_ПредварительныйЗаказПоставщику.Товары КАК ХХХ_ПредварительныйЗаказПоставщикуТовары |ГДЕ | ХХХ_ПредварительныйЗаказПоставщикуТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ДокументСсылка); Рез = Запрос.Выполнить(); Если НЕ Рез.Пустой() Тогда Выборка = Рез.Выбрать(); Пока Выборка.Следующий() Цикл CписокНомеров.Добавить(Выборка.НомерДобавления); КонецЦикла; КонецЕсли; Возврат CписокНомеров; КонецФункции // &НаКлиенте Процедура ЛимитыНомерНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; // ТекСтрока = Элементы.Лимиты.ТекущиеДанные; СписокНомеров = ПолучитьСписокномеровНаСервере(ТекСтрока.ПредварительныйЗаказПоставщику); Если СписокНомеров.Количество() > 0 Тогда Элементы.Номер.СписокВыбора.ЗагрузитьЗначения(СписокНомеров); КонецЕсли; КонецПроцедуры // |
|||
7
NIGHTHUNTER
15.08.22
✎
14:53
|
У поля Номер, режим выбора из списка стоит .
|
|||
8
Fram
15.08.22
✎
17:07
|
(6) // СтандартнаяОбработка = Ложь;
|
|||
9
NIGHTHUNTER
16.08.22
✎
11:02
|
По коду в отладчике, в список добавился один элемент.
Но выбрать его так же не удается, список не открывается, ничего там нет. И не выбирается. как нужно исправить? Что не так покоду? &НаСервере Функция ПолучитьСписокномеровНаСервере(ДокументСсылка) CписокНомеров = Новый Массив; // Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ХХХ_ПредварительныйЗаказПоставщикуТовары.ХХХ_НомерДобавления КАК НомерДобавления |ИЗ | Документ.ХХХ_ПредварительныйЗаказПоставщику.Товары КАК ХХХ_ПредварительныйЗаказПоставщикуТовары |ГДЕ | ХХХ_ПредварительныйЗаказПоставщикуТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ДокументСсылка); Рез = Запрос.Выполнить(); Если НЕ Рез.Пустой() Тогда Выборка = Рез.Выбрать(); Пока Выборка.Следующий() Цикл CписокНомеров.Добавить(Выборка.НомерДобавления); КонецЦикла; КонецЕсли; Возврат CписокНомеров; КонецФункции // &НаКлиенте Процедура ЛимитыНомерНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) //СтандартнаяОбработка = Ложь; // ТекСтрока = Элементы.Лимиты.ТекущиеДанные; СписокНомеров = ПолучитьСписокномеровНаСервере(ТекСтрока.ПредварительныйЗаказПоставщику); Если СписокНомеров.Количество() > 0 Тогда Элементы.Номер.СписокВыбора.ЗагрузитьЗначения(СписокНомеров); КонецЕсли; КонецПроцедуры |
|||
10
NIGHTHUNTER
16.08.22
✎
11:02
|
(8) Я закомментировал. Но ничего не исправилось (
|
|||
11
NIGHTHUNTER
16.08.22
✎
11:04
|
РежимВыбораИзСписка галка стоит
|
|||
12
NIGHTHUNTER
16.08.22
✎
11:06
|
тип полей совпадает, число 10
|
|||
13
NIGHTHUNTER
16.08.22
✎
11:16
|
Подскажите, как мне сделать, что бы работал выбор из списка?
|
|||
14
NIGHTHUNTER
16.08.22
✎
11:23
|
В поле номер, несмотря на (9) ничего нельзя выбрать.
После того как в предыдущем поле выбран документ. У которого в Тч содержатся эти значения, для списка в поле Номер. Уже и свойство, КнопкаВыпадающегоСписка поставил в Да. |
|||
15
Мимохожий Однако
16.08.22
✎
11:25
|
У поля Номер какой тип?
|
|||
16
Мимохожий Однако
16.08.22
✎
11:27
|
Еще есть процедура ТвоёПолеНачалоВыбораИзСписка()
|
|||
17
NIGHTHUNTER
16.08.22
✎
11:38
|
(15) Число, размерность 10. Такое же как и у документа, от куда берутся данные для его заполнения.
|
|||
18
Мимохожий Однако
16.08.22
✎
11:45
|
Кстати, если нажать буковку Я справа от темы, то возможно увидишь как минимум три варианта решения твоей задачки.)
|
|||
19
NIGHTHUNTER
16.08.22
✎
11:49
|
(16) Она не помогла.
|
|||
20
NIGHTHUNTER
16.08.22
✎
11:57
|
пока я не вижу вариантов решения не одного, мне нужно для управляемых форм
|
|||
21
NIGHTHUNTER
16.08.22
✎
11:59
|
Эта процедура вообще не работает, точка останова в ней не останавлявается.
&НаКлиенте Процедура ЛимитыНомерНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; // ТекСтрока = Элементы.Лимиты.ТекущиеДанные; СписокНомеров = ПолучитьСписокномеровНаСервере(ТекСтрока.ПредварительныйЗаказПоставщику); Если СписокНомеров.Количество() > 0 Тогда Элементы.Номер.СписокВыбора.ЗагрузитьЗначения(СписокНомеров); КонецЕсли; КонецПроцедуры |
|||
22
butterbean
16.08.22
✎
11:59
|
(6) в событии НачалоВыбора уже поздновато элементу список подсовывать, нужно менять переменную ДанныеВыбора, то есть ДанныеВыбора().ЗагрузитьЗначения(СписокНомеров)
|
|||
23
NIGHTHUNTER
16.08.22
✎
12:21
|
(22)
Значение не является значением объектного типа (ЗагрузитьЗначения) {Документ.ХХХ_РеестрЛимитов.Форма.ФормаДокумента.Форма(39)}: ДанныеВыбора.ЗагрузитьЗначения(СписокНомеров) &НаКлиенте Процедура ЛимитыНомерНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) //СтандартнаяОбработка = Ложь; // ТекСтрока = Элементы.Лимиты.ТекущиеДанные; СписокНомеров = ПолучитьСписокномеровНаСервере(ТекСтрока.ПредварительныйЗаказПоставщику); Если СписокНомеров.Количество() > 0 Тогда Элементы.Номер.СписокВыбора.ЗагрузитьЗначения(СписокНомеров); ДанныеВыбора.ЗагрузитьЗначения(СписокНомеров) КонецЕсли; КонецПроцедуры |
|||
24
NIGHTHUNTER
16.08.22
✎
12:22
|
(23) ДанныеВыбора в этой процедуре = неопределено
|
|||
25
NIGHTHUNTER
16.08.22
✎
12:24
|
(22) Как тут быть? Для значения ДанныеВыбора с неопределенным типом, нельзя использовать ЗагрузитьЗначения()
|
|||
26
sitex
naïve
16.08.22
✎
12:35
|
(0) Номеров много ?
|
|||
27
NIGHTHUNTER
16.08.22
✎
12:36
|
(26) Пока что один.
|
|||
28
sitex
naïve
16.08.22
✎
12:38
|
(27) Обязательно выводить список в ячейке ? А если будет больше 15 или 25 тогда что ?
|
|||
29
NIGHTHUNTER
16.08.22
✎
12:43
|
(28) Табличная часть документа.
Вначале выбирается документ, в первой ячейке. А во второй извлеченные из его табличной части номера. В списке, что бы пользователь мог выбрать нужный. А как ещё это сделать? Такая задача. |
|||
30
sitex
naïve
16.08.22
✎
12:48
|
(29) Тут все зависит сколько будет данных в списке выбора у пользователя. Если слишком много позиции в табл части это документа то лучше форму выводить и пусть выбирает что хочет.
|
|||
31
NIGHTHUNTER
16.08.22
✎
12:50
|
(30) Пока минимум, по этому и ищу способ сделать через список.
|
|||
32
NIGHTHUNTER
16.08.22
✎
12:52
|
почему вот эта процедура вообще не срабатывает?
ЛимитыНомерНачалоВыбораИзСписка |
|||
33
NIGHTHUNTER
16.08.22
✎
12:58
|
У меня ничего не получается.
|
|||
34
NIGHTHUNTER
16.08.22
✎
13:02
|
Не думал что со списами такая проблема (
|
|||
35
sitex
naïve
16.08.22
✎
13:05
|
не вижу проблем
|
|||
36
sitex
naïve
16.08.22
✎
13:06
|
(24) ДанныеВыбора = новый СписокЗначений;
и ДанныеВыбора.ЗагрузитьЗначения(Сп) |
|||
37
sitex
naïve
16.08.22
✎
13:06
|
и РежимВыбораИзСписка галку
|
|||
38
sitex
naïve
16.08.22
✎
13:07
|
и (3) вот в начале написал.
|
|||
39
NIGHTHUNTER
16.08.22
✎
13:09
|
(35) ок, сейчас пробую. Спасибо!
|
|||
40
NIGHTHUNTER
16.08.22
✎
13:09
|
(35) А почему в этой процедуре не срабатывают точки останова ?
ЛимитыНомерНачалоВыбораИзСписка() |
|||
41
sitex
naïve
16.08.22
✎
13:12
|
(40) перезайди в Конфигуратор или у обработчик отвязался.
|
|||
42
NIGHTHUNTER
16.08.22
✎
13:14
|
(41) Ясно. Но я смотрел он был на месте. все равно значит видимо отвязанный был.
|
|||
43
NIGHTHUNTER
16.08.22
✎
13:33
|
Почистил сейчас кешь, перезапускаюсь.
(36) С этим значение нужное появилось в списке, но выбирая его, оно не появляется в самом поле. Не подскажете что это значит? (41) Эта процедура так и не запускается, я вообще процедуру переопределил. |
|||
44
NIGHTHUNTER
16.08.22
✎
13:48
|
(37) РежимВыбораИзСписка стоит галка и СтандартнаяОбработка = Ложь
Что не так с этим кодом7 Почему значение из списка не выбирается в поле? &НаКлиенте Процедура ЛимитыНомерНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; // ДанныеВыбора = Новый СписокЗначений; ТекСтрока = Элементы.Лимиты.ТекущиеДанные; СписокНомеров = ПолучитьСписокномеровНаСервере(ТекСтрока.ПредварительныйЗаказПоставщику); Если СписокНомеров.Количество() > 0 Тогда //Элементы.Номер.СписокВыбора.ЗагрузитьЗначения(СписокНомеров); ДанныеВыбора.ЗагрузитьЗначения(СписокНомеров) КонецЕсли; КонецПроцедуры |
|||
45
butterbean
16.08.22
✎
13:50
|
(44) скорее всего дело вот в этом:
НачалоВыбора (StartChoice) В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере, а также изменять свойства, которые могут привести к серверному вызову. |
|||
46
NIGHTHUNTER
16.08.22
✎
13:51
|
(45) А как быть? Сказали нет проблем. А они тут на каждом углу ((((
Тут вообще точки останова не срабатывают ЛимитыНомерНачалоВыбораИзСписка() |
|||
47
NIGHTHUNTER
16.08.22
✎
13:52
|
Варианты какие то есть для решения задачи? Всего лишь, одно значение в списке и что бы его можно было бы выбрать в поле!
|
|||
48
NIGHTHUNTER
16.08.22
✎
13:57
|
Подскажете как мне решить вопрос?
|
|||
49
Мимохожий Однако
16.08.22
✎
13:58
|
(47) Повторяю, если нажать буковку Я справа от темы, то возможно увидишь как минимум три варианта решения твоей задачки.)
|
|||
50
butterbean
16.08.22
✎
14:00
|
(47) Сделай реквизит формы тип таблица значений,в ней храни все доступные номера для каждого ПредварительныйЗаказПоставщику. Эту таблицу значений обновляй при создании формы и при измении значения в колонке ПредварительныйЗаказПоставщику. И список выбора набивай уже из этой таблицы
|
|||
51
sitex
naïve
16.08.22
✎
14:06
|
(48) Поставь так.
(44)&НаКлиенте Процедура ЛимитыНомерНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Элемент.СписокВыбора.Очистить(); ТекСтрока = Элементы.Лимиты.ТекущиеДанные; СписокНомеров = ПолучитьСписокномеровНаСервере(ТекСтрока.ПредварительныйЗаказПоставщику); ДанныеВыбора.ЗагрузитьЗначения(СписокНомеров); Элементы.СписокВыбора.ЗагрузитьЗначения(СписокНомеров); КонецПроцедуры |
|||
52
NIGHTHUNTER
16.08.22
✎
14:07
|
(49) Я же нажимал. Думаете я не делал этого? И просмотрел все что там есть, там для обычных форм. Мне нужно для управляемых.
|
|||
53
Мимохожий Однако
16.08.22
✎
14:11
|
(52) У меня на третьей позиции поиска
https://forum.infostart.ru/forum9/topic99225/ |
|||
54
butterbean
16.08.22
✎
14:14
|
(53) справедливости ради - это ему не подходит
|
|||
55
NIGHTHUNTER
16.08.22
✎
14:14
|
(53) Мне нужно формировать список, после выбора документа в предыдущей колонке.
Мне посоветовали делать это в процедуре НачалоВыбора, что никаких проблем. Но а в вашей верке, там не так. при открытии что то там создается и тп т тд |
|||
56
Мимохожий Однако
16.08.22
✎
14:16
|
(55) Тогда формируй список по окончании редактирования строки "после выбора документа в предыдущей колонки"
|
|||
57
Мимохожий Однако
16.08.22
✎
14:16
|
(54) Ну, так помоги ему
|
|||
58
pasha_d
16.08.22
✎
14:17
|
(47), (48) Судя по твоей интонации на каждой созданной тобою ветке - тебе тут все должны по ходу...
|
|||
59
butterbean
16.08.22
✎
14:17
|
(57) я ему в (50) вроде бы достаточно понятно описал, что надо делать
|
|||
60
NIGHTHUNTER
16.08.22
✎
14:22
|
(51)
Значение не является значением объектного типа (ЗагрузитьЗначения) {Документ.ХХХ_РеестрЛимитов.Форма.ФормаДокумента.Форма(47)}: ДанныеВыбора.ЗагрузитьЗначения(СписокНомеров); |
|||
61
NIGHTHUNTER
16.08.22
✎
14:23
|
(51) Это как у вас? 2 раза загрузить значений?
|
|||
62
sitex
naïve
16.08.22
✎
14:24
|
(60) Сам мог догадаться чего не хватает.
|
|||
63
NIGHTHUNTER
16.08.22
✎
14:24
|
(62) Ну это я добавил
ДанныеВыбора = Новый СписокЗначений; сейчас перезапускаю. Не понимаю только ход дейтсвий. Как нужно уже вроде все должно сложиться. Но что то все не так. |
|||
64
NIGHTHUNTER
16.08.22
✎
14:28
|
(62)
Поле объекта не обнаружено (СписокВыбора) {Документ.ХХХ_РеестрЛимитов.Форма.ФормаДокумента.Форма(49)}: Элементы.СписокВыбора.ЗагрузитьЗначения(СписокНомеров); |
|||
65
sitex
naïve
16.08.22
✎
14:30
|
(64) Элемент.СписокВыбора
|
|||
66
NIGHTHUNTER
16.08.22
✎
14:30
|
Дело в том что я просто запутался, видя что ничего не работает (((.
|
|||
67
sitex
naïve
16.08.22
✎
14:31
|
(63) Путаться нечего. Коротко - Одно визуализирует , другое выбирает;
|
|||
68
NIGHTHUNTER
16.08.22
✎
14:37
|
Тут точка останова так и не работает, по этому как это работает я так и не узнал.
Процедура ЛимитыНомерНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка) Так же и не узнал, почему не работает эта процедура (. |
|||
69
NIGHTHUNTER
16.08.22
✎
14:40
|
Сейчас, тестирую вот это:
// &НаСервере Функция ПолучитьСписокномеровНаСервере(ДокументСсылка) CписокНомеров = Новый Массив; // Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ХХХ_ПредварительныйЗаказПоставщикуТовары.ХХХ_НомерДобавления КАК НомерДобавления |ИЗ | Документ.ХХХ_ПредварительныйЗаказПоставщику.Товары КАК ХХХ_ПредварительныйЗаказПоставщикуТовары |ГДЕ | ХХХ_ПредварительныйЗаказПоставщикуТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ДокументСсылка); Рез = Запрос.Выполнить(); Если НЕ Рез.Пустой() Тогда Выборка = Рез.Выбрать(); Пока Выборка.Следующий() Цикл CписокНомеров.Добавить(Выборка.НомерДобавления); КонецЦикла; КонецЕсли; Возврат CписокНомеров; КонецФункции // &НаКлиенте Процедура ЛимитыНомерНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) ДанныеВыбора = Новый СписокЗначений; Элемент.СписокВыбора.Очистить(); ТекСтрока = Элементы.Лимиты.ТекущиеДанные; СписокНомеров = ПолучитьСписокномеровНаСервере(ТекСтрока.ПредварительныйЗаказПоставщику); ДанныеВыбора.ЗагрузитьЗначения(СписокНомеров); Элемент.СписокВыбора.ЗагрузитьЗначения(СписокНомеров); КонецПроцедуры // |
|||
70
NIGHTHUNTER
16.08.22
✎
14:53
|
(69) Тут, даже не нужно СтандартнаяОбработка = Ложь ????
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |