Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/90: Рейтинг темы: голосов - 90, средняя оценка - 4.77
ottyxyy
0 / 0 / 0
Регистрация: 27.04.2008
Сообщений: 371
1

Подскажите С Запросом

16.10.2011, 10:07. Просмотров 16143. Ответов 13
Метки нет (Все метки)

Здравствуйте! Подскажите по такому вопросу. Есть справочник Номенклатура, есть регистр сведений ШтрихКода. Для каждой позиции номенклатуры штрих код может быть, может не быть, может быть их несколько. Вопрос как в запросе можно выбрать Номенклатуру со всеми ее штрих кодами.Результат должен быть примерно следующий:
|Товар-1|ШтрихКод-1;ШтрихКод-2|
|Товар-2| |
|Товар-3|ШтрихКод-3; |
Подскажите как можно сделать, а то уже все что мог придумать перепробовал.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2011, 10:07
Ответы с готовыми решениями:

Подскажите с запросом
подскажите с запросом в СКД. Есть Рег.Св. из этого регистра надо выбрать поля по группировкам так...

Подскажите с запросом?
не могу выбрать таб часть! Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ |...

помогите с запросом
Платформа 8.2 Здравствуйте! Подскажите пжста как можно запросом выбрать по дням остатки...

Помогите с запросом
Здравствуйте форумчане, помогите с запросм разобраться. Есть запрос типа Выбрать |ВЫБРАТЬ...

Помощь с запросом
Здравствуйте. Не могу понять как составить запрос, данные такие: -справочник Рабочие -регистр...

13
umkmowm181538
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
16.10.2011, 10:11 2
По нормальному нельзя.
А для чего вам?
0
kyr
0 / 0 / 0
Регистрация: 04.12.2005
Сообщений: 1,588
16.10.2011, 10:14 3
|Товар-3|ШтрихКод-3; |
в твоей схеме этот пункт самый непонятный
0
ottyxyy
0 / 0 / 0
Регистрация: 27.04.2008
Сообщений: 371
16.10.2011, 10:45 4
А что же тут не нормального то? Есть позиция номенклатуры Товар 1 со штрих кодами ШтрихКод-1, ШтрихКод-2. Есть позиция номенклатуры Товар-2 у которой вообще нет штрих кодов. Есть позиция номенклатуры Товар3 со штрих кодом 3. Что где хранится написано выше. Результатом запроса должна быть табличка состоящая из 2-х колонок(первая - номенклатура, вторая штрих кода строкой).
Проблема в том что как сделать штрих кода по номенклатуре одной строкой (т.е. штрих1+штрих2...+штрих-n), причем между штрих коами должен быть какой либо разделитель(без разницы какой).
0
16.10.2011, 10:45
umkmowm181538
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
16.10.2011, 10:54 5
Это обязательно делать прям в запросе? Какая задача?
0
kyr
0 / 0 / 0
Регистрация: 04.12.2005
Сообщений: 1,588
16.10.2011, 10:55 6
я не понял логики зачем при отсутствии штрихкода1 забивать штрихкод3?
а вообще можешь выбирать все штрихкоды, потом циклом обходить полученный результат и формировать либо переменные, которые сразу в форму выводишь либо Таблицу Значений с 2 колонками (что-то типа ШК = Строка(Штрихкод1)+";"+Строка(Штрихкод2) и т.д)
0
umkmowm181538
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
16.10.2011, 10:59 7
Если предположить, что количество штрихкодов не может быть больше N, гуглите нумерацию строк в запросе.
Потом раскладываем на разные колонки... что-то вроде
ВЫБОР КОГДА НомерСтроки = 3 Тогда
Выборка.Штрихкод...

потом
ЕСТЬNULL(Штрихкод1,"")+";"+ЕСТЬNULL(ШтрихКод2,"")
ну мысль такая... но не представляю, зачем это.
В СКД можно попробовать его средства.

Добавлено:


Цитата Сообщение от KiR
я не понял логики зачем при отсутствии штрихкода1 забивать штрихкод3?
а вообще можешь выбирать все штрихкоды, потом циклом обходить полученный результат и формировать либо переменные, которые сразу в форму выводишь либо Таблицу Значений с 2 колонками (что-то типа ШК = Строка(Штрихкод1)+";"+Строка(Штрихкод2) и т.д)
Мне кажется, он имел в виду, что у третьего товара один штрихкод. Условно :
|Носки|111111;22222|
|Портянки| |
|Гетры с кошечками|333333; |
0
ottyxyy
0 / 0 / 0
Регистрация: 27.04.2008
Сообщений: 371
16.10.2011, 11:07 8
Хех... Порядка 95000 тысяч позиций, у каждой позиции по 3-7 штрих кодов. Цикл ну уж ОЧЕНЬ долгий. Зачем надо - поставщик просит присылать ему такую форму. Количество штрих кодов заранее не известно, может быть и 7 а может не быть ни одного...Вот как то так Есть идеи?
Штрих кода и товар конечно заданы условно. Примерно как должно быть можно удивить во вложении выше.
0
kyr
0 / 0 / 0
Регистрация: 04.12.2005
Сообщений: 1,588
16.10.2011, 11:17 9
Allexei, а что делать-то? все равно тебе нужно отбирать все 7, а потом уже смотреть где там есть ШК, а где нет. Отбирай товары по условию - Поставщик или товарная группа или остаток, думаю это сократит список.
разве что в запросе, вроде бы, можно поставить условие отбора если не Null
0
Dortosk
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 553
16.10.2011, 11:21 10
Мне кажется проще идти не от номенклатуры, а от штрих-кодов. Т.е. Запрос к регистру со штрихКодами и итоги по номенклатуре. На выходе имеем дерево в корне которого номенклатура, а внутри все его штрих коды. И в цикле обходить и собирать в одну строку.
0
ottyxyy
0 / 0 / 0
Регистрация: 27.04.2008
Сообщений: 371
16.10.2011, 11:28 11
Кстати тогда вопрос. Что быстрее (теоретически) сделать как сказал Darlock или же сделать цикл по номенклатуре и запросом выбирать для каждой позиции шк?
Второй вариант представлен ниже:
<!--shcode--><pre><code class=1С>...
Для Каждого ТекСтрока Из спсНоменклатуры Цикл
Состояние("Формирую штрих кода. Необходимо обработать "+спсНоменклатуры.Количество()+ " записей");
НоваяСтрока = ТабШтрихКода.Добавить();
НоваяСтрока.Номенклатура = ТекСтрока.Номенклатура;
НоваяСтрока.ШтрихКод = ВернутьШтрихКодаНоменклатуры(НоваяСтрока.Номенклатура);
КонецЦикла;
...
Функция ВернутьШтрихКодаНоменклатуры(Номенклатура) ЭКСПОРТ

СтрокаШтрихКода= "";
Запрос= Новый Запрос("ВЫБРАТЬ
| ШтрихкодыНоменклатуры.Штрихкод КАК ШтрихКод
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.Номенклатура = &Номенклатура");
Запрос.УстановитьПараметр("Номенклатура" , Номенклатура);
Выборка= Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если НЕ СтрДлина(Выборка.ШтрихКод)= 13 Тогда
Продолжить;
КонецЕсли;
СтрокаШтрихКода= СтрокаШтрихКода+ СокрЛП(Выборка.ШтрихКод)+ Символы.ПС;//";";
КонецЦикла;
Возврат СтрокаШтрихКода;
КонецФункции[/CODE]
0
kyr
0 / 0 / 0
Регистрация: 04.12.2005
Сообщений: 1,588
16.10.2011, 12:02 12
нет, для каждой позиции ШК выбирать имхо это утопия. их нада выбрать скопом и потом уже в цикле обходить результаты. хотя возможно Darlock советует самый правильный вариант
0
umkmowm181538
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
16.10.2011, 14:07 13
Так у тебя запрос в цикле ж!
Надо получать данные одним запросом. Ну и итоги по номенклатуре. Скорее все, больше всего времени уйдет на вывод в табличный документ.
А идти надо все же от номенклатуры, т.к. позиции с null-ами тоже надо выводить.
0
ottyxyy
0 / 0 / 0
Регистрация: 27.04.2008
Сообщений: 371
17.10.2011, 02:09 14
Всем спасибо, буду делать как сказал Darlock

...
А ведь действительно стало быстрее работать раза в 3
0
17.10.2011, 02:09
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2011, 02:09

Помогите с запросом
Имеется регистр сведений в котором содержаться записи абонентов. У каждого абонента имеется...

Проблемы с запросом! 7.7
Добрый день! я начинающий программист 1С версии 7.7. и у меня появилась такая проблема при работе...

Помогите С Запросом
Всем доброго времени суток. Вопрос такой. Есть запрос по регустру.В выборку попадают поля...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru