|
помогите разобраться, как проверить табличную часть документа, полностью выбрали или нет. | ☑ | ||
---|---|---|---|---|
0
DenisK2020
21.12.22
✎
18:53
|
Сделал внешнюю обработку, заполнение табличной части - перемещений товаров
Запрос = Новый Запрос; Запрос.УстановитьПараметр("НачПериода", НачалоДня(НачПериода)); Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода)); Запрос.УстановитьПараметр("ИЦ_Статус", Перечисления.ИЦ_СтатусыДокументаПеремещениеТоваров.Отгружено); Запрос.УстановитьПараметр("СкладПолучатель", ВыбСклад); Запрос.Текст = "ВЫБРАТЬ | ПеремещениеТоваровТовары.Ссылка КАК Ссылка, | ПеремещениеТоваровТовары.Ссылка.ИЦ_Статус КАК ИЦ_Статус, | ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура, | ПеремещениеТоваровТовары.Количество КАК Количество, | ВЫРАЗИТЬ(ПеремещениеТоваровТовары.Ссылка.Комментарий КАК СТРОКА(120)) КАК Комментарий |ИЗ | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары |ГДЕ | ПеремещениеТоваровТовары.Ссылка.Дата >= &НачПериода | И ПеремещениеТоваровТовары.Ссылка.ИЦ_Статус = &ИЦ_Статус | И ПеремещениеТоваровТовары.Ссылка.Дата <= &КонПериода | И ПеремещениеТоваровТовары.Ссылка.Проведен = ИСТИНА | И ПеремещениеТоваровТовары.Ссылка.СкладПолучатель = &СкладПолучатель"; Результат = Запрос.Выполнить().Выгрузить(); Для каждого ВыборкаСтрокЗаказы Из Результат Цикл Нов = ЭтотОбъект.СписокДокументовПеремещений.Добавить(); Нов.Метка = ложь; Нов.ДокПеремещение = ВыборкаСтрокЗаказы.Ссылка; Нов.Статус = ВыборкаСтрокЗаказы.Иц_Статус; Нов.Номенклатура=ВыборкаСтрокЗаказы.Номенклатура; Нов.Количество=ВыборкаСтрокЗаказы.Количество; Нов.Комментарий=СокрЛП(ВыборкаСтрокЗаказы.Ссылка.Комментарий); Нов.Артикул=СокрЛП(ВыборкаСтрокЗаказы.Номенклатура.Артикул); КонецЦикла; СписокДокументовПеремещений.Сортировать("ДокПеремещение Возр"); КонецЕсли; Как проверить что кладовщик выбрал все товары или нет. На основании это в статус документ буду менять готов к отгрузке процедура еее() Для каждого Строка из СписокДокументовПеремещений Цикл ст=""; //найдем все не отмеченные товары Если Строка.Метка=Истина Тогда Продолжить; КонецЕсли; // Массив=СписокДокументовПеремещений.НайтиСтроки(.НайтиСтроки(Строка.ДокПеремещение); Ст=Строка(Строка.НомерСтроки)+" "+Строка(СокрЛП(Строка.ДокПеремещение)); Сообщить(ст); Для каждого Ст2 ИЗ СписокДокументовПеремещений.НайтиСтроки(Новый Структура(Документы.ПеремещениеТоваров, Строка.ДокПеремещение)) Цикл КонецЦикла; КонецЦикла; конецПроцедуры; |
|||
1
DenisK2020
21.12.22
✎
19:26
|
В табличной части документа - перемещений может быть больше 1 строки с товаром, кладовщик может отметить и найти только один товар.
Как проверить что по данному документы выбраны, метка=1, все товары таб. части |
|||
2
hockeyist
21.12.22
✎
20:47
|
У меня есть таблица (товар,количество,отметка) Как проверить, что в таблице отмечены все тотовары отметка=1
======================== Чтобы проверить, что в таблице отмечены все товары с отметкой 1, вы можете воспользоваться следующим алгоритмом: Создайте переменную all_marked и инициализируйте ее значением True. Эта переменная будет хранить результат проверки - все ли товары отмечены. Итерируйтесь по строкам таблицы (по товарам). Для каждого товара проверяйте, что отметка равна 1. Если отметка не равна 1, то присвойте переменной all_marked значение False и выйдите из цикла (так как дальнейшая проверка уже не имеет смысла). После завершения цикла проверьте значение переменной all_marked. Если она равна True, то все товары отмечены. Иначе, хотя бы один товар не отмечен. Пример кода на Python: all_marked = True for product, quantity, mark in table: if mark != 1: all_marked = False break if all_marked: print("Все товары отмечены") else: print("Не вс |
|||
3
hockeyist
21.12.22
✎
20:48
|
В таблице может быть несколько строк с одинаковым товаром. Если отмечена хоть одна, значит этот товар отмечен
============================ Чтобы проверить, что в таблице отмечены все товары с отметкой 1, учитывая тот факт, что может быть несколько строк с одинаковым товаром, вы можете воспользоваться следующим алгоритмом: Создайте пустой список marked_products. Этот список будет хранить названия отмеченных товаров. Итерируйтесь по строкам таблицы (по товарам). Для каждого товара проверяйте, что отметка равна 1. Если отметка равна 1, то добавьте название товара в список marked_products. После завершения цикла сравните длину списка marked_products с общим количеством товаров. Если эти значения совпадают, то все товары отмечены. Иначе, хотя бы один товар не отмечен. Пример кода на Python: marked_products = [] for product, quantity, mark in table: if mark == 1: marked_products.append(product) if len(marked_products) == len(table): print("Все товары отмечены") else: print("Не все тов |
|||
4
hockeyist
21.12.22
✎
20:49
|
Но размер таблицы это не размер списка товаров. Если встречаются одинаковые товары, то размер таблицы будет больше
=============================== Вы правильно заметили, что размер таблицы (количество строк) может быть больше, чем количество уникальных товаров, если в таблице есть несколько строк с одинаковым товаром. В этом случае, чтобы проверить, что все товары отмечены, нужно сначала получить список уникальных товаров, а затем сравнивать его со списком отмеченных товаров. Вы можете использовать следующий алгоритм: Создайте пустой список marked_products. Этот список будет хранить названия отмеченных товаров. Создайте пустой список unique_products. Этот список будет хранить названия уникальных товаров. Итерируйтесь по строкам таблицы (по товарам). Для каждого товара проверяйте, что отметка равна 1. Если отметка равна 1, то добавьте название товара в список `marked |
|||
5
hockeyist
21.12.22
✎
20:50
|
Дальше не хочет. Размер вывода ограничен. Но я думаю и так понятно
|
|||
6
hockeyist
21.12.22
✎
21:03
|
Со второй попытки выдало больше, но все равно обрезано:
Вы правы, что размер таблицы (количество строк) может быть больше, чем количество уникальных товаров. Чтобы проверить, что в таблице отмечены все товары с отметкой 1, учитывая этот факт, вы можете воспользоваться следующим алгоритмом: Создайте пустой список marked_products. Этот список будет хранить названия отмеченных товаров. Создайте пустой список unique_products. Этот список будет хранить уникальные названия товаров. Итерируйтесь по строкам таблицы (по товарам). Для каждого товара проверяйте, что отметка равна 1. Если отметка равна 1, то добавьте название товара в список marked_products. Также добавьте название товара в список unique_products, если оно там еще не встречалось. После завершения цикла сравните длину списка marked_products с длиной с |
|||
7
mikecool
21.12.22
✎
21:20
|
(6) к чему этот поток мыслей, да еще на другом ЯП?
|
|||
8
hockeyist
21.12.22
✎
21:24
|
(7) К тому, что ответ на такой вопрос проще и быстрее получить в chatGPT
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |