|   |   | 
| 
 | Создание списка выбора для поля табличной части документа | ☑ | ||
|---|---|---|---|---|
| 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) Тут, даже не нужно СтандартнаяОбработка = Ложь ????     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |