Имеется задача, в табличной части для всех товаров с одинаковой "ценой" и "Начинающиеся на 5 одинаковых символов" (аналоги) проставить в колонку "количество" одинаковое значение, если оно заполнено у одного из этих аналогов.
Пример на скриншоте.
Каким образом это реализовать? МАССИВОМ? ПОМОГИТЕ НАПИСАТЬ КОД ЗА ВОЗНАГРАЖДЕНИЕ!
Пример на скриншоте.
Каким образом это реализовать? МАССИВОМ? ПОМОГИТЕ НАПИСАТЬ КОД ЗА ВОЗНАГРАЖДЕНИЕ!
Прикрепленные файлы:
По теме из базы знаний
- Редактирование табличной части объекта с помощью СКД
- Проверка на наличие дублирующихся строк в табличных частях
- Несколько табличных частей в 1С:7.7 - это просто
- Создание подключаемой обработки табличной части с диалогом запроса параметров заполнения (управляемые формы)
- Неограниченное количество строк в табличной части документа
Найденные решения
(1) Что делать, если имеется более одной строки с заполненным количеством в рамках одного аналога и цены? Из какой строки брать количество? Если без разницы, то так:
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Аналог", Новый ОписаниеТипов("Строка"));
ТЗ.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
ТЗ.Индексы.Добавить("Аналог,Цена");
Для Каждого Стр Из ТабличнаяЧасть Цикл
Если Стр.Количество > 0 Тогда
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Аналог = Лев(Стр.НаименованиеТовара, 5);
НоваяСтрока.Цена = Стр.Цена;
НоваяСтрока.Количество = Стр.Количество;
КонецЕсли;
КонецЦикла;
Для Каждого Стр Из ТабличнаяЧасть Цикл
Если Стр.Количество = 0 Тогда
МассивСтрок = ТЗ.НайтиСтроки(Новый Структура("Аналог,Цена", Лев(Стр.НаименованиеТовара, 5), Стр.Цена));
Если МассивСтрок.Количество() > 0 Тогда
Стр.Количество = МассивСтрок[0].Количество;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Что делать, если имеется более одной строки с заполненным количеством в рамках одного аналога и цены? Из какой строки брать количество? Если без разницы, то так:
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Аналог", Новый ОписаниеТипов("Строка"));
ТЗ.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
ТЗ.Индексы.Добавить("Аналог,Цена");
Для Каждого Стр Из ТабличнаяЧасть Цикл
Если Стр.Количество > 0 Тогда
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Аналог = Лев(Стр.НаименованиеТовара, 5);
НоваяСтрока.Цена = Стр.Цена;
НоваяСтрока.Количество = Стр.Количество;
КонецЕсли;
КонецЦикла;
Для Каждого Стр Из ТабличнаяЧасть Цикл
Если Стр.Количество = 0 Тогда
МассивСтрок = ТЗ.НайтиСтроки(Новый Структура("Аналог,Цена", Лев(Стр.НаименованиеТовара, 5), Стр.Цена));
Если МассивСтрок.Количество() > 0 Тогда
Стр.Количество = МассивСтрок[0].Количество;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот