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

Загрузка групп верхнего уровня СКД в Таблицу Значений

Автор amina1000, 18 дек 2013, 16:14

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

amina1000

Всем привет. Создала отчет СКД с иерархией, загрузила данные отчета в Таблицу значений на форму, выгружается весь отчет в таблицу. Мне нужно чтоб выгружались только группы верхнего уровня. как сделать это программно, не меняя структуры СКД?

Besart

странно, а чем не подходит изменение СКД, не выводите область детальных записей и у вас будут только группировки

amina1000

не подходить так как загрузка данных идет в несколько таблиц. Нужны все поля. Как реализовать обход по группам программно?

Besart

непойму чего вы хотите, СКД выгружает данные не "в таблицу значений на форме" в табличный документ к\й отображается на форме
больше давайте информации
Добавлено: 18 дек 2013, 18:09


кажется я понял чего вы хотите, сделайте в Другие настройки > Отображение полей группировок > Отдельно и только в итогах, тогда в ТЗ будет строка на уровне группировки содержать значение, а на уровне детальных записей будет null или неопределено, т.о. при обходе строк по значению в этой колонке вы сможете отловить группировки,
если же у вас настройки сделаны без Отдельно и только в итогах, то можно объявить переменную перед обходом ТЗ в к\й вы будете сохранять значение группировки, при каждом обходе строки проверять если равна эта переменная предыдущему значению, то это детальные записи, если нет то это уровень группировки

amina1000

Решила просто удалить повторяющиеся строки в ТабЗн. вот мой код
Процедура Команда1(Команда)
      
   МаксимальныйИндекс = Таб.количество() -1;
Пока МаксимальныйИндекс > 0 Цикл
   если таб.Получить(МаксимальныйИндекс)=таб.Получить(МаксимальныйИндекс-1)
      тогда
       Таб.Удалить(МаксимальныйИндекс)
       конецЕсли;
МаксимальныйИндекс = МаксимальныйИндекс -1;
КонецЦикла
      
   КонецПроцедуры
ничего не удаляется. Как можно сравнить две строки текущую и след. в таб? Если можно примеры

Kironten

Я как то для обработки такую конструкцию использовал (которую, кстати по поиску из нета вытащил)
Функция УдалитьСтрокиПовторяющихсяКонтрагентов(ТаблицаЗначений) Экспорт
Для Каждого Строка Из ТаблицаЗначений Цикл

Отбор = Новый Структура("Контрагент", Строка.Контрагент);
    НайденноеЗначение = ТаблицаЗначений.НайтиСтроки(Отбор);
КолвоЭлементовВМассиве = НайденноеЗначение.Количество();

Если КолвоЭлементовВМассиве = 1 Тогда
Продолжить;
Иначе
Для ОбратныйИндекс = 1 По (КолвоЭлементовВМассиве - 1) Цикл
ЭлементМассива = НайденноеЗначение[КолвоЭлементовВМассиве - ОбратныйИндекс];
ТаблицаЗначений.Удалить(ЭлементМассива);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецФункции

amina1000

Вопрос решила вот так
   Процедура Команда1(Команда)
      
   сч = Таб.количество() -1;
Пока сч > 0 Цикл
   если Элементы.таб.ДанныеСтроки(сч).Заказы=Элементы.таб.ДанныеСтроки(сч-1).Заказы
      тогда
       Таб.Удалить(сч)
       иначе сообщить(Элементы.таб.ДанныеСтроки(сч).Заказы)
       конецЕсли;
сч = сч -1;
КонецЦикла
      
   КонецПроцедуры
Всем спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск