и хочу получить таблицу со всеми элементами номенклатуры, а вместо этого получаю лишь те, у которых есть цена в регистре. В конструкторе в "связях" устанавливал галочку "все" возле справочника номенклатуры... Ткните пожалуйста куда копать...
Заранее благодарен!
... недовставился кусок запроса, под конец еще есть параметры, хотя это и не существенно:
| И ЦеныНоменклатуры.ТипЦен = &ТипЦен | И ЦеныНоменклатуры.Валюта = &Валюта
Про1С-ник
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Ну так если Вы отбираете по Типу цен, то естественно что отобразится только та у которой есть указанный Тип цен и Валюта. В начальном запросе этого не было. А какая цель такого запроса?
Личные бесплатные консультации не даю, для этого есть форум!
Показать таблицу со всеми ценами, товары часто добавляются (одними людьми), а те, кто формирует цены - не знаю что добавилось. вот и надо им показать все товары - есть ли цены - они тут и найдут и сделают...
можно конечно сделать отчет, но здесь же прикрутится система интерактивного изменения цен.
и еще, кстати, листаю ман и никак не могу найти почему не работает
|УПОРЯДОЧИТЬ ПО | Наименование ИЕРАРХИЯ
когда в запросе есть ЛЕВОЕ СОЕДИНЕНИЕ
как вариант думал сделать двумя отдельными запросами, но чую что так делать нельзя(
"ВЫБРАТЬ | ТекНоменклатура.Ссылка, | ТекНоменклатура.Наименование КАК Товар, | ЦеныНоменклатуры.Цена КАК Цена |ИЗ | Справочник.Номенклатура КАК ТекНоменклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО ТекНоменклатура.Ссылка = ЦеныНоменклатуры.Номенклатура |ГДЕ | НЕ ТекНоменклатура.ЭтоГруппа | И ТекНоменклатура.Родитель = &Родитель | И ТекНоменклатура.ВидНоменклатуры = &ВидНоменклатуры | И IsNULL(ЦеныНоменклатуры.ТипЦен, &ТипЦен) = &ТипЦен | И IsNULL(ЦеныНоменклатуры.Валюта, &Валюта) = &Валюта | |УПОРЯДОЧИТЬ ПО | ТекНоменклатура.Наименование";
Вот это отберет всю номенклатуру, для которой есть цены (подходящие по условиям), и всю, для которой цен нет.
"ВЫБРАТЬ | ТекНоменклатура.Ссылка, | ТекНоменклатура.Наименование КАК Товар, | ЦеныНоменклатуры.Цена КАК Цена |ИЗ | Справочник.Номенклатура КАК ТекНоменклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО ТекНоменклатура.Ссылка = ЦеныНоменклатуры.Номенклатура |ГДЕ | НЕ ТекНоменклатура.ЭтоГруппа | И ТекНоменклатура.Родитель = &Родитель | И ТекНоменклатура.ВидНоменклатуры = &ВидНоменклатуры | И IsNULL(ЦеныНоменклатуры.ТипЦен, &ТипЦен) = &ТипЦен | И IsNULL(ЦеныНоменклатуры.Валюта, &Валюта) = &Валюта | |УПОРЯДОЧИТЬ ПО | ТекНоменклатура.Наименование";
Вот это отберет всю номенклатуру, для которой есть цены (подходящие по условиям), и всю, для которой цен нет.
yuritch, запрос все равно работает не так как надо, потому что в результате получаем только те товары, у которых есть нужная цена (согласно параметрам) и те, у которых нет вообще никаких цен. Если у товара есть какая-то цена, кроме нужной - он не попадает в результата запроса ((( Разбираюсь дальше...
В общем одним запросом по-моему не получится, так как условия влияют на весь запрос а не только на ЛЕВОЕ СОЕДИНЕНИЕ. Я сделал через временную таблицу:
// ФОРМИРУЕМ ВРЕМЕННУЮ ТАБЛИЦУ ЦЕН С ЖЕЛАЕМЫМИ УСЛОВИЯМИ ЗапросЦен = Новый Запрос; ЗапросЦен.Текст = "ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Номенклатура, | ЦеныНоменклатурыСрезПоследних.Цена, | ЦеныНоменклатурыСрезПоследних.ТипЦен |ПОМЕСТИТЬ СрезПоследнихРозничныхЦен |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних |ГДЕ | ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен"; ЗапросЦен.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000002")); ЗапросЦен.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ЗапросЦен.Выполнить();
// ФОРМИРУЕМ ЗАПРОС НОМЕНКЛАТУРЫ С ЦЕНАМИ (или 0 если цены нет) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТекНоменклатура.Артикул, | ТекНоменклатура.Наименование КАК Товар, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена |ИЗ | Справочник.Номенклатура КАК ТекНоменклатура | ЛЕВОЕ СОЕДИНЕНИЕ СрезПоследнихРозничныхЦен КАК ЦеныНоменклатурыСрезПоследних | ПО ТекНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура |ГДЕ | (НЕ ТекНоменклатура.ЭтоГруппа) | И ТекНоменклатура.Родитель = &Родитель | И ТекНоменклатура.ВидНоменклатуры = &ВидНоменклатуры | |УПОРЯДОЧИТЬ ПО | Товар";
Сенсей Чака Норриса
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0
Условие Где нужно было поместить в ПО и цельный запрос бы заработал. Но в целом решение корректно и не повлечет падения производительности... ЗЫ: не забывайте уничтожать временные таблицы, а то чревато для сервера 1с ...
Условие Где нужно было поместить в ПО и цельный запрос бы заработал. Но в целом решение корректно и не повлечет падения производительности... ЗЫ: не забывайте уничтожать временные таблицы, а то чревато для сервера 1с ...
А можно посмотреть правильный вариант одним запросом? Я пробовал поместить Где в По, но у меня ничего не получилось, поэтому и выбрал вариант временной таблицы. Если на производительность не влияет - пусть так и остается ("работает - не лезь"), но на будущее хотелось бы понять... Заранее благодарен!
Сенсей Чака Норриса
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0
Цитата(irbis_triffle @ 08.08.11, 2:32)
А можно посмотреть правильный вариант одним запросом? Я пробовал поместить Где в По, но у меня ничего не получилось, поэтому и выбрал вариант временной таблицы. Если на производительность не влияет - пусть так и остается ("работает - не лезь"), но на будущее хотелось бы понять... Заранее благодарен!
ВЫБРАТЬ ТекНоменклатура.Ссылка, ТекНоменклатура.Наименование КАК Товар, ЦеныНоменклатуры.Цена КАК Цена ИЗ Справочник.Номенклатура КАК ТекНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ТекНоменклатура.Ссылка = ЦеныНоменклатуры.Номенклатура И (ЦеныНоменклатуры.ТипЦен = &ТипЦен) И (ЦеныНоменклатуры.Валюта = &Валюта) ГДЕ (НЕ ТекНоменклатура.ЭтоГруппа) И ТекНоменклатура.Родитель = &Родитель И ТекНоменклатура.ВидНоменклатуры = &ВидНоменклатуры
УПОРЯДОЧИТЬ ПО ТекНоменклатура.Наименование
как то так ... ЗЫ: но правильнее юзать виртуальные таблицы ...
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!