Архив метки: Запрос

Интеграция 1С со службой доставки DPD

Делал интеграцию с DPD через SOAP сервис, конечно же само сразу не заработало.

Написал в поддержку, ответили что я не передаю не правильные заголовки XML, т.е. сам дурак, а у них все работает. В общем то на их месте я бы так же ответил ) Большое спасибо что указали верные заголовки ))

Пришлось пилить костыли отправки XML на ихний сервер.

Читать далее

Запрос с нарастающим итогом

Запрос формирует таблицу с нарастающим итогом
план такой:
1) взять запрос в котором нужен нарастающий итог
2) поместить его во временную таблицу
3) взять эту таблицу в выборку 2 раза
4) связать таблицы по через «>=»
5) сгруппировать и упорадичить

Читать далее

Волшебный запрос Проверка параметра

Запрос сам проверяет значение Параметра, иначе пришлось бы городить 2 текста запроса (если есть значение параметра и если нет) или «генерировать» текст запроса кусками.

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |   ДоговорыКонтрагентов.Ссылка
        |ИЗ
        |   Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        |ГДЕ
        |   ВЫБОР
        |           КОГДА &Владелец ССЫЛКА Справочник.Контрагенты
        |               ТОГДА ДоговорыКонтрагентов.Владелец = &Владелец
        |           ИНАЧЕ ИСТИНА
        |       КОНЕЦ
        |   И ВЫБОР
        |           КОГДА &Владелец ССЫЛКА Справочник.Контрагенты
        |               ТОГДА ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора
        |           ИНАЧЕ ИСТИНА
        |       КОНЕЦ
        |   И ДоговорыКонтрагентов.Наименование = &Наименование
        |   И ДоговорыКонтрагентов.Организация = &Организация";

    Запрос.УстановитьПараметр("Владелец", Контрагент);
    Запрос.УстановитьПараметр("Наименование", Наименование);
    Запрос.УстановитьПараметр("ВидДоговора", ВидДоговора);
    Запрос.УстановитьПараметр("Организация", Организация);

    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();

    Если Выборка.Следующий() Тогда
        Договор = Выборка.Ссылка;
    Иначе
        Если Контрагент = Неопределено Тогда

            ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Договор '" + Наименование + "' не найден!");
            Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка();

        Иначе

            Договор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
            Договор.Владелец = Контрагент;
            Договор.Наименование = Наименование;
            Договор.ВидДоговора = ВидДоговора;
            Договор.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
            Договор.НалоговыйАгентПоОплате = Истина;
            Договор.Организация = ОбщегоНазначения.ГоловнаяОрганизация(Организация);
            Договор.Записать();
            Договор = Договор.Ссылка;

        КонецЕсли;
    КонецЕсли;

Волшебный запрос, небольшой лайфхак

Подстановка в ВЫБОР параметра

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