Посчитать количество в табличной части

1. maxster545 29.09.14 12:56 Сейчас в теме
С помощью цикла перебираем значения табличной части:
Для Каждого СтрокаНоменклатуры из ПолнаяТаблица Цикл
		Значение = Число(СтрокаНоменклатуры.Количество);
		Объект = СтрокаНоменклатуры.Серия;
		ЗначенияСвойствОбъектов = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
		ЗначенияСвойствОбъектов.Объект = Объект;
		ЗначенияСвойствОбъектов.Свойство = Свойство;
		ЗначенияСвойствОбъектов.Прочитать();
		Если ЗначенияСвойствОбъектов.Выбран() Тогда
			
			Если СокрЛП(ЗначенияСвойствОбъектов.Значение) <> СокрЛП(Значение) Тогда
				ЗначенияСвойствОбъектов.Значение = Значение;
				ЗначенияСвойствОбъектов.Записать()
			КонецЕсли;
		Иначе
			ЗначенияСвойствОбъектов.Объект = Объект;
			ЗначенияСвойствОбъектов.Свойство = Свойство;
			ЗначенияСвойствОбъектов.Значение = Значение;
			ЗначенияСвойствОбъектов.Записать()
		КонецЕсли;
		
	КонецЦикла;
Показать


В табличной части могут встретится 2 одинаковых серии. Вопрос, как в свойство записать общее количество 2х или нескольких строк?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1490 29.09.14 13:37 Сейчас в теме
(1) maxster545, погугли на тему свернуть.
maxster545; +1 Ответить
4. maxster545 29.09.14 13:42 Сейчас в теме
(2) Xershi, надо свернуть только то что одинаковое, к примеру если серия другая, то её сворачивать не надо...
3. maxster545 29.09.14 13:41 Сейчас в теме
Пример:
|____Товар____|Серия|Колво
1|Номенклатура1|0001 |1200
2|Номенклатура2|0001 |100
3|Номенклатура3|0002 |400
Вот что должно быть в свойстве 0001:
СвойствоКоличество|1300

Вот что должно быть в свойстве 0002:
СвойствоКоличество|400
5. hop 112 29.09.14 13:47 Сейчас в теме
ПолнаяТаблица.Свернусть("Товар,Серия","Колво")
или
ПолнаяТаблица.Свернусть("Серия","Колво")
maxster545; +1 Ответить
6. maxster545 29.09.14 13:51 Сейчас в теме
(5) hop, отлично, а условие как прописать, при котором нужно свернуть?
7. elis99 29.09.14 14:43 Сейчас в теме
через отбор и потом уже свернуть.
8. maxster545 29.09.14 14:45 Сейчас в теме
(7) elis99, дело в том, что мне нужно передать в регистр значение...
При сворачивании таблицы, номенклатура пропадает..
9. elis99 29.09.14 14:50 Сейчас в теме
через отбор у тебя будут нужные тебе строки. Оттуда можешь в список загнать номенклатуру
10. maxster545 29.09.14 14:53 Сейчас в теме
(9) elis99, можно кусок кода, плз...
11. elis99 29.09.14 14:55 Сейчас в теме
Там интереснее - объект, свойство, значение. Нужно ТЧ записать в этих трех измерениях. Т.е. копируешь табличную часть с отбором. Далее сворачиваешь по объекту и свойству с уммой по значению. И цикл записи пойдет по полученной таблице.
12. elis99 29.09.14 15:01 Сейчас в теме
Предположим в таблице ПолнаяТаблица есть поля Серия, Количество, Свойство
ВремТаблица = ПолнаяТаблица.Скопировать("Серия,Свойство,Количество);
ВремТаблица.Свернуть("Серия,Свойство","Количество");
Для Каждого СтрокаНоменклатуры из ВремТаблица Цикл
        Значение = Число(СтрокаНоменклатуры.Количество);
        Объект = СтрокаНоменклатуры.Серия;
        ЗначенияСвойствОбъектов = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
        ЗначенияСвойствОбъектов.Объект = Объект;
        ЗначенияСвойствОбъектов.Свойство = Свойство;
        ЗначенияСвойствОбъектов.Прочитать();
        Если ЗначенияСвойствОбъектов.Выбран() Тогда
            
            Если СокрЛП(ЗначенияСвойствОбъектов.Значение) <> СокрЛП(Значение) Тогда
                ЗначенияСвойствОбъектов.Значение = Значение;
                ЗначенияСвойствОбъектов.Записать()
            КонецЕсли;
        Иначе
            ЗначенияСвойствОбъектов.Объект = Объект;
            ЗначенияСвойствОбъектов.Свойство = Свойство;
            ЗначенияСвойствОбъектов.Значение = Значение;
            ЗначенияСвойствОбъектов.Записать()
        КонецЕсли;
        
    КонецЦикла;
Показать
maxster545; +1 Ответить
13. elis99 29.09.14 15:03 Сейчас в теме
ой, прости, свойство ты уже в цикле определяешь. Значит все также, только убери свойство.
ВремТаблица = ПолнаяТаблица.Скопировать("Серия,Количество);
ВремТаблица.Свернуть("Серия","Количество");
14. maxster545 29.09.14 15:08 Сейчас в теме
(13) elis99, спасибо, сейчас попробую
15. maxster545 29.09.14 15:13 Сейчас в теме
(13) elis99,
ВремТаблица = ПолнаяТаблица.Скопировать("Серия","Количество");

Ругается что метод скопировать не существует...Выгрузить? или ВыгрузитьКолонки?
16. elis99 29.09.14 15:27 Сейчас в теме
17. maxster545 29.09.14 15:33 Сейчас в теме
(16) elis99, сработал именно метод Выгрузить()

ВремТаблица = ПолнаяТаблица.Выгрузить(); 
ВремТаблица.Свернуть("Серия","Количество");


Спасибо большое, сворачивается))
18. Xershi 1490 30.09.14 09:59 Сейчас в теме
(17) maxster545, плюсики ставь=)
19. dvv01 120 01.10.14 10:51 Сейчас в теме
1. Если есть серии, то могут быть и характеристики (номенклатура с разными характеристиками, но одной серией). а еще могут быть разные единицы, качество...
2. ...если сворачивать, то сворачивать надо по всем колонкам ссылочного типа с суммированием по колонкам числового, т.е. перед сверткой пройтись по метаданным колонок таблицы для формирования строк свертки и суммирования.
3. А зачем нам вообще свойства - нужное значение можно хранить в готовом реквизите (например в комментарии)
4. А если сделать два цикла подряд? - в первом пройтись по всем сериям и их значения обнулить, а во втором суммировать с ранее введенным значением (тогда при первом включении получим 0+Ч1, а во второом Ч1+Ч2) - будет быстрее, особенно если пользоваться не "СоздатьМенеджерЗаписи", а "СоздатьНаборЗаписей" с отбором по списку.
Оставьте свое сообщение

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