|
|
|
СписокЗначений обрезает Наименования до 25 знаков? | ☑ | ||
|---|---|---|---|---|
|
0
AndreyFAN
25.03.09
✎
22:44
|
СписокТовара = Новый СписокЗначений;
Заполняю его Наименованиями, а при обращении к нему возвращается наименование укороченное до 25 символов... Так должно быть? |
|||
|
1
dimoff
25.03.09
✎
22:45
|
Не должно быть, код покаж.
|
|||
|
2
AndreyFAN
25.03.09
✎
22:48
|
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ | Товары.Наименование |ИЗ | Справочник.Товары |ГДЕ | Ссылка.ЭтоГруппа=Ложь |И | Наименование ПОДОБНО &НайтиСтроку"; Запрос.УстановитьПараметр("НайтиСтроку","%"+НайтиСтроку+"%"); РезультатЗапроса=Запрос.Выполнить().Выбрать(); СписокТовара = Новый СписокЗначений; Пока РезультатЗапроса.Следующий() Цикл СписокТовара.Добавить(РезультатЗапроса.Наименование); КонецЦикла; Если РезультатЗапроса.Количество()>0 тогда Если СписокТовара.ОтметитьЭлементы("Выберите товар.") Тогда Смещение=0; для н=1 по РезультатЗапроса.Количество() Цикл Если НЕ СписокТовара[н-смещение-1].Пометка Тогда СписокТовара.Удалить(н-смещение-1); Смещение = Смещение+1; КонецЕсли; КонецЦикла; КонецЕсли; Иначе Предупреждение("Товар не найден.",60); КонецЕсли; Если СписокТовара.Количество()>0 тогда Если СписокТовара.Количество()>1 тогда Предупреждение("Выберите один товар.",60); Иначе Форма=Справочники.Товары.ПолучитьФорму("ФормаВыбора"); Форма.ПараметрТекущаяСтрока = Справочники.Товары.НайтиПоНаименованию(СписокТовара); Форма.Открыть(); КонецЕсли; Иначе Предупреждение("Вы не выбрали товар.",60); КонецЕсли; Код находит Наименование в Справочнике, по части строки в Наименовании и открывает Справочник на искомом Наименовании. НО! Отлавливает только короткие Наименования, длиннее 25 символов находит но на нём не открывает. |
|||
|
3
dimoff
25.03.09
✎
22:50
|
Грандиозно, это что такое?
Форма.ПараметрТекущаяСтрока = Справочники.Товары.НайтиПоНаименованию(СписокТовара); |
|||
|
4
AndreyFAN
25.03.09
✎
22:51
|
Это передаётся параметр перед открытием формы, с Наименованием, которое будет Текущим
|
|||
|
5
dimoff
25.03.09
✎
22:52
|
Это представление списка значений 25 символов, посему твой код по недоразумению изредка срабатывает
|
|||
|
6
dimoff
25.03.09
✎
22:52
|
(4) Я имею ввиду что за параметр в НайтиПоНаименованию( ты передаешь
|
|||
|
7
AndreyFAN
25.03.09
✎
22:56
|
В запросе находятся все наименования, которые содержат искомую строку,
все найденные выгружаются в СписокЗначений "СписокТовара", Потом в форме выбора юзер ставит галочку на товаре который его интересует, При нажатии ОК в форме удаляются лишние, где галочка была не выставлена, Поэтому в СписокТовара остаётся один элемент Он и передаётся в качестве параметра в Форма.ПараметрТекущаяСтрока =Справочники.Товары.НайтиПоНаименованию(СписокТовара); |
|||
|
8
dimoff
25.03.09
✎
22:59
|
(7) Зачем ты мне пересказываешь содержание своего кода? Я итак вижу.
НайтиПоНаименованию предполагает что ту да будет передана строка. СписокТовара - это список значений, а не строка. Просто он имеет представление, которое ограничено 25 знаками и перечисляет находящиеся внутри элементы. Чтобы получить содержащийся в списке элемент необходимо к нему обратиться СписокТоваров[0].Значение |
|||
|
9
dimoff
25.03.09
✎
23:02
|
И не очень понятно зачем удалять не помеченные строки, если проще сосчитать помеченные.
|
|||
|
10
AndreyFAN
25.03.09
✎
23:03
|
Да. Работает. Спасибо!!!
PS Запрос.Текст="ВЫБРАТЬ | Товары.Наименование Тут ошибка - без слова Товары |
|||
|
11
dimoff
25.03.09
✎
23:04
|
А ещё умнее сразу из запроса получать ссылку, а не наименование. А если уж совсем умно, то действовать можно через таблицу значений и метод ВыбратьСтроку(), чтобы потом количество выбранных элементов не подсчитывать.
|
|||
|
12
AndreyFAN
25.03.09
✎
23:07
|
(11) Оператор может поставить более одной галочки. Какую ВыбратьСтроку?
(11) Спасибо. Постараюсь разобраться |
|||
|
13
dimoff
25.03.09
✎
23:09
|
То есть в итоге все это безобразие должно выглядеть так
Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | Товары.Ссылка КАК Товар |ИЗ | Справочник.Товары |ГДЕ | Ссылка.ЭтоГруппа=Ложь |И | Наименование ПОДОБНО &НайтиСтроку"; Запрос.УстановитьПараметр("НайтиСтроку","%"+НайтиСтроку+"%"); ТаблицаТоваров = Запрос.Выполнить().Выгрузить(); Если ТаблицаТоваров.Количество() = 0 Тогда Предупреждение("Товар не найден.",60); Иначе Стр = ТаблицаТоваров.ВыбратьСтроку(); Если Стр <> Неопределено Тогда Форма=Справочники.Товары.ПолучитьФорму("ФормаВыбора"); Форма.ПараметрТекущаяСтрока = Стр.Товар; Форма.Открыть(); КонецЕсли; КонецЕсли; |
|||
|
14
AndreyFAN
25.03.09
✎
23:12
|
Да, работает
только я добавил ещё КАК Товары :-) |
|||
|
15
dimoff
25.03.09
✎
23:13
|
Самостоятельность это хорошо )
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |