Имеется задача, в табличной части для всех товаров с одинаковой "ценой" и "Начинающиеся на 5 одинаковых символов" (аналоги) проставить в колонку "количество" одинаковое значение, если оно заполнено у одного из этих аналогов.
Пример на скриншоте.
Каким образом это реализовать? МАССИВОМ? ПОМОГИТЕ НАПИСАТЬ КОД ЗА ВОЗНАГРАЖДЕНИЕ!
(1) а если количество проставлено не у одного? а у нескольких? если такого быть не может - то таблица значений и свернуть по цене, а затем смотрим с такой ценой и проставляем количество.
(3) Отлично: у тебя сухой корм по 29.99 (условно) и кетчуп по 29.99. Корма нужно 5 пачек, а кетчупа 10. Если ты делаешь отбор первого по цене, то ты всегда будешь получать первое. При этом если первый в отборе будет корм, то он первый будет для всех строк ТЧ, где указана стоимость 29.99. Для корректного разделения по признаку нужен корректный верифицируемый признак. Если у аналога есть ссылка на основную номенклатуру (как вариант) - система будет крыжить по основной номенклатуре с уникальным уид. Условие по количеству, наименованию и прочему такому допустимо только в формате заглушки не период доработки.
(17) Тогда почему на приведенном скриншоте человеческий кетчуп находится в одной таблице с кормом. Это я еще не спрашиваю, почему собачий и кошачий кормы считаются аналогами... (Судя по скриншоту)
(19) А это разные вещи? Тебе нужен критерий для корректного отбора. Схлопывать отбор через строку/число можно только будучи уверенным в заранее гарантированной уникальности данных. Чтобы совсем понятно: Маш у тебя может быть хоть три по очереди, хоть две сразу и имя не будет уникальным. А вот ИНН у всех будет разным. Вот такое условие является критерием. Упрощать код (не усложнять) означает ровно одно: не городить огород из костылей, которые могут отвалиться через пару месяцев, а научить саму базу понимать, что ты от неё хочешь исходя из введённых в неё данных, которые имеют ссылочную природу и сиречь есть уникальны в разрезе конкретного объекта конфигурации. Ну есть у тебя проблема — так потрать на день больше и реши её раз и на всегда. Если это боевая задача — так нельзя делать. Если учебная — этому нельзя учиться. Тем более в рамках номенклатуры, которой может быть как 500 шт, так и 500000 шт.
(1) вы всех запутали попыткой выдать только часть информации.
Судя по всему аналоги это не все товары с одинаковой ценой.
Просто имеется отбор товаров с одинаковой ценой и аналоги в нем представлены несколькими группами.
Т.е. на приведенном скрине это не аналоги, а несколько групп аналогов. Это видно по примеру ожидания проставления количества.
Теперь самый главный вопрос, эти группы аналогов как определяются? Или нужно создать ИИ, который будет это определять?
Для каждого стр Из Товары Цикл
Если стр.Количество<>0 тогда
ЭлементыФормы.Товары.ОтборСтрок.Цена.ВидСравнения = ВидСравнения.Равно;
ЭлементыФормы.Товары.ОтборСтрок.Цена.Использование = Истина;
ЭлементыФормы.Товары.ОтборСтрок.Цена.Значение = стр.Цена;
Количество=стр.Количество;
Для каждого стр Из Товары Цикл
Если НЕ ЭлементыФормы.Товары.ПроверитьСтроку(стр) Тогда
Продолжить;
КонецЕсли;
стр.Количество=Количество;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Еще раз - тссс! Пусть автор столкнется с этим позже, в реальной жизни, а не на форуме.
Собственно, мое утверждение про "элементарный код" в (21) было основано на идеальной картинке в (1), каких в жизни не бывает. А если и бывает, то нечасто...
(30) Начинать надо с "правильно". Потом со временем придет умение "универсально". Может быть.
Но проблема же в другом: ты сначала создал тему, а потом (когда тебе уже навтыкали) сам начал пытаться что-то пробовать делать.
Попробуй написать алгоритм буквами.
1. Берем такую строку.
2. Для этой строки в оставшейся таблице нам надо найти строки, которые...
И так далее. Половина решения тебе сразу в голову придет.
Это реальный совет.
1. Пойти по таблице и собрать в соответствии с ключом "Цена" количество заказов. Типа "С[Строка.Цена] = С[Строка.Цена] + Стр.Количество". Ну тут еще проверка нужна, ибо если в соответствии ничего нет, то выйдет ошибочка.
2. Пойти по таблице второй раз, заполняя количество из соответствия. Типа "Стр.КоличествоОжидаемое = С[Стр.Цена]".
3. Пойти пить чай.