|   |   | 
| 
 | Как оптимизировать запрос? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Ильф 21.05.25✎ 12:07 | 
        ВЫБРАТЬ
 ФедеральныеВебСервисыЭМД.Ссылка КАК Ссылка, ФедеральныеВебСервисыЭМД.Пациент КАК Пациент, ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы КАК ДокументИнформационнойБазы, ФедеральныеВебСервисыЭМД.ТипРЭМД КАК ТипРЭМД, ФедеральныеВебСервисыЭМД.Отправить КАК Отправить ИЗ втОсновная КАК ФедеральныеВебСервисыЭМД ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФедеральныеВебСервисыСообщенияРЭМД КАК ФедеральныеВебСервисыСообщенияРЭМД ПО (ФедеральныеВебСервисыЭМД.ИдентификаторДокумента = ФедеральныеВебСервисыСообщенияРЭМД.ИдентификаторДокумента) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФедеральныеВебСервисыСообщенияРЭМД КАК ФедеральныеВебСервисыСообщенияРЭМДБудущее ПО (ФедеральныеВебСервисыСообщенияРЭМД.ИдентификаторДокумента = ФедеральныеВебСервисыСообщенияРЭМДБудущее.ИдентификаторДокумента) И (ФедеральныеВебСервисыСообщенияРЭМДБудущее.ДатаСообщения > ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения) ГДЕ ФедеральныеВебСервисыСообщенияРЭМДБудущее.ИдентификаторСообщения ЕСТЬ NULL пока сам не понял смысл вроде как убирают записи у которых есть две и более записей в РС ФедеральныеВебСервисыСообщенияРЭМД | |||
| 1
    
        Ильф 21.05.25✎ 12:07 | 
        запрос 10 минут выполняется     | |||
| 2
    
        Волшебник 21.05.25✎ 12:08 | 
        Не пользуйтесь временными таблицами     | |||
| 3
    
        Ильф 21.05.25✎ 12:11 | 
        не - ВТ - это уже "оптимизация" изначально запрос в один заход выполняется 15 минут     | |||
| 4
    
        Fish гуру 21.05.25✎ 12:22 | 
        (1) А почему ты решил, что нужно оптимизировать именно этот кусок запроса?
 Именно он выполняется 10 минут, а остальные ВТ - за секунду? | |||
| 5
    
        laeg 21.05.25✎ 12:23 | 
        Индексированные поля в таблице втОсновная ? Строк там сколько миллионов ?     | |||
| 6
    
        Ильф 21.05.25✎ 12:24 | 
        (4) да     | |||
| 7
    
        Ильф 21.05.25✎ 12:24 | 
        (5) один     | |||
| 8
    
        Ильф 21.05.25✎ 12:26 | 
        насколько понимаю - ловят записи которые не имеют "вторых" И (ФедеральныеВебСервисыСообщенияРЭМДБудущее.ДатаСообщения > ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения)     | |||
| 9
    
        Fish гуру 21.05.25✎ 12:26 | 
        (6) ДатаСообщения - это индексированное поле РС?     | |||
| 10
    
        Ильф 21.05.25✎ 12:28 | 
        при этом не "фильтруются обработанные" - т.е. исторические данные накапливаются и все время в запросе участвуют
 через год получим 30 минут на запрос, а то и в геометрической надо переделывать структуру хранения | |||
| 11
    
        Ильф 21.05.25✎ 12:29 | 
        идентификатор и дата - да
 ПО (ФедеральныеВебСервисыСообщенияРЭМД.ИдентификаторДокумента = ФедеральныеВебСервисыСообщенияРЭМДБудущее.ИдентификаторДокумента) И (ФедеральныеВебСервисыСообщенияРЭМДБудущее.ДатаСообщения > ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения) вот эти поля в РС индексированы проиндексировал их в ВТ - похоже толку ноль | |||
| 12
    
        RomanYS 21.05.25✎ 12:35 | 
        (0) Это же просто срез.
 Получи в отдельную таблицу максимальные даты, а потом внутреннее соединение с ней по документу и дате | |||
| 13
    
        RomanYS 21.05.25✎ 12:37 | 
        (10) "надо переделывать структуру хранения"
 ага, периодический регистр сведений и ДатаСообщения в Период. Тогда этот запрос можно просто на срезпоследних заменить | |||
| 14
    
        Ильф 21.05.25✎ 12:37 | ||||
| 15
    
        Ильф 21.05.25✎ 12:38 | 
        (12) не понял     | |||
| 16
    
        Мультук гуру 21.05.25✎ 12:39 | 
        (0) 
 1) Вы хотя бы структуру РегистрСведений.ФедеральныеВебСервисыСообщенияРЭМД показали. Скриншот или еще что. 2) Сделайте отбор по одному пациенту и посмотрите "а что и как" Не обязательно ворочать СРАЗУ миллионами | |||
| 17
    
        Ильф 21.05.25✎ 12:41 | 
        (16) по одному мгновенно     | |||
| 18
    
        Fish гуру 21.05.25✎ 12:41 | 
        (10) Вроде не накапливаются. Ты же отсекаешь все записи, у которых есть запись с датой больше.
 Другими словами по каждому ИдентификаторСообщения выберется последняя запись, которая не имеет записи с датойсообщения больше. А-ля срез последних | |||
| 19
    
        Ильф 21.05.25✎ 12:41 | 
        просто ГДЕ Пациент = &Пациент добавляю на основную таблицу     | |||
| 20
    
        Fish гуру 21.05.25✎ 12:44 | 
        (19) Попробуй переделать на одно соединение с подзапросои по дате: 
 первое условие по ид, а второе - И ДатаСообщения в (выбрать максимум(датасообщения) из .....) | |||
| 21
    
        Ильф 21.05.25✎ 12:45 | 
        (18) тоже не понял
 есть РС непериодический ИдентификаторСообщения (строка) измерение ИдентификаторДокумента (строка индекс) реквизит ДатаСообщения (дата время индекс) реквизит выбираются документы у которых нет "второго" сообщения (насколько я понял) | |||
| 22
    
        Fish гуру 21.05.25✎ 12:47 | 
        (21) Т.е. аналог среза последних. Т.к. только последний по дате идентификатор не будет иметь дату сообщения больше.     | |||
| 23
    
        Ильф 21.05.25✎ 12:50 | 
        (22) нет
 если в РС две записи - они нам не нужны нужны только когда одна запись | |||
| 24
    
        Ильф 21.05.25✎ 12:51 | 
        Мама мыла раму 01/05
 Мама мыла раму 10/05 Папа мыл раму 01/01 Нужен только папа ща дам "типовой запрос" ... | |||
| 25
    
        H A D G E H O G s 21.05.25✎ 12:52 | 
        Скинь dtшник на liveups@yandex.ru с описанием, как воспроизвести, посмотрю.
 Все остальное - гадание на кофейной гуще. | |||
| 26
    
        laeg 21.05.25✎ 12:54 | 
        Можно попробовать еще одно ВТ сделать,  с максимальными датами по идентификатору, потом испозьуя эту ВТ получить полные данные
 Вопрос: А зачем срез последних, если в запросе нет выборки из этого РС ? | |||
| 27
    
        Ильф 21.05.25✎ 12:55 | 
        ВЫБРАТЬ
 ФедеральныеВебСервисыЭМД.Ссылка КАК Ссылка, ФедеральныеВебСервисыЭМД.Пациент КАК Пациент, ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы КАК ДокументИнформационнойБазы, ФедеральныеВебСервисыЭМД.ТипРЭМД КАК ТипРЭМД, ФедеральныеВебСервисыЭМД.Отправить КАК Отправить ИЗ Справочник.ФедеральныеВебСервисыЭМД КАК ФедеральныеВебСервисыЭМД ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Картотека КАК СправочникКартотека ПО (ФедеральныеВебСервисыЭМД.Пациент = СправочникКартотека.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТипыМДРегистрируемыхВРЭМД КАК ТипыРЭМД ПО (ФедеральныеВебСервисыЭМД.ТипРЭМД = ТипыРЭМД.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФедеральныеВебСервисыСообщенияРЭМД КАК ФедеральныеВебСервисыСообщенияРЭМД ПО (ФедеральныеВебСервисыЭМД.ИдентификаторДокумента = ФедеральныеВебСервисыСообщенияРЭМД.ИдентификаторДокумента) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФедеральныеВебСервисыСообщенияРЭМД КАК ФедеральныеВебСервисыСообщенияРЭМДБудущее ПО (ФедеральныеВебСервисыСообщенияРЭМД.ИдентификаторДокумента = ФедеральныеВебСервисыСообщенияРЭМДБудущее.ИдентификаторДокумента) И (ФедеральныеВебСервисыСообщенияРЭМДБудущее.ДатаСообщения > ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОтложенноеПодписаниеЭП КАК ОтложенноеПодписаниеЭП ПО (ФедеральныеВебСервисыЭМД.Ссылка = ОтложенноеПодписаниеЭП.ПодписываемыйОбъект) ЛЕВОЕ СОЕДИНЕНИЕ Документ.МедицинскийДокумент.CDAДокументы КАК CDAДокументы ПО (ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы ССЫЛКА Документ.МедицинскийДокумент) И (ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы = CDAДокументы.Ссылка) И (CDAДокументы.НомерСтроки = 1) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыМедицинскихДокументов КАК СтатусыМедицинскихДокументов ПО (CDAДокументы.Ссылка = СтатусыМедицинскихДокументов.МедицинскийДокумент) И (CDAДокументы.ТелоМедДокумента = СтатусыМедицинскихДокументов.ТелоМедДокумента) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыМедицинскихДокументов КАК СтатусыМедицинскихДокументовФайлы ПО (ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы ССЫЛКА Справочник.Файлы) И (ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы = СтатусыМедицинскихДокументовФайлы.ТелоМедДокумента) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФедеральныеВебСервисыЭМД.ЭлектронныеПодписиЭМД КАК ПодписьМО ПО (ФедеральныеВебСервисыЭМД.Ссылка = ПодписьМО.Ссылка) И (ПодписьМО.ЭтоПодписьМО = ИСТИНА) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФедеральныеВебСервисыЭМД.ЭлектронныеПодписиЭМД КАК ПодписьМОЕщеОдна ПО (ПодписьМО.Ссылка = ПодписьМОЕщеОдна.Ссылка) И (ПодписьМОЕщеОдна.ЭтоПодписьМО = ИСТИНА) И (ПодписьМОЕщеОдна.НомерСтроки > ПодписьМО.НомерСтроки) ГДЕ ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы <> НЕОПРЕДЕЛЕНО И СправочникКартотека.ПометкаУдаления = ЛОЖЬ И ФедеральныеВебСервисыЭМД.ПометкаУдаления = ЛОЖЬ И ФедеральныеВебСервисыЭМД.ВнешнийДокумент = ЛОЖЬ И ФедеральныеВебСервисыЭМД.ВАрхиве = ЛОЖЬ И ВЫБОР КОГДА &ИспользуетсяРегион ТОГДА ИСТИНА КОГДА ФедеральныеВебСервисыЭМД.ДатаСозданияДокумента = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ИСТИНА КОГДА ТипыРЭМД.Ссылка ЕСТЬ NULL ТОГДА ИСТИНА КОГДА (ТипыРЭМД.ДатаНачалаРегистрации = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ИЛИ ФедеральныеВебСервисыЭМД.ДатаСозданияДокумента >= ТипыРЭМД.ДатаНачалаРегистрации) И (ТипыРЭМД.ДатаОкончанияРегистрации = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ИЛИ ФедеральныеВебСервисыЭМД.ДатаСозданияДокумента <= ТипыРЭМД.ДатаОкончанияРегистрации) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ И ВЫБОР КОГДА ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы ССЫЛКА Документ.МедицинскийДокумент ТОГДА СтатусыМедицинскихДокументов.СтатусТелаДокумента = ЗНАЧЕНИЕ(Перечисление.СтатусыМедицинскихДокументов.Готов) КОГДА ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы ССЫЛКА Справочник.Файлы ТОГДА СтатусыМедицинскихДокументовФайлы.СтатусТелаДокумента = ЗНАЧЕНИЕ(Перечисление.СтатусыМедицинскихДокументов.Готов) ИНАЧЕ ИСТИНА КОНЕЦ И ФедеральныеВебСервисыСообщенияРЭМДБудущее.ИдентификаторСообщения ЕСТЬ NULL И ПодписьМОЕщеОдна.НомерСтроки ЕСТЬ NULL И ОтложенноеПодписаниеЭП.ПодписываемыйОбъект ЕСТЬ NULL И (ФедеральныеВебСервисыЭМД.Отправить = ИСТИНА ИЛИ (ФедеральныеВебСервисыЭМД.emdrId = "" ИЛИ ФедеральныеВебСервисыЭМД.ОбновитьДанныеДокументаВРЭМД = ИСТИНА) И ФедеральныеВебСервисыЭМД.БезРегистрацииВРЭМД = ЛОЖЬ И ФедеральныеВебСервисыСообщенияРЭМД.ИдентификаторДокумента ЕСТЬ NULL И ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки = "" И (ЕСТЬNULL(ТипыРЭМД.НеобходимаПодписьМО, ЛОЖЬ) = ЛОЖЬ ИЛИ НЕ ПодписьМО.НомерСтроки ЕСТЬ NULL) ИЛИ (ФедеральныеВебСервисыЭМД.emdrId = "" ИЛИ ФедеральныеВебСервисыЭМД.ОбновитьДанныеДокументаВРЭМД = ИСТИНА) И ФедеральныеВебСервисыЭМД.БезРегистрацииВРЭМД = ЛОЖЬ И НЕ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%Unmarshalling Error%" И (ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%RMIS_FAULT%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%Код ответа 500%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%Код ответа 502%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%Код ответа 503%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%Код ответа 403%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%Код ответа 404%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%Код ответа 408%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%Ошибка подключения.%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%Ошибка работы с Интернет%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%превышен лимит запросов к сервису%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%RATE_LIMIT%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%RMIS_LIMIT_FAULT%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%RMIS_REGISTERDOCUMENT_PARSING_FAULT%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%INTERNAL_ERROR%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%GW-005%" ИЛИ ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки ПОДОБНО "%GW-007%") ИЛИ (ФедеральныеВебСервисыЭМД.emdrId = "" ИЛИ ФедеральныеВебСервисыЭМД.ОбновитьДанныеДокументаВРЭМД = ИСТИНА) И ФедеральныеВебСервисыЭМД.БезРегистрацииВРЭМД = ЛОЖЬ И (ФедеральныеВебСервисыСообщенияРЭМД.ТекстОшибки ПОДОБНО "%RUNTIME_ERROR%" ИЛИ ФедеральныеВебСервисыСообщенияРЭМД.ТекстОшибки ПОДОБНО "%CA_INACCESSIBILITY%" ИЛИ ФедеральныеВебСервисыСообщенияРЭМД.ТекстОшибки ПОДОБНО "%ASYNC_RESPONSE_TIMEOUT%" ИЛИ ФедеральныеВебСервисыСообщенияРЭМД.ТекстОшибки ПОДОБНО "%SCHEMA_PROCESSING_ERROR%" ИЛИ ФедеральныеВебСервисыСообщенияРЭМД.ТекстОшибки ПОДОБНО "%Внутренняя ошибка валидации СЭМД%" И НЕ ФедеральныеВебСервисыСообщенияРЭМД.ТекстОшибки ПОДОБНО "%Код = 'VALIDATION_ERROR'%" ИЛИ ФедеральныеВебСервисыСообщенияРЭМД.ТекстОшибки ПОДОБНО "%GET_DOCUMENT_FILE_ERROR%" ИЛИ ФедеральныеВебСервисыСообщенияРЭМД.ТекстОшибки ПОДОБНО "%Ошибка работы с Интернет%" ИЛИ ФедеральныеВебСервисыСообщенияРЭМД.ТекстОшибки ПОДОБНО "%Ошибка получения файла ЭМД из файлового хранилища%") И ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки = "" ИЛИ (ФедеральныеВебСервисыЭМД.emdrId = "" ИЛИ ФедеральныеВебСервисыЭМД.ОбновитьДанныеДокументаВРЭМД = ИСТИНА) И ФедеральныеВебСервисыЭМД.БезРегистрацииВРЭМД = ЛОЖЬ И НЕ ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения ЕСТЬ NULL И ФедеральныеВебСервисыСообщенияРЭМД.ДатаОтвета = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) И ФедеральныеВебСервисыСообщенияРЭМД.СообщениеУспешноОтправлено = ИСТИНА И ДОБАВИТЬКДАТЕ(ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения, ДЕНЬ, 2) < &ТекущийДень И ФедеральныеВебСервисыЭМД.ТекстПоследнейОшибки = "" И ФедеральныеВебСервисыСообщенияРЭМД.ТекстОшибки ПОДОБНО "" ИЛИ ФедеральныеВебСервисыЭМД.ОбновитьДанныеДокументаВРЭМД = ИСТИНА И ФедеральныеВебСервисыСообщенияРЭМД.ДатаОтвета <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) И ФедеральныеВебСервисыСообщенияРЭМД.ТекстОшибки ПОДОБНО "" И (ЕСТЬNULL(ТипыРЭМД.НеобходимаПодписьМО, ЛОЖЬ) = ЛОЖЬ ИЛИ НЕ ПодписьМО.НомерСтроки ЕСТЬ NULL)) | |||
| 28
    
        Ильф 21.05.25✎ 12:56 | 
        (25) ты знаешь какие сейчас штрафы по 152 ФЗ? насмешил     | |||
| 29
    
        laeg 21.05.25✎ 12:57 | 
        (24) а зачем в обще такой геморой ? Когда нужна только одна запись ?     | |||
| 30
    
        Ильф 21.05.25✎ 12:57 | 
        (25) но буду иметь в виду,     | |||
| 31
    
        Ильф 21.05.25✎ 12:57 | 
        (29) - их нужно 200     | |||
| 32
    
        laeg 21.05.25✎ 13:00 | 
        в (24) ты явно написал, что нужны только те записи, которых по идентификатору не больше ОДНОГО ? (то есть маму не берем, берем папу)
 так и сделать условие ГДЕ Количество(Идентификатор) = 1 | |||
| 33
    
        Ильф 21.05.25✎ 13:02 | 
        (32) ... это я предположил из того что увидел в запросе
 но как вариант (а вдруг даты совпадут ? тогда не прокатит) | |||
| 34
    
        Fragster гуру 21.05.25✎ 13:05 | 
        а почему не количество различные и одно соединение?     | |||
| 35
    
        Fragster гуру 21.05.25✎ 13:05 | 
        или даже 0 соединений?     | |||
| 36
    
        Ильф 21.05.25✎ 13:07 | 
        https://disk.yandex.ru/d/JUZjKPXfXBDFqw
 наверное так... надо привести к изначальному, посмотреть что выдает | |||
| 37
    
        Ильф 21.05.25✎ 13:08 | 
        ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ ФедеральныеВебСервисыЭМД.Ссылка КАК Ссылка, ФедеральныеВебСервисыЭМД.ИдентификаторДокумента КАК ИдентификаторДокумента, ФедеральныеВебСервисыЭМД.Пациент КАК Пациент, ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы КАК ДокументИнформационнойБазы, ФедеральныеВебСервисыЭМД.ТипРЭМД КАК ТипРЭМД, ФедеральныеВебСервисыЭМД.Отправить КАК Отправить, МИНИМУМ(ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения) КАК ДатаСообщения, МАКСИМУМ(ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения) КАК ДатаСообщения1 ПОМЕСТИТЬ втПервая ИЗ втОсновная КАК ФедеральныеВебСервисыЭМД ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФедеральныеВебСервисыСообщенияРЭМД КАК ФедеральныеВебСервисыСообщенияРЭМД ПО (ФедеральныеВебСервисыЭМД.ИдентификаторДокумента = ФедеральныеВебСервисыСообщенияРЭМД.ИдентификаторДокумента) СГРУППИРОВАТЬ ПО ФедеральныеВебСервисыЭМД.Ссылка, ФедеральныеВебСервисыЭМД.ИдентификаторДокумента, ФедеральныеВебСервисыЭМД.Пациент, ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы, ФедеральныеВебСервисыЭМД.ТипРЭМД, ФедеральныеВебСервисыЭМД.Отправить ИМЕЮЩИЕ МИНИМУМ(ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения) = МАКСИМУМ(ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения) | |||
| 38
    
        Ильф 21.05.25✎ 13:22 | 
        но даже если ... исторические данные, надо как-то исключать 
 что бы вот сразу - "отправлено" - идите вна | |||
| 39
    
        Ильф 21.05.25✎ 13:37 | ||||
| 40
    
        Ильф 21.05.25✎ 13:40 | 
        ПО (ФедеральныеВебСервисыЭМД.ИдентификаторДокумента = ФедеральныеВебСервисыСообщенияРЭМД.ИдентификаторДокумента)
 ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФедеральныеВебСервисыСообщенияРЭМД КАК ФедеральныеВебСервисыСообщенияРЭМДБудущее ПО (ФедеральныеВебСервисыСообщенияРЭМД.ИдентификаторДокумента = ФедеральныеВебСервисыСообщенияРЭМДБудущее.ИдентификаторДокумента) И (ФедеральныеВебСервисыСообщенияРЭМДБудущее.ДатаСообщения > ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения) убрал соединение добавил группировку и условие ИМЕЮЩИЕ МИНИМУМ(ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения) = МАКСИМУМ(ФедеральныеВебСервисыСообщенияРЭМД.ДатаСообщения) а разница в количестве записей существенная | |||
| 41
    
        Fish гуру 21.05.25✎ 13:46 | 
        (23) А ты проверь. Найди пациента, у которого 2 записи, и выполни запрос по нему.     | |||
| 42
    
        Garykom гуру 21.05.25✎ 13:51 | 
        Юмористически правила:
 1. Не пользуйтесь временными таблицами 2. Никогда не используете краткие имена/алиасы таблиц после КАК 3. Никогда не используйте РАЗЛИЧНЫЕ 4. Никогда не обрабатывайте разные случаи (например есть дублирование или нет) отдельно через ОБЪЕДИНИТЬ 5. .. | |||
| 43
    
        DrZombi гуру 22.05.25✎ 06:45 | 
        (0) Как-то так.... 
 1. В таблицу "втОсновная" добавить поле "ДатаСообщения" коль оно вам там нужно 2. После можно убрать соединение "ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФедеральныеВебСервисыСообщенияРЭМД КАК ФедеральныеВебСервисыСообщенияРЭМД" | |||
| 44
    
        DrZombi гуру 22.05.25✎ 06:49 | 
        (40) Порой для оптимизации чего-то важного, пишут еще один регистр, который хранит это важное в готовом варианте :)
 Пример ЗУП 3.1 и расчет среднего, расчет некоторых показателей выполняется заранее, еще до вызова расчета среднего :) | |||
| 45
    
        DrZombi гуру 22.05.25✎ 06:55 | 
        (27) Вот эту конструкцию убирай из условия ГДЕ!!!
 Либо переписывай на условия ИЛИ, либо пиши через еще одну временную таблицу, куда ты поместишь эту конструкцию в Поле. После уже в следующем вызове своей таблицы, уже используешь поле в ГДЕ... Вот такая порой бывает оптимизация ;) ///Вот это бяка в запроса, на момент перехода На ПосгриСКЛ (и не только) И ВЫБОР КОГДА &ИспользуетсяРегион ТОГДА ИСТИНА КОГДА ФедеральныеВебСервисыЭМД.ДатаСозданияДокумента = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ИСТИНА КОГДА ТипыРЭМД.Ссылка ЕСТЬ NULL ТОГДА ИСТИНА КОГДА (ТипыРЭМД.ДатаНачалаРегистрации = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ИЛИ ФедеральныеВебСервисыЭМД.ДатаСозданияДокумента >= ТипыРЭМД.ДатаНачалаРегистрации) И (ТипыРЭМД.ДатаОкончанияРегистрации = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ИЛИ ФедеральныеВебСервисыЭМД.ДатаСозданияДокумента <= ТипыРЭМД.ДатаОкончанияРегистрации) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ | |||
| 46
    
        DrZombi гуру 22.05.25✎ 06:59 | 
        + (27)  И эту гадость из ГДЕ, переписывай :)
 И ВЫБОР КОГДА ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы ССЫЛКА Документ.МедицинскийДокумент ТОГДА СтатусыМедицинскихДокументов.СтатусТелаДокумента = ЗНАЧЕНИЕ(Перечисление.СтатусыМедицинскихДокументов.Готов) КОГДА ФедеральныеВебСервисыЭМД.ДокументИнформационнойБазы ССЫЛКА Справочник.Файлы ТОГДА СтатусыМедицинскихДокументовФайлы.СтатусТелаДокумента = ЗНАЧЕНИЕ(Перечисление.СтатусыМедицинскихДокументов.Готов) ИНАЧЕ ИСТИНА КОНЕЦ | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |