Работа со строками в табличной части

1. sportsmenru 15.08.22 18:24 Сейчас в теме
Имеется задача, в табличной части для всех товаров с одинаковой "ценой" и "Начинающиеся на 5 одинаковых символов" (аналоги) проставить в колонку "количество" одинаковое значение, если оно заполнено у одного из этих аналогов.
Пример на скриншоте.
Каким образом это реализовать? МАССИВОМ? ПОМОГИТЕ НАПИСАТЬ КОД ЗА ВОЗНАГРАЖДЕНИЕ!
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user930087 15.08.22 18:29 Сейчас в теме
(1) а если количество проставлено не у одного? а у нескольких? если такого быть не может - то таблица значений и свернуть по цене, а затем смотрим с такой ценой и проставляем количество.
3. sportsmenru 15.08.22 18:33 Сейчас в теме
(2)
у нескольких может быть проставлено, но тогда допустимо выбирать первый из найденных
15. DesertPunk 15.08.22 18:53 Сейчас в теме
(3) Отлично: у тебя сухой корм по 29.99 (условно) и кетчуп по 29.99. Корма нужно 5 пачек, а кетчупа 10. Если ты делаешь отбор первого по цене, то ты всегда будешь получать первое. При этом если первый в отборе будет корм, то он первый будет для всех строк ТЧ, где указана стоимость 29.99. Для корректного разделения по признаку нужен корректный верифицируемый признак. Если у аналога есть ссылка на основную номенклатуру (как вариант) - система будет крыжить по основной номенклатуре с уникальным уид. Условие по количеству, наименованию и прочему такому допустимо только в формате заглушки не период доработки.
FatPanzer; +1 Ответить
17. sportsmenru 15.08.22 18:57 Сейчас в теме
(15) отбор будет делаться в узкоассортиментном прайс-листе, поэтому допустимо не усложнять код, и просто отобрать по цене.
18. FatPanzer 15.08.22 19:02 Сейчас в теме
(17) Тогда почему на приведенном скриншоте человеческий кетчуп находится в одной таблице с кормом. Это я еще не спрашиваю, почему собачий и кошачий кормы считаются аналогами... (Судя по скриншоту)
19. sportsmenru 15.08.22 19:03 Сейчас в теме
(18)
ТЕМА НЕ ПРО ПОИСК АНАЛОГОВ, вопрос в том КАКИМ ОБРАЗОМ ПРОСТАВИТЬ ЗНАЧЕНИЕ В КОЛОНКЕ КОЛИЧЕСТВО, не более того!!!
20. FatPanzer 15.08.22 19:12 Сейчас в теме
(19)
ИмяКолонки.Количество = Значение;

Или все-таки надо сначала надо найти необходимые колонки, которые являются аналогами???
Ты поаккуратнее тут.

И пока свой код не приведешь - можешь брызгаться слюной сколько угодно. Всем пофиг.
29. DesertPunk 15.08.22 20:09 Сейчас в теме
(19) А это разные вещи? Тебе нужен критерий для корректного отбора. Схлопывать отбор через строку/число можно только будучи уверенным в заранее гарантированной уникальности данных. Чтобы совсем понятно: Маш у тебя может быть хоть три по очереди, хоть две сразу и имя не будет уникальным. А вот ИНН у всех будет разным. Вот такое условие является критерием. Упрощать код (не усложнять) означает ровно одно: не городить огород из костылей, которые могут отвалиться через пару месяцев, а научить саму базу понимать, что ты от неё хочешь исходя из введённых в неё данных, которые имеют ссылочную природу и сиречь есть уникальны в разрезе конкретного объекта конфигурации. Ну есть у тебя проблема — так потрать на день больше и реши её раз и на всегда. Если это боевая задача — так нельзя делать. Если учебная — этому нельзя учиться. Тем более в рамках номенклатуры, которой может быть как 500 шт, так и 500000 шт.
user1577718; FatPanzer; +2 Ответить
32. FatPanzer 15.08.22 20:14 Сейчас в теме
(29) Ты говоришь сложным языком. Но говоришь все верно!
Лучше день потерять, зато потом всю жизнь за пять минут долетать )))
21. ishelper 15.08.22 19:14 Сейчас в теме
(1)
Каким образом это реализовать?
Циклом.

Код (внутри цикла) - элементарный, но писать его после прошлого опыта принципиально не стану. Тем более - даром. :-)

Ограничусь подсказкой: надо использовать две переменные: ТекущаяЦена и ТекущееКоличество.
22. FatPanzer 15.08.22 19:18 Сейчас в теме
(21)
ТекущаяЦена и ТекущееКоличество.
Не нашел такого в Синтакс-Помощнике. Что это такое?
24. ishelper 15.08.22 19:31 Сейчас в теме
(22)
Что это такое?
Тссс! Это - не для вас! :-)
23. spacecraft 15.08.22 19:22 Сейчас в теме
(1) вы всех запутали попыткой выдать только часть информации.
Судя по всему аналоги это не все товары с одинаковой ценой.
Просто имеется отбор товаров с одинаковой ценой и аналоги в нем представлены несколькими группами.
Т.е. на приведенном скрине это не аналоги, а несколько групп аналогов. Это видно по примеру ожидания проставления количества.
Теперь самый главный вопрос, эти группы аналогов как определяются? Или нужно создать ИИ, который будет это определять?
FatPanzer; +1 Ответить
4. FatPanzer 15.08.22 18:34 Сейчас в теме
Ну и как определяете аналоги? Показывайте свой код.
5. user930087 15.08.22 18:39 Сейчас в теме
(4) насколько понял - аналоги это то, что с одинаковой ценой
6. FatPanzer 15.08.22 18:39 Сейчас в теме
(5) Да ладно??? У меня в магазине булка хлеба стоит ровно столько же сколько и бутылка пива. Это аналоги???

Хотя, если в слове ХЛЕБ сделать четыре ошибки...
user930087; +1 Ответить
9. user930087 15.08.22 18:44 Сейчас в теме
(7) выбрать строки - есть количество - в тз загоняем цену и количество, затем проходим строки сверяем с ценой и проставляем количество
11. пользователь 15.08.22 18:48
Сообщение было скрыто модератором.
...
12. пользователь 15.08.22 18:49
Сообщение было скрыто модератором.
...
13. пользователь 15.08.22 18:51
Сообщение было скрыто модератором.
...
10. user930087 15.08.22 18:44 Сейчас в теме
(6) у меня в кб хлеба нет(((
7. sportsmenru 15.08.22 18:40 Сейчас в теме
(5) да, аналоги - то что с одинаковой ценой.
8. FatPanzer 15.08.22 18:42 Сейчас в теме
(7) А код то твой где? Вместо тебя тут никто писать не будет.
14. sportsmenru 15.08.22 18:52 Сейчас в теме
К людям следует относиться с уважением, "Вас" попрошу покинуть тему.
16. пользователь 15.08.22 18:55
Сообщение было скрыто модератором.
...
25. sportsmenru 15.08.22 19:53 Сейчас в теме
ничего умнее не придумал, НО РАБОТАЕТ!!!

	Для каждого стр Из Товары Цикл
Если стр.Количество<>0 тогда
ЭлементыФормы.Товары.ОтборСтрок.Цена.ВидСравнения = ВидСравнения.Равно;
ЭлементыФормы.Товары.ОтборСтрок.Цена.Использование = Истина; 
ЭлементыФормы.Товары.ОтборСтрок.Цена.Значение = стр.Цена; 
Количество=стр.Количество;
Для каждого стр Из Товары Цикл
Если НЕ ЭлементыФормы.Товары.ПроверитьСтроку(стр) Тогда
			Продолжить;
		КонецЕсли;

		стр.Количество=Количество; 
КонецЦикла;
	КонецЕсли;
	КонецЦикла; 
Показать
26. FatPanzer 15.08.22 20:00 Сейчас в теме
(25) А зачем здесь отбор, если он не работает?
Ты циклы строишь по реквизиту формы, а отбор устанавливаешь на элемент формы.

Ну и вишенка - у тебя переменная итератора в обоих циклах одинаковая - стр.
27. ishelper 15.08.22 20:06 Сейчас в теме
(26)
Ну и вишенка - у тебя переменная итератора в обоих циклах одинаковая
Не придирайтесь к художнику - он рисует как умеет.

Ключевое слово - "РАБОТАЕТ!!!"
28. FatPanzer 15.08.22 20:08 Сейчас в теме
(27)
Ключевое слово - "РАБОТАЕТ!!!"
А пусть попробует строки пересортировать!!! А то у него на картинке идеально выстроенная таблица по суммам...
31. ishelper 15.08.22 20:13 Сейчас в теме
(28)
А пусть попробует строки пересортировать!!!
Еще раз - тссс! Пусть автор столкнется с этим позже, в реальной жизни, а не на форуме.

Собственно, мое утверждение про "элементарный код" в (21) было основано на идеальной картинке в (1), каких в жизни не бывает. А если и бывает, то нечасто...
DesertPunk; +1 Ответить
36. DesertPunk 16.08.22 08:57 Сейчас в теме
(31)В реальной жизни за такое ТЗ могут попросить поискать новую работу. Особенно когда придёт новая девочка и нажмёт пальчиком эту заветную кнопочку
itoptimum; +1 Ответить
30. sportsmenru 15.08.22 20:11 Сейчас в теме
Если бы я знал как сделать правильно и универсально, не создавал бы тему.
33. FatPanzer 15.08.22 20:20 Сейчас в теме
(30) Начинать надо с "правильно". Потом со временем придет умение "универсально". Может быть.
Но проблема же в другом: ты сначала создал тему, а потом (когда тебе уже навтыкали) сам начал пытаться что-то пробовать делать.

Попробуй написать алгоритм буквами.
1. Берем такую строку.
2. Для этой строки в оставшейся таблице нам надо найти строки, которые...

И так далее. Половина решения тебе сразу в голову придет.
Это реальный совет.
34. starik-2005 3061 15.08.22 21:32 Сейчас в теме
(30)
как сделать правильно и универсально
1. Пойти по таблице и собрать в соответствии с ключом "Цена" количество заказов. Типа "С[Строка.Цена] = С[Строка.Цена] + Стр.Количество". Ну тут еще проверка нужна, ибо если в соответствии ничего нет, то выйдет ошибочка.
2. Пойти по таблице второй раз, заполняя количество из соответствия. Типа "Стр.КоличествоОжидаемое = С[Стр.Цена]".
3. Пойти пить чай.
35. FatPanzer 15.08.22 22:14 Сейчас в теме
(34) Как оказалось - Цена это не единственный ключ. Поэтому тут только через дополнительную ТЗ.
37. starik-2005 3061 16.08.22 12:49 Сейчас в теме
(35) Выяснилось кем? У кого? У автора темы? Автор вообще походу не понимает, что творит.

ЗЫ: никто не мешает в соответствии держать еще одно соответствие. Ну и вообще любой тип в значении.
38. sportsmenru 05.11.22 11:26 Сейчас в теме
39. sportsmenru 05.11.22 12:58 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот