Вход | Регистрация
 

Разбить строки в запросе.

Разбить строки в запросе.
Я
   progaoff
 
21.04.21 - 16:21
Есть артикул, в количестве 2шт на остатке. Его нужно вывести 2мя записями по 1 шт. Запросом.
Подскажите идею, уже голову сломал. Заранее спасибо
   butterbean
 
1 - 21.04.21 - 16:23
(0) если остаток 10 штук, то записей будет 10?
   RomanYS
 
2 - 21.04.21 - 16:23
(0) Соединить с сгенеренной таблицей чисел 
ПО Числа.Число <= Остатки.Количество
   progaoff
 
3 - 21.04.21 - 16:23
(1) да
   progaoff
 
4 - 21.04.21 - 16:27
(2) а как таблицу  сгенерить?
   Cthulhu
 
5 - 21.04.21 - 16:28
(4): программно сгенерить да в параметр засунуть
   Kassern
 
6 - 21.04.21 - 16:28
   RomanYS
 
7 - 21.04.21 - 16:28
(4) примеров полно. Самое простое - создать таблицу цифр, потом соединить саму с собой сколько нужно раз
   VladZ
 
8 - 21.04.21 - 16:36
(0) Зачем?
   progaoff
 
9 - 21.04.21 - 16:37
(8) есть необходимость
   Fedor-1971
 
10 - 21.04.21 - 16:37
(5) в общем случае непонятен остаток, может быть и 1000, и 100000 и больше
(8) Например БСО по номерам учитывать хотят

(0) нужно решать обратную задачу: выбираем остатки и кодом генерим таблицу значений
   progaoff
 
11 - 21.04.21 - 16:38
(10) хотелось бы запросом
   Fedor-1971
 
12 - 21.04.21 - 16:39
(11) у тебя изначально нет Остатка, ты куда потом результат запроса будешь отправлять?
   Fedor-1971
 
13 - 21.04.21 - 16:41
(11) 3 шага:
1. выбираем остатки
2. генерим Таблицу значений
3. в Запрос параметром пердаём ТЗ из п.2
   progaoff
 
14 - 21.04.21 - 16:41
(12) на остатке 10, нужно вывести по 1й строке
   Cthulhu
 
15 - 21.04.21 - 16:43
(11): далеко не всегда нужна скд (других разумных причин кровь-из-носу-только-запросом я не знаю).
если нужен разовый "цельнопаяный" отчет - то запросно-программно-табмакетное формирование - оптимальнее.
   RomanYS
 
16 - 21.04.21 - 16:43
(13) Почему не просто
1. генерим таблицу с запасом
2. соединяем с остатками?
   Fedor-1971
 
17 - 21.04.21 - 16:48
(16) Запас неизвестен, это сейчас 10 шт, а потом? Кроме того, есть ещё и количества 0,01 вот с ними что делать непонятно
(14) а если на Остатке 1000 или 0,0008?
   Fedor-1971
 
18 - 21.04.21 - 16:49
(15) и в СКД можно запихнуть готовую ТаблицуЗначений, только придётся её руками описать
   RomanYS
 
19 - 21.04.21 - 16:50
(17) И в чем проблема. Если мы их там ждём, то никакой проблемы в этом нет.
   progaoff
 
20 - 21.04.21 - 16:51
Долбаная маркировка
   VladZ
 
21 - 21.04.21 - 16:53
(10) В любом случае странный подход.
Компания 1с разработала агрегирующий механизм получения остатков.
И тут выясняется, что агрегирующий механизм нужно как-то "разбить".

В рамках действующего механизма - только вводить доп.аналитику.
   Fedor-1971
 
22 - 21.04.21 - 16:56
(19) так тогда какие цифры нужны 9999,9999 и сколько это строк? с каким шагом?

(20) ты что с маркировкой делаешь? хочешь достать имеющиеся номера или что?

(21) это не мне нужно.
   progaoff
 
23 - 21.04.21 - 17:07
Имею 12000 тыщ кодов каждый из которых должен принадлежать артикулу (22)
   progaoff
 
24 - 21.04.21 - 17:08
(23) Остатки в экселе но сумарно по арту а нужно, сколько на остатке столько и строк с количеством 1, коды тоже в экселе.
   RomanYS
 
25 - 21.04.21 - 17:16
(22) так тогда какие цифры нужны 9999,9999 и сколько это строк? с каким шагом?
Так это постановки задачи зависит. "Если мы их там ждём" - значит мы знаем как их разбить.
   RomanYS
 
26 - 21.04.21 - 17:17
(24) Ничего не понятно. Если есть таблица с кодами, то генерить ничего не надо
   Fedor-1971
 
27 - 21.04.21 - 17:27
(23) Погоди, ты получил в Экселе табличку с колонками   Артикул + Кол-во штук + Номер С + Номер ПО
читаешь оную и хочешь запихнуть в структуры 1С для хранения БСО?
   progaoff
 
28 - 21.04.21 - 17:48
Кароче. Залил все коды в таблицу значений, далее из экселя получаю массив в котором 4 массива
Обхожу каждый но нужно обойти столько раз сколько кодов
Для ИндМ = 0 По Данные[0].ВГраница() Цикл
        МассивМ = Данные[0];
        АртикулНом = Строка(МассивМ[ИндМ]);
        Таблица.Область(ИндМ+2,2).Текст = СтрЗаменить(АртикулНом,Символ(160),"");
    КонецЦикла;

    
    Для ИндМ = 0 По Данные[1].ВГраница() Цикл
        МассивМ = Данные[1];
        АртикулНом = Строка(МассивМ[ИндМ]);
        Таблица.Область(ИндМ+2,3).Текст = СтрЗаменить(АртикулНом,Символ(160),"");
    КонецЦикла;
    
    Для ИндН = 0 По МассивМ.ВГраница() Цикл
        МассивМ = Данные[2];
        АртикулНом = Строка(МассивМ[ИндН]);
        Таблица.Область(ИндН+2,4).Текст = СтрЗаменить(АртикулНом,Символ(160),"");
    КонецЦикла;

    Для ИндН = 0 По МассивМ.ВГраница() Цикл
        МассивМ = Данные[3];
        Таблица.Область(ИндН+2,5).Текст = МассивМ[ИндН];
    КонецЦикла;
   1Сергей
 
29 - 21.04.21 - 17:59
нужен регистр артикул, код
   progaoff
 
30 - 21.04.21 - 17:59
(29) я для этого и страдаю, что бы в этот регистр загрузить))))
 
 Рекламное место пустует
   progaoff
 
31 - 21.04.21 - 18:00
Блин, хотя бы в один массив это все загнать все 4.. чет уже совсем крыша едет
   1Сергей
 
32 - 21.04.21 - 18:02
(30) и для этого хочешь обойтись только запросом?
   progaoff
 
33 - 21.04.21 - 18:03
(32) Хотел, но судя по всему не получится. Нужен массив одномерный хотя бы...Кто нибудь соединял?
   azernot
 
34 - 21.04.21 - 18:48
А почему не сделать так:
Для ИндМ = 0 По ВыборкаИзЗапроса.КоличествоНаОстатке Цикл

?
А в массиве пусть лежат все коды, выберешь только то количество, которое на осатке
   PR
 
35 - 21.04.21 - 19:02
(20) Я ждал этого поста
Из него сразу понятно, что ТС вместо того, чтобы организовать нормальный учет, стыдливо прикрывается всякими (9), типа это не я рукожоп, это такой запрос от бизнеса, все нормально
   progaoff
 
36 - 21.04.21 - 20:59
Разгреб все таки)) всем спасибо за советы.


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