Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Получить ссылки на документы с отбором в табчасти запросом
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Vidocq05
Нужно получить ссылки на документы где во всех строках табчасти "Товары" установлен один из складов из моего списка. Если хотя бы одна строка с другим складом или с пустой ссылкой на склад то документ в выборку не должен попадать.
Документов очень много, строк в табчасти "Товары" тоже может быть много. Документы могут быть как проведенные так и не проведенные.
sava1
Выбрать все неподходящие документы - где Склад не в списке ,
Выбрать все документы и соединить по НЕ В с первым списком
awp
Vidocq05 @ Сегодня, 10:00 необходимо зарегистрироваться для просмотра ссылки ,

Делаете выборку документов с группировкой по Товары.Склады - на вывод ссылка и количествоРазных(Склады) где ссылка в выборка доков по Товары.склады = ВашиСклады и количествоРазных(Склады) = 1

Vidocq05
Цитата(sava1 @ 23.10.17, 10:22) необходимо зарегистрироваться для просмотра ссылки
Выбрать все неподходящие документы - где Склад не в списке

Так пытался, но документов очень много и через некоторое время выдает ошибку, что не хватает памяти.
awp @ Сегодня, 10:23 необходимо зарегистрироваться для просмотра ссылки ,
Это интересно, но тоже проблемка. По моей задаче должно быть Товары.Склады В (&Склады), поэтому
Цитата(awp @ 23.10.17, 10:23) необходимо зарегистрироваться для просмотра ссылки
количествоРазных(Склады) = 1

наверное не прокатит.

Вообще количество документов с требуемыми складами это где то одна пятая от всех документов. Поэтому, если запрос делать с временной таблицей, то как я понимаю, в ее выборку временной таблици должно попадать как можно меньше данных чтобы ускорить выполнение запроса.
awp
Vidocq05 @ Сегодня, 11:59 необходимо зарегистрироваться для просмотра ссылки ,
Внимательно читайте что я написал

где ссылка в выборка доков по Товары.склады = ВашиСклады

Выбираем все доки у который есть в ТЧ Ваши склады. Группируем по ссылка и склад - и где их более 1 значит нам не подхожит
sava1
Цитата(Vidocq05 @ 23.10.17, 11:59) необходимо зарегистрироваться для просмотра ссылки
документов очень много и через некоторое время выдает ошибку, что не хватает памяти.

Ограничить по периоду.
Это что за СУБД/сервер такие хлипенькие ?
Vidocq05
awp @ Сегодня, 12:25 необходимо зарегистрироваться для просмотра ссылки ,
Что то я Вас не понимаю.
Например:
Есть склады: Склад1, Склад2, Склад3. Мне нужно отобрать все документы где во всех строках Склад1 или Склад2.
Есть 2 документа с двумя строками. В первом документе строки со складами Склад1 и Склад2, а во втором документе строки со складами Склад1 и Склад3. Первый документ должен попасть в выборку, а второй нет.

Можно примерчик текста запроса?

Цитата(sava1 @ 23.10.17, 12:39) необходимо зарегистрироваться для просмотра ссылки
Ограничить по периоду.

Не хотелось бы)).
Цитата(sava1 @ 23.10.17, 12:39) необходимо зарегистрироваться для просмотра ссылки
Это что за СУБД/сервер такие хлипенькие ?

Ну какой есть((

Мне это нужно больше для опыта.
Можно было бы выбрать документы где есть в строках мои склады, потом перебирать в цикле и отбирать нужные (или отсеивать не нужные). Но это както не оптимально, мне кажется.
awp
Vidocq05 @ Сегодня, 14:17 необходимо зарегистрироваться для просмотра ссылки ,

думаю как то так

выбор * из (
выбрать ссылка,
             сумма(выбор когда склад в (мойсписок) 0 иначе 1) как полеОТБ
             из док.....
сгруппировать ссылка) где полеОТБ = 0


или использовать ИМЕЮЩИЕ сумма(выбор когда склад в (мойсписок) 0 иначе 1) = 0
Vidocq05
awp @ Вчера, 19:10 необходимо зарегистрироваться для просмотра ссылки ,
Спасибо. Не додумался до такого.

Кому интересно - вот код:
"ВЫБРАТЬ
        |    МойДокТовары.Ссылка КАК Ссылка,
        |    СУММА(ВЫБОР
        |            КОГДА МойДокТовары.Склад В (&СписокСкладов)
        |                ТОГДА 0
        |            ИНАЧЕ 1
        |        КОНЕЦ) КАК полеОТБ
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |    Документ.МойДок.Товары КАК МойДокТовары
        |
        |СГРУППИРОВАТЬ ПО
        |    МойДокТовары.Ссылка
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ.Ссылка
        |ИЗ
        |    ВТ КАК ВТ
        |ГДЕ
        |    ВТ.полеОТБ = 0";

Правда еще не проверял. Но по идее должно сработать))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.