- В этой теме 1 ответ, 2 участника, последнее обновление 17 минут назад сделано .
Просмотр 1 ветки ответов
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.
Программирование и администрирование в 1С
База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как найти номенклатуру без сегмента в регистре с ЛЕВОЕ СОЕДИНЕНИЕ?
есть регистр сегменты номенклатуры , напиши запрос, который будет искать всю номенклатуру (не группы), у которых не прописан сегмент
Чтобы получить всю номенклатуру (только элементы, не группы), у которых нет записи в регистре «Сегменты номенклатуры» (т.е. сегмент не прописан), нужно сделать запрос с левой внешней связью (ЛЕВОЕ СОЕДИНЕНИЕ) между справочником Номенклатура и регистром сегментов и отфильтровать записи, где сегмент отсутствует.
Пример запроса:
|ВЫБРАТЬ
| Номенклатура.Ссылка КАК Номенклатура
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СегментыНоменклатуры КАК Сегменты
| ПО Сегменты.Номенклатура = Номенклатура.Ссылка
|ГДЕ
| Номенклатура.ЭтоГруппа = ЛОЖЬ
| И Сегменты.Номенклатура ЕСТЬ NULL
Объяснение:
— Номенклатура.ЭтоГруппа = ЛОЖЬ — выбираем только элементы, не группы.
— Левое соединение с регистром сегментов по полю Номенклатура.
— В условии фильтрации проверяем, что в регистре сегментов для данной номенклатуры нет записи (NULL).
Если в регистре сегментов поле с сегментом называется, например, «Сегмент», и нужно проверить именно его, то можно проверить NULL по этому полю.
Если регистр сегментов — накопительный или сведений, и в нем есть измерение «Номенклатура», то по нему связываемся.
Если нужно вывести дополнительные поля — добавьте их в выборку.
Если регистр называется иначе, замените имя в запросе.
Такой запрос вернёт все номенклатурные позиции без назначенного сегмента.