#0
by vsafonin
Здравствуйте! Необходимо в выборке из запроса найти записи где -один и тот же контрагент -один и тот же договор. Сам запрос: ВЫБРАТЬ РеализацияТоваровУслуг.Дата, Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг Выводит все правильно, но результатом должны быть записи для одного контрагента по одному договору с одним документом реализации, а тут получается что если в этом месяце для одного и того же контрагента делали два документа реализации, то он тоже попадает в результат. Нужно отфильтровать и выдать сообщение об ошибке. Сам я ничего лучше придумать не могу как при переборе выборки сделать еще один запрос с параметрами контрагент и договор и если количество больше 1 то выдать сообщение об ошибке. Но по моему это не оптимально, получается для каждого результата запроса будет новый и так пока вся выборка не кончится. Можно ли как то по другому сделать? Заранее премного благодарен!
#2
by vsafonin
Да дело в том что нужно найдя эти документы, выдать сообщение а остальные добавить....вот как с группировкой и имеющие это сделать? Будет еще одна колонка в которой будет число с количеством записей?
#3
by mistеr
Я так и не понял, какой документ нужен, если их несколько. Определись. И ВТ лишняя по-моему.
#4
by vsafonin
Нужно пострить таблицу вида: Договор Контрагент СуммаНачислений Начисленно Заполняется таблица за определенный период (месяц указанный пользователем) Первые 3 заполняются из данных справочника ДоговорыКонтрагентов. Последние 2 поля берутся из документа реализации, И заполняются только тогда когда они существуют, проведены, и номенклатура в Табличной Части совпадает с константой (в ней хранится определенная номенклатура) Как сделать без ВТ не понятно мне... Документы реализации для определенного договора и контрагента должны заполняться РАЗ В МЕСЯЦ. Вот мне нужно если например в текущем месяце "Ошибочно" Заполнили документ реализации 2 или больше раза.. Эти записи мне не нужны, и для них нужно выдать сообщение об ошибке.... как это сделать ума уже не приложу..
#5
by vsafonin
То есть после ошибки, нужно продолжить работу и заполнить что есть.... Пока Сделал так, если найден хоть один такой документ, выдаеться сообщение об ошибке..и просьба исправить ситуацию..пока этого не сделано, работать Обработка не будет)) Более гуманный способ есть?
#6
by Steel_Wheel
Есть. Все документы сохраняют данные в регистр со струутурой твоей таблицы, обработка подойдет стандартная по остаткам регистра. Перед записью документа, документ проверяет условие на наличие такого же документа в системе. Если документ есть, то запись текущего документа не производится. Т.е. в регистре всегда актуальные данные, твоя задача -- предотвратить попадание в регистр неактуальных или избыточных данных
#7
by EugeniaK
Ну вообще-то это правильная схема работы. Нужно исправить ошибочные документы и запустить обработку еще раз. Только не поняла, зачем перебор выборки. У тебя пакет запросов. Добавь в него еще один запрос Количество различных(Документ) сгруппировать по контрагенту и договору. Если в запросе есть данные, выдаем сообщение об ошибке и прекращаем работу. И, кстати, такое сравнение очень плохое ДоговорыКонтрагентов.Владелец.Наименование = ДокРеализации.Контрагент.Наименование Это 2 дополнительных соединения с таблицей контрагентов и плюс условие по строковому полю. Намного быстрее будет работать связь ДоговорыКонтрагентов.Владелец = ДокРеализации.Контрагент
#8
by vsafonin
Конфа типовая, делаю внешнуюю обработку не затрагивая что либо в конфигурации.. Запрос поменял. Спасибо! В принципе сейчас делаю сначала выгрузку в ТЗ, а уж В ТЗ ищу дубли, которые нашел оттуда удаляю, вывожу сообщение что мол есть докумены их надо исправить и имена и коды этих доков, хотя обработка продолжает работать. Как только буду на 100% уверен что попадание двух или более документов это ОШИБКА, либо будет критично сказываться на производительности - то оставлю только Сообщение об ошибке, и после исправления только работать.
#9
by sergus_dixi
Не надо сравнивать по наименованию - кури план запроса и увидишь проблемы. агрегатные функции не читал? количество различных > 1 и все прекрасно выводится в СКД или консоли с использованием как вариант ВЫБОР КОГДА....
#10
by GANR
Сгруппировать запрос по всем полям и добавить агрегатную функцию КОЛИЧЕСТВО(*). Если непонятно - читать СП.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как узнать количество строк в выборке после выполнения запроса?
- Позиционирование на выборке запроса
- Можно ли в качестве параметра запроса указать поле этого же запроса?
- Доступ к записям в выборке запроса
- Как получить объект на рекдактировании при выборке запроса?
- При записи в РС обнаруживаются одинаковые записи.
- Как найти точку диаграммы ганта? (метода Найти() нет)
- Свойства НОВОЙ записи при копировании записи Регистра Сведений
- УТ. При записи документа возникает модифицированность. Не найти причину.
- Как обратится к итогам запроса в выборке ???
- v7: Пример запроса к справочнику и обхода результата запроса
- Как в построитель запроса передать текст запроса из ТЗ?
В этой группе 1С
- Округление цены в УТ 11.1
- В УТ в классификаторе ЕИ не видна кнопка подбор из океи
- ЗУП специалист, задача № 1
- Генерация ключей ЭЦП для ГМУ
- Зная объект метаданных открыть форму
- Помогите советами. Документ "Табель учета раб. времени" хочу сделать в УТ
- SQL как посмотреть какой процент базы и какой в кеше оперативной памяти?
- УТ 11 и настройка аналитики Статьи расходов
- Ошибка при проведении документа поступление товаров и услуг
- В какой таблице MS SQL находится объект метаданных ?
- v7: Табличное поле: Как текущую ячейку сделать активной?
- Установка значения в колонке табличного поля
- ОткрытьФормуМодально не возвращает значения
- 1С 8 УПП. Не включать НДС в стоимость партий?
- Как сделать чтобы подчиненный справочник не появлялся в меню?
- v8: зуп 8,2.Где в программе найти документ "доплата до МРОТ"
- Не работает веб-сервер 1С
- СКД. Программный вывод картинок в отчете. Не работают отборы
- УФ, скрыть программно панель разделов
- Последовательность обновления УТ