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

Отборы в ТЗ

Автор Nosferatu112, 06 июл 2023, 17:17

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

Nosferatu112

Попросили вытащить отборы в таблице значений порывшись в интернете пришёл к выводу что отборы есть только в динамическом списке, написал отборы сам что бы при нажатии на кнопку отбор 1 таблица исчезала из видимости а вторая в которую загружаютьс строки по отборам появлялась и от вопрос можно ли как то сделать так что бы если в таблице с отборами создают новый элемент он появлялся и в основной таблице
Это мой код
&НаСервере
Процедура ОтборНаСервере()
ТЧ = Объект.Начисления.Выгрузить();
ТабОтбора.Очистить();

ПостроительЗапр = Новый ПостроительЗапроса;

    ПостроительЗапр.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЧ);

    Если Не Начисление.Пустая() Тогда
    т_Отбор = ПостроительЗапр.Отбор.Добавить("Начисление");
    т_Отбор.ВидСравнения = ВидСравнения.Равно;
    т_Отбор.Значение = Начисление;
    т_Отбор.Использование = Истина;
КонецЕсли;

Если Не ТипПЛ.Пустая() Тогда
т_Отбор = ПостроительЗапр.Отбор.Добавить("ТипПутевогоЛиста");
    т_Отбор.ВидСравнения = ВидСравнения.Равно;
    т_Отбор.Значение = ТипПЛ;
    т_Отбор.Использование = Истина;
КонецЕсли;

Если Не МВТ.Пустая() Тогда
т_Отбор = ПостроительЗапр.Отбор.Добавить("МестоВТранспорте");
    т_Отбор.ВидСравнения = ВидСравнения.Равно;
    т_Отбор.Значение = МВТ;
    т_Отбор.Использование = Истина;
КонецЕсли;

    ПостроительЗапр.Выполнить();

    ТабРезультат = ПостроительЗапр.Результат.Выгрузить();
    ТабОтбора.Загрузить(ТабРезультат);
Элементы.Начисления.Видимость = Ложь;
Элементы.ТабОтбора.Видимость = Истина;

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

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

&НаСервере
Процедура ОтчиститьОтборыНаСервере()

Начисление = Справочники.вд_НачисленияМотиваций.ПустаяСсылка();
ТипПЛ = Справочники.вд_ТипПутевогоЛиста.ПустаяСсылка();
МВТ = Перечисления.вд_МестоВТранспорте.ПустаяСсылка();
Элементы.Начисления.Видимость = Истина;
Элементы.ТабОтбора.Видимость = Ложь;
ТабОтбора.Очистить();
КонецПроцедуры

&НаКлиенте
Процедура ОтчиститьОтборы(Команда)
Для Каждого С Из Объект.Начисления Цикл
Для Каждого Д Из ТабОтбора Цикл
Если Д.Начисление = С.Начисление И Д.МестоВТранспорте = С.МестоВТранспорте И Д.ТипПутевогоЛиста = С.ТипПутевогоЛиста Тогда
С.Стоимость = Д.Стоимость;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ОтчиститьОтборыНаСервере();
КонецПроцедуры

Так выглядит форма (может поможет в понимании)
Приказ.png

Максим75

думаю, что можно.
ведь первая таблица просто скрыта, а вторая есть результатом отборов по первой таблице.
при окончание добавления обрабатывайте событие и добавляйте в первую таблицу.

Nosferatu112

Да это то понятно я не совсем понимаю как мне взять именно созданную строку и с неё данные и засунуть в первую таблицу

LexaK

Nosferatu112, что-то вы путаете! у упр.формах отлично работает отбор на ТЗ!  :befhbt:

вот пример кода
            СтруктураОтбор = Новый Структура("Ссылка", лкТекушаяСтрока.Значение);
            ФиксСтруктура  = Новый ФиксированнаяСтруктура(СтруктураОтбор);
            Элементы.СсылкиУдаленных.ОтборСтрок = ФиксСтруктура;
            СсылкиУдаленныхПриИзменении(0);
если помогло нажмите: Спасибо!

Afinogen

Nosferatu112,

Обе эти таблицы должны иметь общий уникальный реквизит по которому шла бы связь между ними, так например сделано в УТ и тогда вы добавляете в первой таблице что то  присваиваете строке какой то уникальный UID , потмо по нему проверяете есть ли записи во второй таблице и если нет добавляете во вторую,  параллельно  для первой таблицы можно задать обработчик ПриАктивацуииСтроки и в нем прописать то чт о выше LexaK указал

Afinogen

 B) но вам надо  в атком случае всегда после какого то изменения первой таблицы актуализировать данные во второй

Теги:

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

Рейтинг@Mail.ru

Поиск