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

Формы и реквизиты

Автор Дмитрий Корнилов, Вчера в 16:22

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

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

Здравствуйте, проверьте пожалуйста с работоспособностью c обработки III3V-III3IX,



III3V.png
IIIЗV1.png
&НаКлиенте
Процедура ОбновитьСписок(Элемент)
    ЗаполнитьТаблицуНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()
   
    ТаблицаКонтрагентов.Очистить();
   
    // Если группа не выбрана, ничего не делаем
    Если ГруппаКонтрагентов.Пустая() Тогда
        Возврат;
    КонецЕсли;
   
    Если ВариантВывода = 1 Тогда
        // 1. ПРОСТОЙ ВЫВОД (только прямые потомки выбранной группы)
        Выборка = Справочники.Контрагенты.Выбрать(ГруппаКонтрагентов);
    Иначе
        // 2. ВЫВОД С ИЕРАРХИЕЙ (все элементы внутри, включая вложенные папки)
        Выборка = Справочники.Контрагенты.ВыбратьИерархически(ГруппаКонтрагентов);
    КонецЕсли;
   
    Пока Выборка.Следующий() Цикл
       
        // Условие задачи: выводить ТОЛЬКО элементы (не группы)
        Если Выборка.ЭтоГруппа Тогда
            Продолжить;
        КонецЕсли;
       
        НоваяСтрока = ТаблицаКонтрагентов.Добавить();
        НоваяСтрока.Контрагент = Выборка.Ссылка;
       
    КонецЦикла;
   
КонецПроцедуры



III3VI.png
III3VI1.png
&НаКлиенте
Процедура ПериодПриИзменении(Элемент)
   
    ПериодПриИзмененииНаСервере();
   
КонецПроцедуры

&НаСервере
Процедура ПериодПриИзмененииНаСервере()
   
    // 1. Очищаем таблицу перед заполнением
    ДокументыУстановки.Очистить();
   
    ВыборкаДокументов = Документы.УстановкаЦен.Выбрать(Период.ДатаНачала, Период.ДатаОкончания);
   
    Пока ВыборкаДокументов.Следующий() Цикл
        НоваяСтрока = ДокументыУстановки.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаДокументов);
    КонецЦикла;
   
КонецПроцедуры


III3VII.png
III3VII1.png

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

&НаСервере
Процедура ЗаполнитьТаблицуНаСервере()

ТаблицаДокументов.Очистить();

// Получаем границы периода
ДатаНач = Период.ДатаНачала;
ДатаКон = Период.ДатаОкончания;

// Выборка документов за период
Выборка = Документы.ПоступлениеТоваров.Выбрать(ДатаНач, ДатаКон);

Пока Выборка.Следующий() Цикл

// Реализация возможности вывода без отборов или с отбором по складу
Если ЗначениеЗаполнено(СкладОтбор) И Выборка.Склад <> СкладОтбор Тогда
Продолжить;
КонецЕсли;

НоваяСтрока = ТаблицаДокументов.Добавить();

// Заполнение данных из документа
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
НоваяСтрока.Ссылка = Выборка.Ссылка; // Явное заполнение ссылки для отображения

КонецЦикла;

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



III3VIII.png
III3VIII1.png
&НаКлиенте
Процедура ОбновитьСписок(Элемент)
    ЗаполнитьТаблицуНаСервере();
КонецПроцедуры

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


III3IX.png
III3IX1.png


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

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

&НаСервере
Процедура РезультатНаСервере()
    ЗаполнитьДокументыПКОНаФорме();
КонецПроцедуры

&НаКлиенте
Процедура КассаПриИзменении(Элемент)
    // Автоматическое обновление таблицы при выборе кассы
    ЗаполнитьДокументыПКОНаФорме();
КонецПроцедуры


Теги:

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

Рейтинг@Mail.ru

Поиск