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

Хранилище

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

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



> Обработка: отбор по подразделению          
Constantus Подменю пользователя
сообщение 18.06.18, 10:53
Сообщение #1

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

Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

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

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


У обработки имеются реквизиты "Организация" и "Подразделение", отображенные на форме.
При открытии формы, значение "Подразделение" пустое и при запуске обработки выводит результаты по всем данным, где реквизит "Подразделение" не заполнен тоже.
Как добиться того, чтобы при пустом значении на форме выводились все результаты, игнорируя отбором по Подразделению.

Bernet Подменю пользователя
сообщение 18.06.18, 11:09
Сообщение #2

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

Constantus @ Сегодня, 11:53 * ,
|    ИЗ
|        Документ.СписаниеТоваров КАК СписаниеТоваров
|    ГДЕ
|        СписаниеТоваров.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
|        И СписаниеТоваров.Проведен = ИСТИНА
|        И СписаниеТоваров.НаДоход = ИСТИНА
|        И СписаниеТоваров.ПометкаУдаления = ЛОЖЬ) КАК ВложенныйЗапрос
|ГДЕ
|    ВложенныйЗапрос.Организация = &Организация
|    "+?(ЗначениеЗаполнено(Подразделение), "И ВложенныйЗапрос.Подразделение = &Подразделение", "")+"
|
|СГРУППИРОВАТЬ ПО
|    ВложенныйЗапрос.Статус,
|    ВложенныйЗапрос.Номенклатура,
|    ВложенныйЗапрос.Организация,
|    ВложенныйЗапрос.Подразделение
|
|УПОРЯДОЧИТЬ ПО
|    Статус,
|    Номенклатура
|АВТОУПОРЯДОЧИВАНИЕ";

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


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

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

Constantus Подменю пользователя
сообщение 18.06.18, 11:25
Сообщение #3

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

Bernet @ Сегодня, 14:09 * ,

Шайтан!!!

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

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

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


З.Ы, Конструктор запросов будет работать smile.gif

Сообщение отредактировал Flexy - 18.06.18, 13:50

Constantus Подменю пользователя
сообщение 18.06.18, 14:43
Сообщение #5

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

Flexy @ Сегодня, 16:45 * ,

Не совсем корректно работает...

Усложним задачу. В идеале, все Подразделения должны быть заполнены, но тем не менее есть что-то пропущено, т.е. значения Подразделений пустые.

Я разместил реквизит булево "Пропущено" на форме. Теперь, в случае, если значение параметра на форме "Подразделения" пустое, то должно выводить все значения, а вот если стоит галка "Пропущено" вывести все пустые значения Подразделений:

Т.е., если НЕ ЗначениеЗаполнено(Подразделение), но Пропущено=Истина, тогда Подразделение = ПустаяСсылка()

Попробовал добавить:

?(Ошибочные, "И ВложенныйЗапрос.Подразделение = Справочники.Подразделения.ПустаяСсылка()", "")


Дает синтактическую ошибку:

"+?(ЗначениеЗаполнено(Подразделение), "И ВложенныйЗапрос.Подразделение = &Подразделение", ?(Ошибочные, "И ВложенныйЗапрос.Подразделение = Справочники.Подразделения.ПустаяСсылка()", ""))+"

Bernet Подменю пользователя
сообщение 18.06.18, 14:53
Сообщение #6

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

Constantus @ Сегодня, 15:43 * ,
"+?(ЗначениеЗаполнено(Подразделение), "И ВложенныйЗапрос.Подразделение = &Подразделение", ?(Ошибочные, "И ВложенныйЗапрос.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)", ""))+"


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

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

Constantus Подменю пользователя
сообщение 18.06.18, 15:04
Сообщение #7

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

Bernet @ Сегодня, 17:53 * ,


Шайтан-2!

Batchir Подменю пользователя
сообщение 19.06.18, 8:42
Сообщение #8

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

а я бы написал

|ГДЕ
|    ВложенныйЗапрос.Организация = &Организация
|    И 1 = 1

И в зависимости от необходимых данных делал
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"1 = 1", "<необходимое простое условие>");


Тоже конструктор будет работать. Нужно по возможности упрощать текст запроса который сервер 1С посылает серверу СУБД.
Мало ли какие данные (и как) хранятся в СУБД. Усложнение фильтров может повлиять на выборку данных, чем проще и точнее условия, тем проще оптимизатору СУБД построить оптимальный план запроса.

Сообщение отредактировал Batchir - 19.06.18, 8:44

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

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Спасибо сказали: 166 раз
Рейтинг: 130.8

Самое прикольное, что в типовых мы встречаем все три варианта. 32541510.gif


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Bernet Подменю пользователя
сообщение 19.06.18, 10:33
Сообщение #10

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

andr_andrey @ Сегодня, 11:24 * ,
Ну есть ещё один вариант - заранее сформировать строку с отбором с учетом всех условий и потом только вставить в разрыв текста запроса, конструктором я особо не пользуюсь, а читается мне так проще, типа такого:
ТекстФильтра = "ГДЕ ВложенныйЗапрос.Организация = &Организация ";
Если ЗначениеЗаполнено(Подразделение) Тогда
      ТекстФильтра = ТекстФильтра + " И ВложенныйЗапрос.Подразделение = &Подразделение";
ИначеЕсли Ошибочные Тогда
      ТекстФильтра = ТекстФильтра + " И ВложенныйЗапрос.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)";
КонецЕсли;

и потом просто в условие вставляем сформированную заранее строку:
|    ИЗ
|        Документ.СписаниеТоваров КАК СписаниеТоваров
|    ГДЕ
|        СписаниеТоваров.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)
|        И СписаниеТоваров.Проведен = ИСТИНА
|        И СписаниеТоваров.НаДоход = ИСТИНА
|        И СписаниеТоваров.ПометкаУдаления = ЛОЖЬ) КАК ВложенныйЗапрос
|      "+ТекстФильтра+"
|
|СГРУППИРОВАТЬ ПО
|    ВложенныйЗапрос.Статус,
|    ВложенныйЗапрос.Номенклатура,
|    ВложенныйЗапрос.Организация,
|    ВложенныйЗапрос.Подразделение
|
|УПОРЯДОЧИТЬ ПО
|    Статус,
|    Номенклатура
|АВТОУПОРЯДОЧИВАНИЕ";


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

andr_andrey Подменю пользователя
сообщение 19.06.18, 11:34
Сообщение #11

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Спасибо сказали: 166 раз
Рейтинг: 130.8

Bernet @ Сегодня, 11:33 * ,
Редактирование конструктором дорогого стоит, а эти плюсики посреди десятиэкранного запроса заставляют думать о разработчике недоброе smile.gif


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Bernet Подменю пользователя
сообщение 19.06.18, 11:59
Сообщение #12

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

andr_andrey @ Сегодня, 12:34 * ,
и тем не менее половина типовых механизмов именно так реализована


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

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


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

 

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