Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=4549)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ 8.2 Бух. Запрос с условием "комментарий содержит текст"

Автор: bolobol 26.08.11, 12:35

Приветствую

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

Есть документы, в комментарии которых указаны значения недостающих реквизитов, пример:

ПКО1, комментарий: раб. время с 12 до 15 (зал3). Инкассации не было.
ПКО2, комментарий: Сдано за раб. время с 14 до 18 (зал3). Инкассация.
ПКО3, комментарий: Инкассация. раб. с 10 до 16 (зал1).
ПКО4, комментарий: раб. время с 10 до 12 (зал новый). Не инкассация.

Нужно вывести сумму ПКО-шек, сгруппировав их по залам.

Есть справочник Склады, в котором элементы имеют наименования, которые буква в букву (за исключением регистра) совпадают с текстом комментария:
Склад1, наименование: Зал1
Склад2, наименование: зал2
Склад3, наименование: зал3
Склад4, наименование: Зал Новый
Склад5, наименование: левый приход

Но если в комментарии не указан склад - группировать по складу - "левый приход"

-----

Сейчас всё делаю построчной проверкой "Найти(Комментарий, Склад.Наименование)", но чё-то долго как-то. А тут же эскуэль есть!! Одно не въехать - как? А вдруг в комментарии попадётся _два_ склада?? Есть мысли - напишите пожалуйста.

Автор: Ardi 26.08.11, 13:00

        Запрос.Текст = 
        "ВЫБРАТЬ
        |    Игроки.Ссылка
        |ИЗ
        |    Справочник.Игроки КАК Игроки
        |ГДЕ
        |    Игроки.Наименование ПОДОБНО &Наименование";
        Запрос.УстановитьПараметр("Наименование",Текст+"%");

Комментарии неограниченной длины - не знаю как с ними работать будет. Ну и наверно добавить"%"+ нужно:
в Запрос.УстановитьПараметр("Наименование","%"+Текст+"%");

Автор: Vofka 26.08.11, 13:15

Цитата
Комментарии неограниченной длины - не знаю как с ними работать будет

Что б работало надо как-то так сделать:
ВЫРАЗИТЬ(Комментарий КАК СТРОКА(100500))

Автор: bolobol 26.08.11, 20:56

Логично. Суть в том, что получается несколько запросов по количеству элементов справочника Склады. А одним запросом? По сути - Ваше решение избавляет от проверки каждой строки, т.к. сервер отберёт только нужные строки - это да. Но если в каком либо документе нет склада, то дополнительный запрос на не входящие в найденные - это без указания склада, а вот если два склада и более указано, то в две выборки попадёт один и тот же документ, этот дополнительная свёртка результата с подсчётоми сортировкой по полю подсчёта - очень нагружено, в том числе и для сервера.

Автор: Batchir 26.08.11, 21:32

Поиск в комментариях - обречен на постоянный гембель. Где-то указали не так как в справочнике, где-то указали два склада, где-то вообще не указали.
А может пойти другим путем? Есть такое понятие в бухии как дополнительные реквизиты, может создать для документов доп. реквизит и обязать заполнять его для ПКО тех кто их создает.

Автор: bolobol 27.08.11, 16:49

Цитата(Batchir @ 26.08.11, 22:32) http://pro1c.org.ua/index.php?act=findpost&pid=30516
Где-то указали не так как в справочнике, где-то указали два склада, где-то вообще не указали.
А может пойти другим путем? Есть такое понятие в бухии как дополнительные реквизиты, может создать для документов доп. реквизит и обязать заполнять его для ПКО тех кто их создает.

Обязать нельзя, нужно проверки ставить, а (к стыду своему) совсем не смог разобраться (как-то раз пробовал) что за зверь - дополнительные реквизиты. Дополнительный реквизит назначается сразу всем документам - нет, значит его ещё и добавлять нужно - это гемор, но если разобраться с архитектурой, то в момент записи можно проверять комментарий и добавлять этот реквизит, но как это должно происходить? Это регистр сведений или справочник какой?

Автор: Batchir 27.08.11, 17:37

Дополнительный реквизит добавляется сразу для всех документов, а заполняется индивидуально для каждого (как и любой реквизит).
Хранятся значения дополнительных реквизитов в регистре сведений "Значения дополнительных реквизитов".
Если пользователи будут заполнять их то всё будет хорошо.

Но всё это касается типового механизма. Если вы планируете дорабатывать типовые объекты, то я скорее всего пошел бы другим путем.

Автор: bolobol 29.08.11, 8:22

Цитата(Vofka @ 26.08.11, 14:15) *
ВЫРАЗИТЬ(Комментарий КАК СТРОКА(100500))

Можно спросить, почему именно 100500?

Как по всем комментариям ПКО выяснить максимальную длину? С точки зрения оптимизации - это вряд ли поможет, но сам вопрос!

Автор: Vofka 29.08.11, 8:47

Цитата
Можно спросить, почему именно 100500?

Это я образно.

Цитата
Как по всем комментариям ПКО выяснить максимальную длину? С точки зрения оптимизации - это вряд ли поможет, но сам вопрос!

Можно написать не сложную обработку, которая, которая переберёт все ПКО в базе и определит наибольший комментарий. Но это будет резальтат на текущий момент. А завтра (послезавтра, через недель, через 10 лет) кто-то может ввести комент больше. Поэтому просто надо логически определить сколько может понадобиться символов на это. А если внести пару строк кода - то можно в ПКО проверять длину комментария, таким образом гарантировать, что длина не будет превышать какое-то количество символов.

Автор: bolobol 29.08.11, 19:15

Цитата(Vofka @ 29.08.11, 9:47) http://pro1c.org.ua/index.php?act=findpost&pid=30568
Можно написать не сложную обработку, которая, которая переберёт все ПКО в базе и определит наибольший комментарий. Но это будет резальтат на текущий момент. А завтра (послезавтра, через недель, через 10 лет) кто-то может ввести комент больше. Поэтому просто надо логически определить сколько может понадобиться символов на это. А если внести пару строк кода - то можно в ПКО проверять длину комментария, таким образом гарантировать, что длина не будет превышать какое-то количество символов.


Не-не! По поводу обработки - это не то, именно получив выборку - узнать какова максимальная длина комментария - вот вопрос. Есть ли функция вычисления длины, там, что-то такое?

А проверки написать - это, конечно, вариант, но как правило, логическая оценка даст результат и до первого крика "Мой склад отчёт не видит, а он ЕСТЬ!" ))

Автор: Batchir 30.08.11, 7:15

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

В документе должна быть прямая ссылка на склад (кстати сам реквизит есть просто не во всех операциях участвует). Можно сделать доступным реквизит "Склад" для всех операций и сделать обязательным к заполнению. Но это доработка типового объекта.
Или как я говорил - организовать работу с дополнительными реквизитами без доработки типового объекта.

Автор: bolobol 13.09.11, 8:20

А общие реквизиты возможно использовать для решения данной задачи?

Автор: Batchir 13.09.11, 8:36

В 8-ке нет понятия общих реквизитов, они были в 7.7.
Так что уточните что Вы имеете ввиду

Автор: Vofka 13.09.11, 8:42

Цитата
В 8-ке нет понятия общих реквизитов

А в 8.14 вроде есть, если я не ошибаюсь

Автор: bolobol 13.09.11, 10:14

Описание нововведений в 8.2.14... содержит общие реквизиты, которые, якобы, должны работать, в том смысле, что - не создавая дополнительной, неадекватной выхлопу, нагрузки на сервер.

Автор: Batchir 13.09.11, 10:57

Тогда хз, я ещё не переходил на 8.2.14

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua