8.х 1С кластер 8.2 MS SQL и неизвестное значение

Тема в разделе "Установка платформы "1С:Предприятие 8"", создана пользователем uncleshu, 31 авг 2011.

  1. TopicStarter Overlay
    uncleshu
    Offline

    uncleshu

    Регистрация:
    31 авг 2011
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Подскажите или ткните пальчиком, если поднималась эта тема. Не нашел.
    Результат запроса пустой, и при условии по количеству строк в запросе 1С вылетает. Получается что в запросе неизвестное значение а не NULL, вопрос где подкрутить в соединении, чтоб запрос выполнялся по ANSI а не потому. Где настраивать параметры клиента к SQL серверу.
    А то уже совсем голову сломал
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Версию платформы сообщите.
  3. TopicStarter Overlay
    uncleshu
    Offline

    uncleshu

    Регистрация:
    31 авг 2011
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    1С:Предприятие 8.2 (8.2.13.219)
    но это проявлялось и на 8.1 думали с переходом на другие релизы, это пройдет
  4. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Текст проблемного запроса можете показать?
  5. TopicStarter Overlay
    uncleshu
    Offline

    uncleshu

    Регистрация:
    31 авг 2011
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Код:
    Функция АвтоПодборБокса(КолвоМин, ДатаИВремяНачала, ДатаИВремяОкончания, Назначение) Экспорт
    //Сообщение = Новый СообщениеПользователю();
    //Сообщение.Текст = строка(Назначение);
    //Сообщение.Сообщить();
    
    Бокс = Справочники.Боксы.ПустаяСсылка();
    НачСмены = ПолучитьНачалоСмены(Назначение, ДатаИВремяНачала);
    КонСмены = ПолучитьКонецСмены(Назначение, ДатаИВремяНачала);
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |    Боксы.Ссылка КАК Бокс,
    |    СУММА(ЕСТЬNULL(РасчетыПоЗаказамОбороты.СуммаПриход, 0)) КАК СуммаПриход
    |ИЗ
    |    Справочник.Боксы КАК Боксы
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыПоЗаказам.Обороты(
    |                ,
    |                ,
    |                ,
    |                Заказ.Бокс.Владелец = &Назначение
    |                    И (Заказ.ДатаИВремяНачала МЕЖДУ &НачСмены И &КонСмены)) КАК РасчетыПоЗаказамОбороты
    |        ПО Боксы.Ссылка = РасчетыПоЗаказамОбороты.Заказ.Бокс
    |ГДЕ
    |    Боксы.Владелец = &Назначение
    |    И (НЕ Боксы.ПометкаУдаления)
    |    И (НЕ Боксы.Ссылка В
    |                (ВЫБРАТЬ
    |                    ЗанятостьБоксов.Бокс КАК Бокс
    |                ИЗ
    |                    РегистрСведений.ЗанятостьБоксов КАК ЗанятостьБоксов
    |                ГДЕ
    |                    (ЗанятостьБоксов.ВремяНачала <= &ВремяНачала
    |                            И ЗанятостьБоксов.ВремяОкончания > &ВремяНачала
    |                        ИЛИ ЗанятостьБоксов.ВремяНачала < &ВремяОкончания
    |                            И ЗанятостьБоксов.ВремяОкончания >= &ВремяОкончания
    |                        ИЛИ ЗанятостьБоксов.ВремяНачала >= &ВремяНачала
    |                            И ЗанятостьБоксов.ВремяОкончания <= &ВремяОкончания)
    |                    И (НЕ ЗанятостьБоксов.Бокс.ПометкаУдаления)
    |                    И ЗанятостьБоксов.Бокс.Владелец = &Назначение
    |        
    |                ОБЪЕДИНИТЬ ВСЕ
    |        
    |                ВЫБРАТЬ
    |                    ВремяПересменки.Бокс
    |                ИЗ
    |                    РегистрСведений.ВремяПересменки КАК ВремяПересменки
    |                ГДЕ
    |                    ((ЧАС(ВремяПересменки.ВремяНачала) < ЧАС(&ВремяНачала)
    |                            ИЛИ ЧАС(ВремяПересменки.ВремяНачала) = ЧАС(&ВремяНачала)
    |                                И МИНУТА(ВремяПересменки.ВремяНачала) <= МИНУТА(&ВремяНачала))
    |                            И (ЧАС(ВремяПересменки.ВремяОкончания) > ЧАС(&ВремяНачала)
    |                                ИЛИ ЧАС(ВремяПересменки.ВремяОкончания) = ЧАС(&ВремяНачала)
    |                                    И МИНУТА(ВремяПересменки.ВремяОкончания) > МИНУТА(&ВремяНачала))
    |                        ИЛИ (ЧАС(ВремяПересменки.ВремяНачала) < ЧАС(&ВремяОкончания)
    |                            ИЛИ ЧАС(ВремяПересменки.ВремяНачала) = ЧАС(&ВремяОкончания)
    |                                И МИНУТА(ВремяПересменки.ВремяНачала) < МИНУТА(&ВремяОкончания))
    |                            И (ЧАС(ВремяПересменки.ВремяОкончания) > ЧАС(&ВремяОкончания)
    |                                ИЛИ ЧАС(ВремяПересменки.ВремяОкончания) = ЧАС(&ВремяОкончания)
    |                                    И МИНУТА(ВремяПересменки.ВремяОкончания) >= МИНУТА(&ВремяОкончания))
    |                        ИЛИ (ЧАС(ВремяПересменки.ВремяНачала) > ЧАС(&ВремяНачала)
    |                            ИЛИ ЧАС(ВремяПересменки.ВремяНачала) = ЧАС(&ВремяНачала)
    |                                И МИНУТА(ВремяПересменки.ВремяНачала) >= МИНУТА(&ВремяНачала))
    |                            И (ЧАС(ВремяПересменки.ВремяОкончания) < ЧАС(&ВремяОкончания)
    |                                ИЛИ ЧАС(ВремяПересменки.ВремяОкончания) = ЧАС(&ВремяОкончания)
    |                                    И МИНУТА(ВремяПересменки.ВремяОкончания) <= МИНУТА(&ВремяОкончания)))
    |                    И (НЕ ВремяПересменки.Бокс.ПометкаУдаления)
    |                    И ВремяПересменки.Бокс.Владелец = &Назначение))
    |
    |СГРУППИРОВАТЬ ПО
    |    Боксы.Ссылка
    |
    |УПОРЯДОЧИТЬ ПО
    |    СуммаПриход";
    
    Запрос.УстановитьПараметр("Назначение", Назначение);
    Запрос.УстановитьПараметр("ВремяНачала", ДатаИВремяНачала);
    Запрос.УстановитьПараметр("ВремяОкончания", ДатаИВремяОкончания);
    Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ДатаИВремяНачала));
    Запрос.УстановитьПараметр("НачСмены", НачСмены);
    Запрос.УстановитьПараметр("КонСмены", КонСмены);
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    Если Выборка.Следующий() Тогда
    Бокс = Выборка.Бокс;
    Иначе
    //ТекстПредупреждения="На это время все боксы заняты";
    //Сообщение = Новый СообщениеПользователю;
    //Сообщение.Текст = ТекстПредупреждения;
    //Сообщение.Сообщить();
    КонецЕсли;
    
    Возврат Бокс;    
    КонецФункции
    

Поделиться этой страницей