|
v7: Помогите, пожалуйста с запросом. | ☑ | ||
---|---|---|---|---|
0
GirlProgram
08.09.14
✎
14:14
|
Торговля и склад.
Необходимо получить всю номенклатуру, которую в течении полугода заказывали у определенного поставщика. Перем Запрос, ТекстЗапроса; Запрос = СоздатьОбъект("Запрос"); ТекДата2 = ТекущаяДата(); Если ТекДата2>ПолучитьДатуТА() Тогда ТекДата2=ПолучитьДатуТА() КонецЕсли; ТекДата1 = ДобавитьМесяц(ТекДата2, -6); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ТекДата1 по ТекДата2; |Номенклатура = Регистр.Заказы.Номенклатура; |Поставщик = Регистр.Заказы.ДоговорПоставщика.Владелец; |ГРУППИРОВКА Номенклатура упорядочить по Номенклатура.Наименование; //|Условие(Поставщик = Контрагент); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка("Номенклатура") = 1 Цикл Сообщить(Запрос.Номенклатура); Конеццикла; В итоге Запрос.Группировка("Номенклатура") = 0 :( Пробовала убрать условие - аналогичная ситуация, посмотрела, что в заданный период были заказы у поставщика. Что я не правильно делаю? |
|||
1
fedoss
08.09.14
✎
14:16
|
В запросе к регистру должна быть функция
|
|||
2
GirlProgram
08.09.14
✎
14:27
|
(1) ок, попробую
|
|||
3
GirlProgram
08.09.14
✎
14:31
|
(1) добавила такую функцию
|Функция НоменклатураМинОстатокСумма = Сумма(Номенклатура.МинОстаток); все равно пустой результат |
|||
4
fedoss
08.09.14
✎
14:34
|
Количество = Регистр.Заказы.КоличествоПриход;
Функция ПриходКоличество = Приход(Количество); |
|||
5
КонецЦикла
08.09.14
✎
14:37
|
(3) Делай конструктором
Тебе нужен мин остаток? Зачем лезть в регистр? И это... номенклатура и так будет упорядочена... ничего там после Группировка Номенклатура писать не нужно |
|||
6
GirlProgram
08.09.14
✎
20:24
|
(5) я и делала конструктором, мне вообще не нужно ни количество, ни минимальный остаток, мне нужна только номенклатура и поставщик и все.
А как мне получить информацию о поставщике и номенклатуре у них заказанной за определенный период? Делать выборку из табличных частей документов? мне казалось через регистр будет быстрее.... |
|||
7
GirlProgram
08.09.14
✎
20:48
|
Сделала такой запрос:
"//{{ЗАПРОС(Сформировать) |Период с ТекДата1 по ТекДата2; |Номенклатура = Регистр.Заказы.Номенклатура; |Поставщик = Регистр.Заказы.ДоговорПоставщика.Владелец; |Количество = Регистр.Заказы.КоличествоПриход; |Функция ПриходКоличество = Приход(Количество); |Группировка Номенклатура упорядочить по Номенклатура.Наименование; |Условие(Поставщик = Контрагент); |"//}}ЗАПРОС В итоге номенклатура выводится, но выводится вся, не обрабатывается Условие. |
|||
8
kobzon
08.09.14
✎
20:55
|
Какое? |Условие(Поставщик = Контрагент) Это условие не выполняется?
|
|||
9
GirlProgram
08.09.14
✎
21:01
|
(8) да, вернее выполняется как-то странно, выводится номенклатура этого поставщика и номенклатура, у которого не указан поставщик, как такое может быть не понятно, другие поставщики не захватываются
|
|||
10
GirlProgram
08.09.14
✎
21:02
|
Плюс пытаюсь вывести такое сообщение:
Сообщить(Запрос.Номенклатура + " " + Запрос.ПриходКоличество + " " + Запрос.Поставщик); Но выводится только Запрос.Номенклатура |
|||
11
kobzon
08.09.14
✎
21:14
|
Толи у меня ТиС какой то не такой, но у меня нет такого регистра.
|
|||
12
kobzon
08.09.14
✎
21:21
|
(7) Если плохо понимаешь запросы, регистры, делай как понимаешь. Как и хотела выборкой документов. Не думаю, что прям в миллион раз будет медленнее.
|
|||
13
GirlProgram
08.09.14
✎
21:23
|
(11) ничего не могу сказать, мне дали базу очень древнего релиза, которая подписывалась под организацию, возможно этот регистр самописный, с торговлей никогда дело не имела, а 7ку вообще забыла как страшный сон, а тут "Здрасте"... И ведь в регистр не заглянешь, чтобы понять, откуда номенклатура без поставщика берется.....
|
|||
14
GirlProgram
08.09.14
✎
21:25
|
(12) один фиг разбираться, в 8ке я бы уже давно все что угодно состряпала, а тут.... что не фраза - то какая-то фигня...
|
|||
16
GirlProgram
08.09.14
✎
21:31
|
(15) Возможно. Но мне нужна просто информация о том, какую номенклатуру можно заказать у этого поставщика, в 8ке есть привязка номенклатуры к поставщику, в 7ке этого нет, поэтому хотела извратиться и на основе сведений о уже заказанной номенклатуры у данного поставщика вывести инфу по возможной номенклатуре.
|
|||
17
kobzon
08.09.14
✎
21:33
|
(13) Рег = СоздатьОбъект("Регистр.Заказы");
Рег.ВыбратьДвижения(ДатаНач, ДатаКон); Пока Рег.ПолучитьДвижение()=1 Цикл КонецЦикла; В цикле пропишешь свои реквизиты регистра и посмотришь откуда берутся пустые поставщики. |
|||
18
GirlProgram
08.09.14
✎
21:37
|
(17) все, я уже разобралась, эти пустые значения оказываются наименованиями папок, в которых расположена та или иная из заказанных номенклатур, теперь осталось понять, почему запрос мне выдает помимо номенклатуры еще и ее папку
|
|||
19
КонецЦикла
08.09.14
✎
21:39
|
(16) Ну это не проблема сделать... можно даже воспользоваться имеющимся механизмом свойств
(18) Без групп - есть такие слова после группировки, может поможет А вообще, если дружишь с восьмеркой - то добро пожаловать в не кастрированный и дружелюбный T-SQL + 1C++ |
|||
20
GirlProgram
08.09.14
✎
21:40
|
Сделала так
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ТекДата1 по ТекДата2; |Номенклатура = Регистр.Заказы.Номенклатура.Наименование; |Поставщик = Регистр.Заказы.ДоговорПоставщика.Владелец; |Количество = Регистр.Заказы.КоличествоПриход; |Функция ПриходКоличество = Приход(Количество); |Группировка Номенклатура; |Условие(Поставщик = Контрагент); |"//}}ЗАПРОС все получилось |
|||
21
GirlProgram
08.09.14
✎
21:42
|
теперь вместо вывода в сообщении
Пока Запрос.Группировка("Номенклатура") = 1 Цикл Сообщить(СокрЛП(Запрос.Номенклатура) + " " + СокрЛП(Запрос.ПриходКоличество) + " " + СокрЛП(Запрос.Поставщик)); Конеццикла; Мне нужно номенклатуру засунуть в Список ВыбНоменклатуры |
|||
22
kobzon
08.09.14
✎
21:43
|
(20)А что поменяла то?)
(21) В ТЗ добавляй и там сворачивай. |
|||
23
GirlProgram
08.09.14
✎
21:44
|
(22) вместо Номенклатура = Регистр.Заказы.Номенклатура получаю
Номенклатура = Регистр.Заказы.Номенклатура.Наименование |
|||
24
GirlProgram
08.09.14
✎
21:45
|
(23) + и тогда без групп выводится, только номенклатура
|
|||
25
kobzon
08.09.14
✎
21:49
|
(24) Ну для твоей цели наверное и так пойдет, а можно было как тебе сказали выше: после группировки написать Без Групп;
|
|||
26
GirlProgram
08.09.14
✎
21:51
|
(25) спасибо большое, но я хотела разобраться именно с тем, что в моем запросе не то, в итоге завершила следующим:
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ТекДата1 по ТекДата2; |Номенклатура = Регистр.Заказы.Номенклатура.Наименование; |НоменклатураСсылка = Регистр.Заказы.Номенклатура; |Поставщик = Регистр.Заказы.ДоговорПоставщика.Владелец; |Количество = Регистр.Заказы.КоличествоПриход; |Функция ПриходКоличество = Приход(Количество); |Группировка Номенклатура; |Условие(Поставщик = Контрагент); |"//}}ЗАПРОС Пока Запрос.Группировка("Номенклатура") = 1 Цикл ВыбНоменклатуры.ДобавитьЗначение(Запрос.НоменклатураСсылка); Конеццикла; Все получилось. Не знаю, насколько коряво, может можно было и как-то по другому сделать, но главное это работает так как мне надо :) Еще раз спасибо за участие. |
|||
27
GirlProgram
08.09.14
✎
21:52
|
(4) спасибо за подсказку про функцию
|
|||
28
Wirtuozzz
08.09.14
✎
22:01
|
Эти дьявольские манускрипты на 7.7 или 8.2?
|
|||
29
Wirtuozzz
08.09.14
✎
22:02
|
... дебажутся то...
|
|||
30
КонецЦикла
08.09.14
✎
22:05
|
(28) Это убивец 8.3, пока не зарелизили...
|
|||
31
lavalit
09.09.14
✎
12:01
|
Напиши "Группировка Номенкалутра без групп"... Тогда группы(папки) не будут выводиться
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |