Имя: Пароль:
1C
 
Подбор товар через сканер при условии - что есть брак
0 lamme
 
11.06.22
20:09
Приветствую.

Сразу скажу. Идей - как решить - нет. От слова совсем. То одно не получается , то другое
итак
Вводные данные.

Ут10
Есть документ. Поступление товаров. Типовой. Используются характеристики.
В него добавлено 2 доп колонки -  КоличествоОтсканированного и КоличествоОтсканированногоБрака.

В одном документе могут быть несколько строк с одним товаром, но разными характеристиками.


Например
Товар1 / Характеристика1 / 10
Товар2 / Характеристика2 / 8
Товар3 / Характеристика3 / 6

Что необходимо придумать.
- идет сканирование товара - который пришел.
Кладовщик берет товар, сканирует (поиск по артикулу в ТЧ документа) - выставляет количество 7. указывает , брак это или нет (Булево)
и дальше - надо распределить эти 7 штук в документе.
Должно получится, например


Товар1 / Характеристика1 / 10 / 7
Товар2 / Характеристика2 / 8  / 0
Товар3 / Характеристика3 / 6  / 0

Потом берет сл товар. Сканирует. Вводит 5 шт. Распределяется например

Товар1 / Характеристика1 / 10 / 10
Товар2 / Характеристика2 / 8  / 3
Товар3 / Характеристика3 / 6  / 0

Сл скнирует. Вводит количество = 1. И укахывает - что это БРАК

Товар1 / Характеристика1 / 10 / 10 / 0
Товар2 / Характеристика2 / 8  / 3  / 1
Товар3 / Характеристика3 / 6  / 0  / 0


Следующее сканирование. Количество = 4

Товар1 / Характеристика1 / 10 / 10 / 0
Товар2 / Характеристика2 / 8  / 7  / 1
Товар3 / Характеристика3 / 6  / 0  / 0


ну и тд ...


те любое количество сканирований.
Но должно все заполниться по количеству товара в документе
Какие строки выбираются при сканировании - произвольные.

Главное чтобы

Количество (в документе) = КоличествоОтсканированного + КоличествоОтсканированногоБрака.

При этом отсканировано по факту может быть больше, чем в документе
Те если в документе
10
8
6
(итого 24)
то по факту прихода - товара может быть 25.
и последний - 25-ый ... 26-ый ... те избыток -так же должен упасть на любую строку. Но при этом весь избыток должен быть только на одной строке товара.


о ..


Я смог только распределить пропорционально - когда товар всегда сканируется нормальный, не бракованный.

Прошу помощи
1 Garykom
 
гуру
11.06.22
22:44
Другую ТЧ делай
2 Garykom
 
гуру
11.06.22
22:46
Исходную типовую ТЧ не трогаешь
Делаешь вторую или лучше сразу две новые ТЧ для приемки-сканирования
По исходной ищешь и добавляешь во вторую "Не брак" или в третью "Брак"

Ибо может быть так что недобор или перебор товара пришлют или пересорт
Так у тебя и исходные по бумагам есть и что насканировано

Далее сам думай
3 NorthWind
 
12.06.22
14:28
А стоит ли вообще для такой цели курочить документы? Может, разумнее написать АРМ-обработку, подключать из нее необходимые для работы документы, из нее же выполнять сканирование, распределять товары по документам, затем перепроводить?
4 NorthWind
 
12.06.22
14:32
и, кстати, если юзеру помимо ШК нужно будет указывать количество и определять брак или не брак - может, лучше ТСД, а не сканер? Хотя это по вкусу, если все равно это все будет рядом с компом, то можно и на компе...
5 NorthWind
 
12.06.22
18:08
а вот в чем проблема с распределением - я, честно сказать, не понял. ТЗ и отбор строк в помощь, дальше чисто механическая работа по проверке правил предпочтения и рассовыванию значений. Код, скорее всего, выйдет достаточно громоздкий, но ничего заумного тут нет...
6 Злопчинский
 
12.06.22
18:13
(5) Причем, такиз задач в 1С - где нет ничего заумного - большинство...
7 lamme
 
12.06.22
23:13
(3)
так и есть
есть доп обработка. которая берет данные из документа и при сканировании и ввода количества  - распределяет это количество в исходный документ.
8 lamme
 
12.06.22
23:13
(4)
тсд - нет
сканер - да

не мое условие
9 lamme
 
12.06.22
23:13
(5)
проблема именно в придумывании этого кода
чтобы учесть все
10 lamme
 
12.06.22
23:16
хотя я чем дальше об этом думаю - тем понимаю

что если есть код - который распределяет количество нормального товара по строкам документа (при сравнивании с колонкой -количество)
то разница между этим алгоритмом и алгоритмом распределения брака - никакой

только у НЕ брака идет сравнение между отксанированным и количеством
а у брака - между отсканированным(браком) и (количество+скан не брака)

ну те распределение то же
колонки сравнения разные
11 NorthWind
 
13.06.22
08:51
Отбираем в отдельный массив все строки с текущим отсканированным товаром. Далее присваиваем Остаток = Количество отсканированного товара, проходим в цикле по всем строкам массива. Проверяем у каждой строки количество свободных слотов (к-во в документе минус хорошее минус брак). Где оно больше нуля — распределяем из Остатка, и Остаток тут же уменьшаем на это количество. Переходим к следующей строке. Продолжаем до тех пор пока Остаток не станет 0 или пока строки не закончатся.
После отработки алгоритма сравниваем Остаток с 0. Если Остаток=0, заканчиваем работу. Иначе, если Остаток оказался больше 0, это означает, что отсканирован избыток товара. Проходим по строкам и выбираем такую, где присутствует избыток, такая строка у нас по идее должна быть одна. Либо, если ее нет, тогда выбираем первую по счету строку, где избыток равен нулю. Добавляем туда наш избыток. Таким образом у нас всегда избыток будет падать на одну и ту же строку.
Ну и да, мне тоже кажется что алгоритм один и тот же что для брака, что для хорошего, отличается только колонка, на которую кидать распределенное количество.
12 NorthWind
 
13.06.22
08:56
Можно подумать о сортировке массива по количеству слотов перед работой алгоритма, чтобы реализовать "жадную" опцию - по возможности сначала заполнять такие строки, где свободных слотов больше всего или меньше всего. Но необязательно.
13 Garykom
 
гуру
13.06.22
10:32
(10) не колонки а ТЧ

ибо что ты будешь делать когда в отсканированном товар/характеристика, которых нет в накладной?
т.е. по факту пришло другое, чего нет в документах
14 NorthWind
 
13.06.22
10:41
(13) этого нет в изначальной постановке. Скорее всего нужно будет ругнуться на экран пользователю, потому что у него не хватит данных - помимо Товара, нужна еще Характеристика, которую неоткуда будет взять.
Но, может, и тупо добавить строку.
15 lamme
 
13.06.22
20:54
решено ..
по факту -
п10 окзаался верен

разница только в итоговой колонке - куда идет расчет

всем спасибо
AdBlock убивает бесплатный контент. 1Сергей