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

Форме таблицу значений с реквизитами

Автор Дмитрий Корнилов, Сегодня в 18:06

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

Дмитрий Корнилов

Здравствуйте, помогите пожалуйста исправить что не так ? в обработках ЗVI и ЗVII


ЗVI
VI.png
&НаСервере
Процедура СвернутьТаблицуНаСервере()
    // 1. Преобразование данных формы в объект ТаблицаЗначений
    ТЗ = РеквизитФормыВЗначение("Продажи");
   
    // 2. Резервное копирование данных в реквизит-буфер
    ПродажиДоСвертки.Загрузить(ТЗ);
   
    // 3. Агрегация данных
    // Аргумент 1: "Номенклатура, Цена" — уникальные ключи группировки
    // Аргумент 2: "Количество, Сумма" — суммируемые ресурсы
    ТЗ.Свернуть("Номенклатура, Цена", "Количество, Сумма");
   
    // 4. Обновление интерфейса данными из объекта
    ЗначениеВРеквизитФормы(ТЗ, "Продажи");
КонецПроцедуры

&НаКлиенте
Процедура СвернутьТаблицу(Команда)
    СвернутьТаблицуНаСервере();
КонецПроцедуры


&НаСервере
Процедура ВосстановитьНаСервере()
    // Загружаем данные из буфера
    ТЗ_Буфер = ПродажиДоСвертки.Выгрузить();
    Продажи.Загрузить(ТЗ_Буфер);
КонецПроцедуры

&НаКлиенте
Процедура Восстановить(Команда)
    ВосстановитьНаСервере();
КонецПроцедуры

ЗVII
VII.png

&НаКлиенте
Процедура ВыбранныйКонтрагентПриИзменении(Элемент)
    // Вызываем обработку данных на сервере при каждом изменении контрагента
    ОбработатьТаблицыНаСервере();
КонецПроцедуры

&НаСервере
Процедура ОбработатьТаблицыНаСервере()
   
    // 1. Очищаем вторую таблицу в любом случае
    ВтораяТаблица.Очистить();
   
    // Если контрагент не выбран, прекращаем выполнение
    Если ВыбранныйКонтрагент.Пустая() Тогда
        Возврат;
    КонецЕсли;
   
    // 2. Преобразуем реквизит формы в объект ТаблицаЗначений для работы с методами поиска и свертки
    ТЗ_Источник = РеквизитФормыВЗначение("ПерваяТаблица");
   
    // 3. Отбираем строки по выбранному контрагенту
    ПараметрыОтбора = Новый Структура("Контрагент", ВыбранныйКонтрагент);
    НайденныеСтроки = ТЗ_Источник.НайтиСтроки(ПараметрыОтбора);
   
    // Проверяем, есть ли данные для этого контрагента
    Если НайденныеСтроки.Количество() > 0 Тогда
       
        // Создаем временную таблицу на основе найденных строк
        ТЗ_Результат = ТЗ_Источник.Скопировать(НайденныеСтроки);
       
        // 4. Сворачиваем данные: группируем по Номенклатуре, суммируем Количество
        ТЗ_Результат.Свернуть("Номенклатура", "Количество");
       
        // 5. Загружаем итоговые данные во вторую таблицу на форме
        ЗначениеВРеквизитФормы(ТЗ_Результат, "ВтораяТаблица");
       
    КонецЕсли;
    // Если найденных строк 0, ВтораяТаблица останется пустой согласно условию задачи

КонецПроцедуры

Теги:

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

Рейтинг@Mail.ru

Поиск