С помощью цикла перебираем значения табличной части:
В табличной части могут встретится 2 одинаковых серии. Вопрос, как в свойство записать общее количество 2х или нескольких строк?
Для Каждого СтрокаНоменклатуры из ПолнаяТаблица Цикл
Значение = Число(СтрокаНоменклатуры.Количество);
Объект = СтрокаНоменклатуры.Серия;
ЗначенияСвойствОбъектов = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
ЗначенияСвойствОбъектов.Объект = Объект;
ЗначенияСвойствОбъектов.Свойство = Свойство;
ЗначенияСвойствОбъектов.Прочитать();
Если ЗначенияСвойствОбъектов.Выбран() Тогда
Если СокрЛП(ЗначенияСвойствОбъектов.Значение) <> СокрЛП(Значение) Тогда
ЗначенияСвойствОбъектов.Значение = Значение;
ЗначенияСвойствОбъектов.Записать()
КонецЕсли;
Иначе
ЗначенияСвойствОбъектов.Объект = Объект;
ЗначенияСвойствОбъектов.Свойство = Свойство;
ЗначенияСвойствОбъектов.Значение = Значение;
ЗначенияСвойствОбъектов.Записать()
КонецЕсли;
КонецЦикла;
ПоказатьВ табличной части могут встретится 2 одинаковых серии. Вопрос, как в свойство записать общее количество 2х или нескольких строк?
По теме из базы знаний
- Всякие полезности
- Альтернативные технологии нагрузочного тестирования серверной части кода прикладных решений на платформе 1С
- Универсальное сворачивание табличной части документа
- Конструктор печатных форм (PrintWizard). Часть 1: Печатные формы. А что, собственно, не так?
- Результаты ревью кода 1500+ решений каталога Инфостарт: наиболее частые ошибки разработчиков в коде
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Пример:
№|____Товар____|Серия|Колво
1|Номенклатура1|0001 |1200
2|Номенклатура2|0001 |100
3|Номенклатура3|0002 |400
Вот что должно быть в свойстве 0001:
СвойствоКоличество|1300
Вот что должно быть в свойстве 0002:
СвойствоКоличество|400
№|____Товар____|Серия|Колво
1|Номенклатура1|0001 |1200
2|Номенклатура2|0001 |100
3|Номенклатура3|0002 |400
Вот что должно быть в свойстве 0001:
СвойствоКоличество|1300
Вот что должно быть в свойстве 0002:
СвойствоКоличество|400
Там интереснее - объект, свойство, значение. Нужно ТЧ записать в этих трех измерениях. Т.е. копируешь табличную часть с отбором. Далее сворачиваешь по объекту и свойству с уммой по значению. И цикл записи пойдет по полученной таблице.
Предположим в таблице ПолнаяТаблица есть поля Серия, Количество, Свойство
ВремТаблица = ПолнаяТаблица.Скопировать("Серия,Свойство,Количество);
ВремТаблица.Свернуть("Серия,Свойство","Количество");
Для Каждого СтрокаНоменклатуры из ВремТаблица Цикл
Значение = Число(СтрокаНоменклатуры.Количество);
Объект = СтрокаНоменклатуры.Серия;
ЗначенияСвойствОбъектов = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
ЗначенияСвойствОбъектов.Объект = Объект;
ЗначенияСвойствОбъектов.Свойство = Свойство;
ЗначенияСвойствОбъектов.Прочитать();
Если ЗначенияСвойствОбъектов.Выбран() Тогда
Если СокрЛП(ЗначенияСвойствОбъектов.Значение) <> СокрЛП(Значение) Тогда
ЗначенияСвойствОбъектов.Значение = Значение;
ЗначенияСвойствОбъектов.Записать()
КонецЕсли;
Иначе
ЗначенияСвойствОбъектов.Объект = Объект;
ЗначенияСвойствОбъектов.Свойство = Свойство;
ЗначенияСвойствОбъектов.Значение = Значение;
ЗначенияСвойствОбъектов.Записать()
КонецЕсли;
КонецЦикла;
Показать
1. Если есть серии, то могут быть и характеристики (номенклатура с разными характеристиками, но одной серией). а еще могут быть разные единицы, качество...
2. ...если сворачивать, то сворачивать надо по всем колонкам ссылочного типа с суммированием по колонкам числового, т.е. перед сверткой пройтись по метаданным колонок таблицы для формирования строк свертки и суммирования.
3. А зачем нам вообще свойства - нужное значение можно хранить в готовом реквизите (например в комментарии)
4. А если сделать два цикла подряд? - в первом пройтись по всем сериям и их значения обнулить, а во втором суммировать с ранее введенным значением (тогда при первом включении получим 0+Ч1, а во второом Ч1+Ч2) - будет быстрее, особенно если пользоваться не "СоздатьМенеджерЗаписи", а "СоздатьНаборЗаписей" с отбором по списку.
2. ...если сворачивать, то сворачивать надо по всем колонкам ссылочного типа с суммированием по колонкам числового, т.е. перед сверткой пройтись по метаданным колонок таблицы для формирования строк свертки и суммирования.
3. А зачем нам вообще свойства - нужное значение можно хранить в готовом реквизите (например в комментарии)
4. А если сделать два цикла подряд? - в первом пройтись по всем сериям и их значения обнулить, а во втором суммировать с ранее введенным значением (тогда при первом включении получим 0+Ч1, а во второом Ч1+Ч2) - будет быстрее, особенно если пользоваться не "СоздатьМенеджерЗаписи", а "СоздатьНаборЗаписей" с отбором по списку.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот