Имя: Пароль:
1C
1С v8
Доработка запроса выборки товаров
0 Черныйвован
 
26.12.20
14:45
Здравствуйте и с наступающем новым годом! Прошу помощи в непростой для меня задаче: есть модуль по работе с оффлайн оборудованием в типовой конфигурации, суть модуля - загрузить данные из txt файл и сформировать несколько таблиц значений, после запросом найти необходимую номенклатуру по штрихкоду на основании кодов товаров из временной таблицы (полученной из ТЗ (полученной из файла)) и всё это записать в отчет о продажах. Сейчас появилась проблема - Штрихкоды номенклатур (Номенклатур больше миллиона и постоянно обновляется) не совпадают с штрихкодами из файла. Но есть решение, в качестве артикула в номенклатурах записаны те самые коды из файлов в формате восьмизначного числа (00002255, 00000255). Коды из файла же состоят из конечных чисел штрихкода и имеют разную длину (2255, 255)
И вот вопрос как в запросе настроить связь 2 таблиц Товары и Номенклатура если они имеют такую структуру. Наглядная схемка таблиц: https://ibb.co/4F92YLK.
Что я пробовал: 1) Выразить как число Артикул, но как оказалось данная функция не работает со строками. 2) Применить сравнение при помощи шаблона ПОДОБНО, но тут опять постигла неудача и каждый раз выборка либо выдавала 0 результатов либо всю существующую номенклатуру. 3) Была идея написать Выражение по удалению лидирующих нулей у артикула, но как его написать для связи я так и не понял.
Надеюсь на вашу поддержку и понимание, я лишь начинающий программист и скорее всего не знаю многих аспектов, но задачу мне необходимо решить и хотелось бы её решить без костылей таких как Поменять все штрихкоды, артикулы или переделать логику загрузки из файла. Заранее спасибо!
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                       "

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