Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Доработка запроса выборки товаров

Доработка запроса выборки товаров
Я
   Черныйвован
 
26.12.20 - 14:45
Здравствуйте и с наступающем новым годом! Прошу помощи в непростой для меня задаче: есть модуль по работе с оффлайн оборудованием в типовой конфигурации, суть модуля - загрузить данные из txt файл и сформировать несколько таблиц значений, после запросом найти необходимую номенклатуру по штрихкоду на основании кодов товаров из временной таблицы (полученной из ТЗ (полученной из файла)) и всё это записать в отчет о продажах. Сейчас появилась проблема - Штрихкоды номенклатур (Номенклатур больше миллиона и постоянно обновляется) не совпадают с штрихкодами из файла. Но есть решение, в качестве артикула в номенклатурах записаны те самые коды из файлов в формате восьмизначного числа (00002255, 00000255). Коды из файла же состоят из конечных чисел штрихкода и имеют разную длину (2255, 255)
И вот вопрос как в запросе настроить связь 2 таблиц Товары и Номенклатура если они имеют такую структуру. Наглядная схемка таблиц: https://ibb.co/4F92YLK.
Что я пробовал: 1) Выразить как число Артикул, но как оказалось данная функция не работает со строками. 2) Применить сравнение при помощи шаблона ПОДОБНО, но тут опять постигла неудача и каждый раз выборка либо выдавала 0 результатов либо всю существующую номенклатуру. 3) Была идея написать Выражение по удалению лидирующих нулей у артикула, но как его написать для связи я так и не понял.
Надеюсь на вашу поддержку и понимание, я лишь начинающий программист и скорее всего не знаю многих аспектов, но задачу мне необходимо решить и хотелось бы её решить без костылей таких как Поменять все штрихкоды, артикулы или переделать логику загрузки из файла. Заранее спасибо!
 
 Партнерская программа EFSOL Oblako
   Ёпрст
 
1 - 26.12.20 - 16:35
(0) где наименование подобно "%255"
   Черныйвован
 
2 - 26.12.20 - 17:53
(1) Попробовал по вашему методу, его уже пробовал применять, но почему то ни чего не выходить, в запросе возвращается null. Может не так что то делаю с произвольным выражением?
   Черныйвован
 
3 - 26.12.20 - 17:54
   Ёпрст
 
4 - 26.12.20 - 18:04
(3)  сделай
Выбрать ""%""+ вт.артикул как хрень


И ты все поймешь
   Ёпрст
 
5 - 26.12.20 - 18:06
Ну или жди 20 релиз, туда грят alltrim завезли
   Сказочный
 
6 - 26.12.20 - 18:23
Может тебе в "доп реквизит" добавить "код без нулей" и при записи туда записывать код, и в данном запросе этим кодом оперировать? А всей существующей номенклатуры заполнить код один раз.
   Черныйвован
 
7 - 26.12.20 - 20:46
(4) Если сделать "Выбрать""%""+ вт.артикул как хрень", результат понятен и без запроса (%2255,%255,%55,%5) Это просто сложение строк...
Мне хотелось узнать, как в шаблоне функции ПОДОБНО соеденить опереанд "%" с полем вт.артикул...
(6) Решение реализуется в типовой конфигурации и не только моя обработка контактирует с справочником номенклатура, снимать Номенклатуру с замка запрещено. Номенклатура постоянно обновляется (Несколько раз в неделю), не угадаешь когда нужно будет заполнять код, кодом без нулей.
Проблема пока что не решена.
   Ёпрст
 
8 - 26.12.20 - 23:28
(7) так ты в начале сделай как в (4), а потом приходи.
   Ёпрст
 
9 - 27.12.20 - 00:02
Если не доходит, то так:
Выбрать ""!""+тз.артикул+""!"" Как хрень
Сымотри во втором запросе и думай над выразить..
   Черныйвован
 
10 - 27.12.20 - 11:00
(9) Понял вашу идею! "Где наименование подобно %255" - не подошло, запрос возвращал несколько строк, а вот "Где наименование подобно %0255" - вот это то что мне нужно было, теперь номенклатура отбирается так как нужно.
Для тех кто не понял уважаемого Ёпрст - он предложил не пытаться соединять операнд "%" с полем ВТ.Артикул, а заранее подготовить поле в предыдущем запросе под шаблон функции ПОДОБНО и использовать в запросе на выборку.
Скриншот готового запроса: https://ibb.co/VJc2JWW
   Ёпрст
 
11 - 27.12.20 - 14:17
(10) нет.. ты не понял..
Выразить как строка(20) слепит тебе строку в 20 символов, добивая справа пробелы, отсюда у тебя будет Подобно "%255                       "

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.