Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 21:07

8.2 Частичная группировка данных таблицы значений

Автор 1cka, 20 окт 2014, 16:42

0 Пользователей и 1 гость просматривают эту тему.

1cka

УПП 8.2 ред 1.3
Есть ТЗ: Таблица.Свернуть("Номенклатура, ХарактеристикаНоменклатуры", "Количество1, Количество2)
Пример заполнения:
Ручка1, Цвет-Синий, 5, 0
Ручка1, Цвет-Красный, 1, 8

Ручка1, Страна-Китай, 1,2
Ручка1, страна-Германия, 2,0

Вопрос такой- Хотелось бы свернуть до Номенклатуры, те позиции где характеристика Цвет, а остальные позиции оставить свернутыми до характеристики. КАК это можно сделать?
Ручка1, //--//, 6, 8
Ручка1, Страна-Китай, 1,2
Ручка1, страна-Германия, 2,0

pyrkin_vanya

Только если это будут разные таблицы значений.

TreeDogNight

С помощью стандартного метода Свернуть() думаю никак... Придется тебе писать самодельное сворачивание в цикле
Cегодня не все могут провести завтрашним числом. Вернее, не только лишь все - мало кто может это сделать.

MuI_I_Ika

Напишите свою процедуру сворачивания таблицы и будет так как вы хотите.

1cka

Цитата: TreeDogNight от 20 окт 2014, 16:50
С помощью стандартного метода Свернуть() думаю никак... Придется тебе писать самодельное сворачивание в цикле
начала делать так:
пробую разделить на две ТЗ, с Характеристикой Цвет и все остальные(без учета характеристик + с другими характеристиками отличными от Цвет).
так как я пишу что, при условии Если в ТЗ попадают все Номенклатуры без характеристик, а в ИНАЧЕ с характеристиками(в том числе и отличными от Цвет). Что я не так делаю, как правильно написать условие?
ТаблицаРезультатаСХар = Новый ТаблицаЗначений;
ТаблицаРезультатаСХар.Колонки.Добавить("Номенклатура");
ТаблицаРезультатаСХар.Колонки.Добавить("ХарактеристикаНоменклатуры");
ТаблицаРезультатаСХар.Колонки.Добавить("Количество1");
ТаблицаРезультатаСХар.Колонки.Добавить("Количество2");

ТаблицаРезультатаБезХар = Новый ТаблицаЗначений;
ТаблицаРезультатаБезХар.Колонки.Добавить("Номенклатура");
ТаблицаРезультатаБезХар.Колонки.Добавить("ХарактеристикаНоменклатуры");
ТаблицаРезультатаБезХар.Колонки.Добавить("Количество1");
ТаблицаРезультатаБезХар.Колонки.Добавить("Количество2");

Для Каждого Стр ИЗ Таблица ЦИКЛ
Если Стр.ХарактеристикаНоменклатуры=Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию("Цвет")Тогда

НоваяСтрока = ТаблицаРезультатаСХар.Добавить();
НоваяСтрока.Номенклатура = стр.Номенклатура;
НоваяСтрока.ХарактеристикаНоменклатуры = Стр.ХарактеристикаНоменклатуры;
НоваяСтрока.Количество1 = Стр.Количество1;
НоваяСтрока.Количество2 = Стр.Количество2;

Иначе
НоваяСтрока = ТаблицаРезультатаБезХар.Добавить();
НоваяСтрока.Номенклатура = стр.Номенклатура;
НоваяСтрока.ХарактеристикаНоменклатуры = Стр.ХарактеристикаНоменклатуры;
НоваяСтрока.Количество1 = Стр.Количество1;
НоваяСтрока.Количество2 = Стр.Количество2;
КонецЕсли;

КонецЦикла;



Yura063

ЦитироватьЕсли Стр.ХарактеристикаНоменклатуры=Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию("Цвет")Тогда
У вас в справочнике точно есть Цвет? Найдите по коду!
Помогли, отблагодари!

TreeDogNight

В принципе код написали правильно, но смущает эта строчка:
Стр.ХарактеристикаНоменклатуры=Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию("Цвет")
Вы не думали что будет, если сменится наименование?
Cегодня не все могут провести завтрашним числом. Вернее, не только лишь все - мало кто может это сделать.

1cka

Цитата: Yura063 от 21 окт 2014, 10:45
ЦитироватьЕсли Стр.ХарактеристикаНоменклатуры=Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию("Цвет")Тогда
У вас в справочнике точно есть Цвет? Найдите по коду!
Цвет точно есть и по коду искала...результат тот же

Yura063

Как то все написано много:

ТаблицаРезультатаСХар = Таблица.СкопироватьКолонки();

ТаблицаРезультатаБезХар = Таблица.СкопироватьКолонки();
       
Для Каждого Стр ИЗ Таблица ЦИКЛ
Если Найти(Стр.ХарактеристикаНоменклатуры.Наименование,"Цвет")>0Тогда
               
НоваяСтрока = ТаблицаРезультатаСХар.Добавить();
ЗаполнитьЗначениеСвойств(НоваяСтрока,Стр);
           
Иначе
НоваяСтрока = ТаблицаРезультатаБезХар.Добавить();
ЗаполнитьЗначениеСвойств(НоваяСтрока,Стр);
КонецЕсли;
   
КонецЦикла;

Можно так написать!
Добавлено: 21 окт 2014, 10:52


Как я понял цвет у вас указан в наименовании!
Помогли, отблагодари!

1cka

Цитата: TreeDogNight от 21 окт 2014, 10:45
В принципе код написали правильно, но смущает эта строчка:
Стр.ХарактеристикаНоменклатуры=Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию("Цвет")
Вы не думали что будет, если сменится наименование?

меня тоже смущает эта строчка((((
В самом справочнике ХарактеристикиНоменклатуры хранятся все значения характеристик (красный, синий, зеленый)для всех номенклатур, т.е. там хранятся Значения некого свойства Цвет.т.е. наименования как Цвет там нет!
Код Свойства Цвет нашла в ПланыВидовХарактеристик.СвойстваОбъектов... но как это применить не понимаю(((

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск