Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Запрос во внешнем отчёте , Условия и отборы запроса          
roman457 Подменю пользователя
сообщение 12.07.17, 16:17
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 55
Спасибо сказали: 2 раз
Рейтинг: 0

Доброго времени суток знатоки.
Платформа 1С:Предприятие 8.3 (8.3.9.1850)
Конфигурация : УТ 2.3.25.1

Внешняя обработка( условно прайс) . Должна выбирать товар на складах ,цены и т.д.
С этим вроде проблем нет, но на форме есть до 6 фильтров. Городить огород с условиями не хотелось. По уму вычитал что использовать
выбор когда .

Все условия пролетают .

Хотелось получить опытную оценку каким способом лучше отбирать плавающие условия. Не возиться с отборами в таблице значений.

Если будет пример Буду благодарен.
Спасибо всем не равнодушным .

Petre Подменю пользователя
сообщение 12.07.17, 16:19
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

roman457 @ Сегодня, 17:17 * ,
Нужна конкретика. Ну а если в общем и целом, то стройте на скд.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: roman457,

roman457 Подменю пользователя
сообщение 12.07.17, 16:44
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 55
Спасибо сказали: 2 раз
Рейтинг: 0

Спасибо пойду курить СКД видимо пришло время . sad.gif

Bernet Подменю пользователя
сообщение 12.07.17, 16:45
Сообщение #4

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

roman457 @ Сегодня, 17:17 * ,
Вообщем-то соглашусь с предыдущим постом, конкретнее скажите что вы делаете, на чем отчет пишите.

Если вы в ручную выполняете запрос и выводите результат на форму, то тогда либо делать это все с помощью Построителя либо динамически формировать текст запроса, например так:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    Реализация.Ссылка КАК Док,
|    Реализация.Контрагент КАК Контрагент,
|    Реализация.ДоговорКонтрагента КАК ДоговорКонтрагента
|ИЗ
|    Документ.РеализацияТоваровУслуг КАК Реализация
|ГДЕ
|    Реализация.Проведен = ИСТИНА
|    "+?(ЗначениеЗаполнено(КонтрагентФильтр), "И Реализация.Контрагент = &Контрагент", "")+"
|    "+?(ЗначениеЗаполнено(ДоговорФильтр), "И Реализация.ДоговорКонтрагента = &Договор", "")+"
|"

где КонтрагентФильтр, ДоговорФильтр - это ваши отборы на форме.
Но лучше всего такие вещи делать либо через СКД, либо если в конфигурации есть универсальный отчет - через универсальный отчет


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: roman457,

roman457 Подменю пользователя
сообщение 12.07.17, 17:09
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 55
Спасибо сказали: 2 раз
Рейтинг: 0

|    "+?(ЗначениеЗаполнено(КонтрагентФильтр), "И Реализация.Контрагент = &Контрагент", "")+"
|    "+?(ЗначениеЗаполнено(ДоговорФильтр), "И Реализация.ДоговорКонтрагента = &Договор", "")+"


то что нужно . В очередной раз убеждаюсь что копаю глубже чем нужно ( всё перед носом ) всем спасибо.

Сообщение отредактировал Vofka - 13.07.17, 7:56

Santino Подменю пользователя
сообщение 19.07.17, 16:39
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 47 раз
Рейтинг: 0

Ну-ну. Такой запрос уже не откроете в конструкторе запроса. А если запрос составной, и кучей условий, то можно идти за веревкой с мылом...
Поэтому я применяю чутка другой подход.
    ТекстЗапроса = 
        "ВЫБРАТЬ
        |    ДоговорыКонтрагентов.Ссылка
        |ИЗ
        |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        |ГДЕ
        |    &УсловиеКонтрагент";


    Если ЗначениеЗаполнено(ЭтотОбъект.ОтборКонтрагент) Тогда
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"&УсловиеКонтрагент","ДоговорыКонтрагентов.Владелец = &Контрагент");
        Запрос.УстановитьПараметр("Контрагент", ЭтотОбъект.ОтборКонтрагент);
    Иначе
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"&УсловиеКонтрагент","Истина");
    КонецЕсли; // ЗначениеЗаполнено(ЭтотОбъект.ОтборОрганизация)


Такой запрос и в конструкторе можно посмотреть, и разные пустые-непустые отборы нормально обрабатываются.

roman457 Подменю пользователя
сообщение 21.07.17, 13:53
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 55
Спасибо сказали: 2 раз
Рейтинг: 0

Santino @ 19.07.17, 17:39 * ,
Спасибо за Предложение. Идея конструктора и предложения у меня открылось как говорится второе дыхание , а если по сути то заказчик вспомнил что он по дороге жизни хочет ещё пару условий.
Решил использовать метод , но что-то в синтаксисе упускаю ??
    Запрос = Новый Запрос;
            ТекстЗапроса =
            "ВЫБРАТЬ
            |    ТоварыНаСкладахОстаткиИОбороты.Склад,
            |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
            |    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК Кво,
            |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1,
            |    ЦеныНоменклатурыСрезПоследних.ТипЦен,
            |    ЦеныНоменклатурыСрезПоследних.Валюта,
            |    ЦеныНоменклатурыСрезПоследних.Цена,
            |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Родитель КАК Категории,
            |    ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
            |    ЦеныНоменклатурыСрезПоследних.СпособРасчетаЦены
            |ИЗ
            |    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, &ТекДата, , ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
            |        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            |ГДЕ
            |    &УСловиеСоставное";
            //|    И ЦеныНоменклатурыСрезПоследних.Цена МЕЖДУ &СуммаС И &СУммаПо";

            Запрос.УстановитьПараметр("ТекДата", Дата(ТекущаяДата()));
            
            Если ЗначениеЗаполнено(СуммаС)Или ЗначениеЗаполнено(СуммаПо) Тогда
                ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"&УсловиеСоставное","ЦеныНоменклатурыСрезПоследних.Цена МЕЖДУ &СуммаС И &СУммаПо");
                Запрос.УстановитьПараметр("СуммаС", Строка(Элементыформы.Суммас.Значение));
                Запрос.УстановитьПараметр("СуммаПо", Строка(Элементыформы.СуммаПо.Значение));
            Иначе
                ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"&УсловиеСоставное","Истина");
            КонецЕсли;
                    РезультатЗапроса = Запрос.Выполнить();        
            ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
            ф = Запрос.Выполнить().Выгрузить();

Уже просто спортивный интерес если честно .

Flexy Подменю пользователя
сообщение 21.07.17, 14:04
Сообщение #8

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

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


Сообщение отредактировал Flexy - 21.07.17, 14:06

roman457 Подменю пользователя
сообщение 21.07.17, 14:24
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 55
Спасибо сказали: 2 раз
Рейтинг: 0

Flexy @ Сегодня, 15:04 * ,
Увы но комментировать нельзя нужен результат по условиям с текстом автора. в ответе выше моего . спасибо .

Flexy Подменю пользователя
сообщение 21.07.17, 14:27
Сообщение #10

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(roman457 @ 21.07.17, 14:24) *
Увы но комментировать нельзя нужен результат по условиям с текстом автора. в ответе выше моего . спасибо .

ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекДата, &УСловиеСоставное )

Условие в параметрах виртуальной таблицы не подходит?

Спасибо сказали: roman457,

Petre Подменю пользователя
сообщение 21.07.17, 14:40
Сообщение #11

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Цитата(roman457 @ 21.07.17, 15:24) *
Увы но комментировать нельзя нужен результат по условиям с текстом автора. в ответе выше моего .

Это тоже не на много лучше первого предложения.
Если нет времени на скд, то пробуйте построитель запроса. Там и текст запроса откроется в конструкторе, и условий можно добавлять чуть менее чем любых...


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: roman457,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.04.24, 12:41
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!