|
Как получить уже отсортированные данные номенклатуры??? | ☑ | ||
---|---|---|---|---|
0
toleranto
24.09.13
✎
00:11
|
Пытаюсь сделать так - не выходит правильно :(
Процедура ТаблицаНоменклатураНачалоВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; СтрокаТЧ = ЭлементыФормы.Таблица.ТекущиеДанные; ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(, Элемент); ФормаВыбора.ЗначениеОтбораСпискаНоменклатуры = СтрокаТЧ.Номенклатура; ФормаВыбора.ЭлементыФормы.СправочникСписок.РодительВерхнегоУровня = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТЧ.Номенклатура); ФормаВыбора.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Ложь; ФормаВыбора.ОткрытьМодально(); КонецПроцедуры |
|||
1
Rie
24.09.13
✎
00:15
|
(0) "Отсортированные" - это как?
|
|||
2
toleranto
24.09.13
✎
00:26
|
Может я некорректно вопрос задал...
Интересует, что бы были выведены данные номенклатур те, в которых присутствует СтрокаТЧ.Номенклатура... Например в СтрокаТЧ.Номенклатура содержится 11111111 То хотелось бы после вызова формы в списке выбранных номенклатур видеть только те позиции, в которых есть 11111111 |
|||
3
Euguln
24.09.13
✎
00:27
|
(2) Запрос + список номенклатуры + отбор в списке
|
|||
4
toleranto
24.09.13
✎
00:34
|
(3) Спасибо конечно за информацию... но можно пример куда смотреть?
Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | Наименование |ИЗ | Справочник.Номенклатура |ГДЕ | Родитель = &Родитель"; Запрос.УстановитьПараметр("Родитель", Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТЧ.Номенклатура)); Так? |
|||
5
Rie
модератор
24.09.13
✎
00:35
|
(4) Читать документацию по 1С. Вдумчиво. До полного осознания бредовости Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТЧ.Номенклатура)
|
|||
6
toleranto
24.09.13
✎
00:37
|
(5) Понял... Он вернет, только при точном совпадении :(
Как тогда правильно? |
|||
7
Rie
24.09.13
✎
00:40
|
(6) Не поняли. Бредовость - в НайтиПоНаименованию :-)
Как правильно? Я не совсем понял, что Вам нужно. Но, полагаю, если почитаете насчёт ПОДОБНО в языке запросов - это Вам поможет. |
|||
8
toleranto
24.09.13
✎
00:45
|
Rie - я не прошу написать... можно просто ссылку куда копать...
|
|||
9
Rie
24.09.13
✎
00:47
|
(7) Если я правильно понял Вашу проблему - то копайте в сторону оператора ПОДОБНО языка запросов.
|
|||
10
Rie
24.09.13
✎
00:48
|
+(9) Почитать о нём можете для начала во встроенной справке - этот оператор там довольно подробно описан.
|
|||
11
Rie
24.09.13
✎
00:51
|
Более подробно - тут сложно сказать, поскольку упирается в специфику Вашей задачи. Никому, кроме Вас (а возможно, что и Вам) неизвестно, по каким признакам выделяется ключевая подстрока в наименовании.
|
|||
12
toleranto
24.09.13
✎
00:53
|
(10) Да понял я что ДШЛУ
Запрос.Текст = " |ВЫБРАТЬ | Наименование |ИЗ | Справочник.Номенклатура |ГДЕ | К чему обращаться, к какому полю? Справочник.Номенклатура.Наименование? ПОДОБНО &Параметр"; Ну не имел я дело с запросами в 1С... Я с 1С то имею дело лишь 3 день :( |
|||
13
toleranto
24.09.13
✎
00:56
|
Запрос.Текст = "
|ВЫБРАТЬ | Наименование |ИЗ | Справочник.Номенклатура КАК СпрНом |ГДЕ | СпрНом.Наименование ПОДОБНО &Параметр"; Запрос.УстановитьПараметр("Параметр", СтрокаТЧ.Номенклатура); Так? |
|||
14
Rie
24.09.13
✎
00:57
|
(12) Скорее что-то вроде
Запрос.Текст = "ВЫБРАТЬ спрНоменклатура.Ссылка ИЗ Справочник.Номенклатура КАК спрНоменклатура ГДЕ спрНоменклатура.Наименование ПОДОБНО ""%"+ЧтоВамТамНадоНайти+"%"""; |
|||
15
toleranto
24.09.13
✎
01:02
|
СтандартнаяОбработка = Ложь;
СтрокаТЧ = ЭлементыФормы.Таблица.ТекущиеДанные; Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | Наименование |ИЗ | Справочник.Номенклатура КАК СпрНом |ГДЕ | СпрНом.Наименование ПОДОБНО &Параметр"; Запрос.УстановитьПараметр("Параметр", СтрокаТЧ.Номенклатура); Выборка = Запрос.Выполнить().Выбрать(); Сообщить(Выборка.Количество()); //Тут сообщил правильное количество... Куда теперь эту выборку пристроить? ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(, Элемент); |
|||
16
toleranto
24.09.13
✎
01:09
|
Процедура ТаблицаНоменклатураНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; СтрокаТЧ = ЭлементыФормы.Таблица.ТекущиеДанные; Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | Наименование |ИЗ | Справочник.Номенклатура КАК СпрНом |ГДЕ | СпрНом.Наименование ПОДОБНО &Параметр"; Запрос.УстановитьПараметр("Параметр", СтрокаТЧ.Номенклатура); Выборка = Запрос.Выполнить().Выбрать(); Сообщить(Выборка.Количество()); СписокЭлементов = Новый СписокЗначений; Пока Выборка.Следующий() Цикл СписокЭлементов.Добавить(Выборка.Наименование); КонецЦикла; ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(, Элемент); ФормаВыбора.СправочникСписок.Отбор.Наименование.ВидСравнения = ВидСравнения.ВСписке; ФормаВыбора.СправочникСписок.Отбор.Наименование.Использование = Истина; ФормаВыбора.СправочникСписок.Отбор.Наименование.Значение = СписокЭлементов; //ФормаВыбора.ЭлементыФормы.СправочникСписок.РодительВерхнегоУровня = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаТЧ.Номенклатура); ФормаВыбора.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Ложь; ФормаВыбора.ЗначениеОтбораСпискаНоменклатуры = СтрокаТЧ.Номенклатура; ФормаВыбора.ОткрытьМодально(); КонецПроцедуры |
|||
17
toleranto
24.09.13
✎
01:10
|
Вроде так получилось :)
Rio - tnx |
|||
18
viktor_vv
24.09.13
✎
01:13
|
Я так подозреваю, раз уж ты в запросе ссылки уже получишь
Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | Ссылка |ИЗ | Справочник.Номенклатура КАК СпрНом |ГДЕ | СпрНом.Наименование ПОДОБНО &Параметр"; Запрос.УстановитьПараметр("Параметр", СтрокаТЧ.Номенклатура); Выборка = Запрос.Выполнить().Выбрать(); Сообщить(Выборка.Количество()); СписокЭлементов = Новый СписокЗначений; Пока Выборка.Следующий() Цикл СписокЭлементов.Добавить(Выборка.Ссылка); КонецЦикла; ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(, Элемент); ФормаВыбора.СправочникСписок.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке; ФормаВыбора.СправочникСписок.Отбор.Ссылка.Использование = Истина; ФормаВыбора.СправочникСписок.Отбор.Ссылка.Значение = СписокЭлементов; Хотя и твой вариант имеет право на жизнь. |
|||
19
toleranto
24.09.13
✎
01:19
|
Вот только не совсем правильно работает :(
Если точное вхождение наименования - то возвращает правильно если в СтрокаТЧ.Номенклатура содержится "1407" А в номенклатуре позиция звучит "Пара петель 1407i_99" ТО ни чего не возвращает... :( Где косяк? |
|||
20
toleranto
24.09.13
✎
01:21
|
А кстати - в 1C при запросе символ заменяет % или *?
|
|||
21
viktor_vv
24.09.13
✎
01:23
|
Запрос.УстановитьПараметр("Параметр", "%"СтрокаТЧ.Номенклатура+"%");
или как в (14). |
|||
22
Rie
24.09.13
✎
01:23
|
(18) Посмотри внимательно на значок "%".
Передавай не параметр, а обрамляй, как в (14). |
|||
23
viktor_vv
24.09.13
✎
01:23
|
(21)* Запрос.УстановитьПараметр("Параметр", "%"+СтрокаТЧ.Номенклатура+"%");
|
|||
24
toleranto
24.09.13
✎
01:28
|
Спасибо... Все заработало...
Виктор - только в твоем случае работает неправильно :) Rio и viktor_vv - Огромная благодарность :) |
|||
25
Rie
24.09.13
✎
01:54
|
(24) "работает неправильно" - тут не viktor_vv виноват :-)
У меня есть подозрение, что Вы не понимаете разницу между ссылкой на элемент справочника и наименованием элемента справочника (такая ошибка часто встречается у новичков; ничего страшного, но от неё надо избавляться). Разберитесь с этим - и добавите себе большой плюс в карму :-) |
|||
26
toleranto
24.09.13
✎
13:28
|
(25) Спасибо за наставление...
Просто я всегда (и сейчас тоже) занимался панорамированием в области далекой от 1С... И мне, если честно, немного сложно или непривычно оперировать данными да ещё и на русском языке... Так что мои извинения, если где косячу... |
|||
27
toleranto
24.09.13
✎
13:29
|
Да и я понял - в чем ошибка... Спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |