Имя: Пароль:
1C
1С v8
Вывести штрих-код в форме списка номенклатуры
0 H A D G E H O G s
 
30.01.13
12:56
День добрый.
Собственно сабж.

Вот запрос, как, норм?

ВЫБРАТЬ
   Номенклатура.Ссылка КАК Номенклатура,
   Номенклатура.ЕдиницаХраненияОстатков
ПОМЕСТИТЬ ТаблицаНоменклатуры
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.Ссылка В(&МассивСсылок)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТаблицаНоменклатуры.Номенклатура КАК Номенклатура,
   ЕСТЬNULL(Штрихкоды.Штрихкод, "") КАК ШтрихКод,
   ВЫБОР
       КОГДА Штрихкоды.ТипШтрихкода ЕСТЬ NULL
           ТОГДА 0
       КОГДА Штрихкоды.ТипШтрихкода = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ТипыШтрихКодов.EAN13)
           ТОГДА 1
       ИНАЧЕ 2
   КОНЕЦ КАК ПриоритетТипаШтрихКода,
   ВЫБОР
       КОГДА Штрихкоды.ЕдиницаИзмерения ЕСТЬ NULL
           ТОГДА 0
       КОГДА Штрихкоды.ЕдиницаИзмерения = ТаблицаНоменклатуры.ЕдиницаХраненияОстатков
           ТОГДА 1
       ИНАЧЕ 2
   КОНЕЦ КАК ПриоритетЕдиницыИзмерения,
   ВЫБОР
       КОГДА Штрихкоды.ХарактеристикаНоменклатуры ЕСТЬ NULL
           ТОГДА 0
       КОГДА Штрихкоды.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
           ТОГДА 1
       ИНАЧЕ 2
   КОНЕЦ КАК ПриоритетХарактеристикиНоменклатуры,
   ВЫБОР
       КОГДА Штрихкоды.СерияНоменклатуры ЕСТЬ NULL
           ТОГДА 0
       КОГДА Штрихкоды.СерияНоменклатуры = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
           ТОГДА 1
       ИНАЧЕ 2
   КОНЕЦ КАК ПриоритетСерииНоменклатуры
ИЗ
   ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
       ПО ТаблицаНоменклатуры.Номенклатура = Штрихкоды.Владелец

УПОРЯДОЧИТЬ ПО
   Номенклатура,
   ПриоритетТипаШтрихКода,
   ПриоритетЕдиницыИзмерения,
   ПриоритетХарактеристикиНоменклатуры,
   ПриоритетСерииНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ТаблицаНоменклатуры
1 Fragster
 
гуру
30.01.13
22:03
соединение нафиг убери, выбирай сразу из целевой номенклатуры, в коде пока формируешь массив, сделай соответствие ключ - номенклатура, значение - строка, обходя выборку заполняй через СоответствиеСтрок[Выборка.Номенклатура].Штрихкод = Выборка.Штрихкод
2 Fragster
 
гуру
30.01.13
22:04
выбирай сразу из целевой номенклатуры =  выбирай сразу из таблицы регистра
3 Fragster
 
гуру
30.01.13
22:04
немного не понял магию с приоритетами
4 Fragster
 
гуру
30.01.13
22:06
обычно делаю одно поле с множеством когда-тогда и убывающим значением по условиям внутри выбора, типа так:

   ВЫБОР
       КОГДА Штрихкоды.ТипШтрихкода = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ТипыШтрихКодов.EAN13)
           Тогда 1
       КОГДА Штрихкоды.ЕдиницаИзмерения = ТаблицаНоменклатуры.ЕдиницаХраненияОстатков
           ТОГДА 2
       КОГДА Штрихкоды.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
           ТОГДА 3
       КОГДА Штрихкоды.СерияНоменклатуры = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
           ТОГДА 4
       ИНАЧЕ 5
   КОНЕЦ КАК ПриоритетСерииНоменклатуры
5 H A D G E H O G s
 
30.01.13
22:07
(2) Это упрощенное.
Мне надо еще из Номенклатуры подтянуть немного полей.
6 H A D G E H O G s
 
30.01.13
22:09
(4) Мне надо выбрать

Желательно "щтрих код с пустой характеристикой, иначе любой другой"
Желательно "щтрих код с пустой серий, иначе любой другой"
Желательно "щтрих код с единицей измерения остатков, иначе любой другой"
Желательно "щтрих код EAN13, иначе любой другой"
7 H A D G E H O G s
 
30.01.13
22:09
На качество Пофиг
8 Fragster
 
гуру
30.01.13
22:09
(6) дай весь запрос
9 H A D G E H O G s
 
30.01.13
22:09
А потом я выгружаю в ТЗ и в ней ищу через Найти() по номенклатуре
10 Fragster
 
гуру
30.01.13
22:10
(9) сделай соответствие, как в (2), не надо поиска по ТЗ
11 Fragster
 
гуру
30.01.13
22:10
в (1) в смысле
12 H A D G E H O G s
 
30.01.13
22:10
(10) Зачем?
13 Fragster
 
гуру
30.01.13
22:12
(12) можно не выгружать результат запроса в ТЗ, не надо Найти()
14 Fragster
 
гуру
30.01.13
22:12
(13)+ все делается за 1 проход выборки
15 H A D G E H O G s
 
30.01.13
22:12
(13) Да это мелочи. Меня сам запрос напрягает.
16 Fragster
 
гуру
30.01.13
22:12
если не хочется сворачивать по приоритету - то можно воспользоваться Выборка.СледующийПоЗначениюПоля
17 H A D G E H O G s
 
30.01.13
22:14
Короче, суть.
Что лучше - упорядочить в запросе, или в ТЗ?
18 H A D G E H O G s
 
30.01.13
22:15
Насколько тяжко он будет упорядочивать в запросе?

Потому что в ТЗ это сделается махом.
19 Fragster
 
гуру
30.01.13
22:15
(17) в запросе, ТЗ выкинь, это в некослько раз увеличит постобработку. ну и сортировка по одному полю лучше, чем по многим
20 Fragster
 
гуру
30.01.13
22:15
(18) тоже сразу
21 H A D G E H O G s
 
30.01.13
22:16
Все, понял. (4) мне подходит
22 H A D G E H O G s
 
30.01.13
22:17
Старый стал уже, не додумался до (4). Бида.
23 H A D G E H O G s
 
30.01.13
22:19
Спасибо большое.
24 Fragster
 
гуру
30.01.13
22:20
(23) фигня