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

1. sportsmenru 05.11.22 12:19 Сейчас в теме
Имеется задача, в табличной части для всех товаров с одинаковой "ценой" и "Начинающиеся на 5 одинаковых символов" (аналоги) проставить в колонку "количество" одинаковое значение, если оно заполнено у одного из этих аналогов.
Пример на скриншоте.
Каким образом это реализовать? МАССИВОМ? ПОМОГИТЕ НАПИСАТЬ КОД ЗА ВОЗНАГРАЖДЕНИЕ!
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
2. SlavaKron 05.11.22 12:30 Сейчас в теме +0.3 $m
(1) Что делать, если имеется более одной строки с заполненным количеством в рамках одного аналога и цены? Из какой строки брать количество? Если без разницы, то так:
ТЗ = Новый ТаблицаЗначений;

ТЗ.Колонки.Добавить("Аналог", Новый ОписаниеТипов("Строка"));
ТЗ.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));

ТЗ.Индексы.Добавить("Аналог,Цена");

Для Каждого Стр Из ТабличнаяЧасть Цикл
	Если Стр.Количество > 0 Тогда
		НоваяСтрока = ТЗ.Добавить();
		НоваяСтрока.Аналог = Лев(Стр.НаименованиеТовара, 5);
		НоваяСтрока.Цена = Стр.Цена;
		НоваяСтрока.Количество = Стр.Количество;
	КонецЕсли;
КонецЦикла;

Для Каждого Стр Из ТабличнаяЧасть Цикл
	Если Стр.Количество = 0 Тогда
		МассивСтрок = ТЗ.НайтиСтроки(Новый Структура("Аналог,Цена", Лев(Стр.НаименованиеТовара, 5), Стр.Цена));
		Если МассивСтрок.Количество() > 0 Тогда
			Стр.Количество = МассивСтрок[0].Количество;
		КонецЕсли;
	КонецЕсли;
КонецЦикла;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 05.11.22 12:30 Сейчас в теме +0.3 $m
(1) Что делать, если имеется более одной строки с заполненным количеством в рамках одного аналога и цены? Из какой строки брать количество? Если без разницы, то так:
ТЗ = Новый ТаблицаЗначений;

ТЗ.Колонки.Добавить("Аналог", Новый ОписаниеТипов("Строка"));
ТЗ.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));

ТЗ.Индексы.Добавить("Аналог,Цена");

Для Каждого Стр Из ТабличнаяЧасть Цикл
	Если Стр.Количество > 0 Тогда
		НоваяСтрока = ТЗ.Добавить();
		НоваяСтрока.Аналог = Лев(Стр.НаименованиеТовара, 5);
		НоваяСтрока.Цена = Стр.Цена;
		НоваяСтрока.Количество = Стр.Количество;
	КонецЕсли;
КонецЦикла;

Для Каждого Стр Из ТабличнаяЧасть Цикл
	Если Стр.Количество = 0 Тогда
		МассивСтрок = ТЗ.НайтиСтроки(Новый Структура("Аналог,Цена", Лев(Стр.НаименованиеТовара, 5), Стр.Цена));
		Если МассивСтрок.Количество() > 0 Тогда
			Стр.Количество = МассивСтрок[0].Количество;
		КонецЕсли;
	КонецЕсли;
КонецЦикла;
Показать
3. sportsmenru 05.11.22 12:56 Сейчас в теме
Отличное, работающее решение. Спасибо
4. user1831019 05.11.22 13:49 Сейчас в теме
Оставьте свое сообщение

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