Имя: Пароль:
1C
 
Отбор через Структуру
0 xa1ter
 
12.05.11
02:30
Доброго времени суток!
Возникла ситуация, когда необходило реализовать отбор при помощи структуры. Я в это не силен, т.к. все время решал такие вещи через запрос, хотелось бы у Вас попросить совета, как это реализовать правильно.

Делается выборка по справочнику:
ВыборкаШтрихКодов = Справочники.ШтрихКоды.Выбрать(,ЕдЕд,,"Код");

Где "ЕдЕд" ссылка на конкретную единицу измерения, владелец короче.
Надо добавить отбор, чтобы в выборку не попадали элементы помеченные на удаление...пробовал делать так :
Отбор = Новый Структура("ПометкаУдаления", Ложь);
после чего этот отбор вставлял в 3ий параметр выборки, но все равно не робит, хотя я понимаю, что сделал не корректно.

Запросом эту проблему решил за минуту:

ВЫБРАТЬ
   ШтрихКоды.Ссылка,
   ШтрихКоды.Наименование
ИЗ
   Справочник.ШтрихКоды КАК ШтрихКоды
ГДЕ
   ШтрихКоды.Владелец = &Владелец
   И ШтрихКоды.ПометкаУдаления = ЛОЖЬ

УПОРЯДОЧИТЬ ПО
   ШтрихКоды.Код
1 zyto
 
12.05.11
04:34
А чем запрос не устраивает?
2 Стальная Крыса
 
12.05.11
04:51
(1) есть только 2 момента в пользу использования "Выбрать" вместо запроса:
1. код получается компактнее;
2. данные выбираются построчно при "Выборка.Следующий()".

зы. ну а в целом дело вкуса, если только фильтрация идет по 1-му полю, а если нет - тогда однозначно запрос.
3 xa1ter
 
12.05.11
05:02
Запросом не хочу, т.к. в этом модуле, да и в большинстве случаев ислользуется "Выбрать" и не "красиво" будет использовать там запрос, если возможно это решить через "Выбрать".
Так все таки возможно реализовать отбор через структуру не используя запрос, если да, то как? :)
4 zyto
 
12.05.11
05:02
(2)Сомневаюсь что у конкретной единицы миллион штрихкодов...
поэтому только п. 1
5 zyto
 
12.05.11
05:05
<Отбор> (необязательный)
Тип: Структура. Задает поле и значение отбора открываемой выборки. Ключ структуры описывает имя поля, а значение структуры - значение отбора по этому полю. В качестве полей для отбора могут задаваться только поля "Код", "Наименование" и реквизиты справочника, для которых в конфигураторе признак индексирования установлен в значение "Индексировать" или в значение "Индексировать с доп. упорядоч.".
Важно! Структура может содержать только один элемент.
Если параметр не указан, то отбор не используется.
6 xa1ter
 
12.05.11
05:38
т.е. только запросом?
7 rinatru
 
12.05.11
08:41
(4)
попадается товар один и тот же с разными штрихкодами, реальный пример - бренды зубных паст и т.п.

в ТиС пришлось дописывать, чтобы на карточку товара можно было использовать несколько штрих-кодов, а в 8-ке сама 1С уже предусмотрела.

(3) можно.
например так:

СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("Номенклатура",СтрокаТЧ.Номенклатура);
СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", СтрокаТЧ.ХарактеристикаНоменклатуры);
СтруктураПоиска.Вставить("СерияНоменклатуры", СтрокаТЧ.СерияНоменклатуры);

МассивСтрок=Выгрузка.НайтиСтроки(СтруктураПоиска);
8 xa1ter
 
12.05.11
09:07
Ну это все понятно :) Интересует вопрос, как в эту структуру вставить фильтр чтобы помеченные на удаление объекты не попадали в выборку.
9 rinatru
 
12.05.11
09:54
(8)
думаю, что надо сначала получить таблицу значений с необходимыми тебе данными, ну а потом уже делать отбор по ним
10 zyto
 
12.05.11
10:00
(9)см. (3)
по религиозным соображениям нужен метод Выбрать()
11 chelentano
 
12.05.11
10:09
(3) какую ту хню несёшь, красиво - это когда работает быстро и правильно
12 rinatru
 
12.05.11
10:11
(10)
у тебя отбор по нескольким параметрам по условиям... какое тут Выбрать() ???
13 xa1ter
 
12.05.11
10:38
Все понял, спасибо за ответы.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn