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

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

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

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

(21) это не мне нужно.
23 progaoff
 
21.04.21
17:07
Имею 12000 тыщ кодов каждый из которых должен принадлежать артикулу (22)
24 progaoff
 
21.04.21
17:08
(23) Остатки в экселе но сумарно по арту а нужно, сколько на остатке столько и строк с количеством 1, коды тоже в экселе.
25 RomanYS
 
21.04.21
17:16
(22) так тогда какие цифры нужны 9999,9999 и сколько это строк? с каким шагом?
Так это постановки задачи зависит. "Если мы их там ждём" - значит мы знаем как их разбить.
26 RomanYS
 
21.04.21
17:17
(24) Ничего не понятно. Если есть таблица с кодами, то генерить ничего не надо
27 Fedor-1971
 
21.04.21
17:27
(23) Погоди, ты получил в Экселе табличку с колонками   Артикул + Кол-во штук + Номер С + Номер ПО
читаешь оную и хочешь запихнуть в структуры 1С для хранения БСО?
28 progaoff
 
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).Текст = МассивМ[ИндН];
    КонецЦикла;
29 1Сергей
 
21.04.21
17:59
нужен регистр артикул, код
30 progaoff
 
21.04.21
17:59
(29) я для этого и страдаю, что бы в этот регистр загрузить))))
31 progaoff
 
21.04.21
18:00
Блин, хотя бы в один массив это все загнать все 4.. чет уже совсем крыша едет
32 1Сергей
 
21.04.21
18:02
(30) и для этого хочешь обойтись только запросом?
33 progaoff
 
21.04.21
18:03
(32) Хотел, но судя по всему не получится. Нужен массив одномерный хотя бы...Кто нибудь соединял?
34 azernot
 
21.04.21
18:48
А почему не сделать так:

Для ИндМ = 0 По ВыборкаИзЗапроса.КоличествоНаОстатке Цикл

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