Поскажите плиз как сделать,чтобы на форме при изменении поля ввода Контрагент изменялось табПоле "Договора" и где лучше прописать процедуру..на форме или в модуле?
Вот запрос, который будет работать при выборе контагента:
Процедура ЗаполнитьСписокДоговоров() экспорт
Запрос = Новый запрос;
Запрос.УстановитьПараметр("ДатаНач",ДатаНачала);
Запрос.УстановитьПараметр("ДатаКон",ДатаКонца);
Запрос.УстановитьПараметр("Организация",Организация);
Запрос.УстановитьПараметр("Контрагент",Контрагент);
Запрос.Текст ="ВЫБРАТЬ РАЗЛИЧНЫЕ
| Взаиморасчеты.ДоговорКонтрагента КАК ДоговорКонтрагента,
| Взаиморасчеты.Контрагент КАК Контрагент,
| Взаиморасчеты.Организация,
| Взаиморасчеты.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК Валюта,
| Взаиморасчеты.ДоговорКонтрагента.ВидДоговора КАК ВидДоговора
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК Взаиморасчеты
|ГДЕ
| Взаиморасчеты.Период >= &ДатаНач
| И Взаиморасчеты.Период <= &ДатаКон
| И Взаиморасчеты.Организация = &Организация
| И Взаиморасчеты.Контрагент В(&Контрагент)
|
|УПОРЯДОЧИТЬ ПО
| Валюта УБЫВ,
| Контрагент";
Если ПоВсемОрганизациям = Истина Тогда
Запрос.УстановитьПараметр("Контрагент",Контрагент);
КонецЕсли;
ВыборкаДоговоров = Запрос.Выполнить().Выбрать();
Вот запрос, который будет работать при выборе контагента:
Процедура ЗаполнитьСписокДоговоров() экспорт
Запрос = Новый запрос;
Запрос.УстановитьПараметр("ДатаНач",ДатаНачала);
Запрос.УстановитьПараметр("ДатаКон",ДатаКонца);
Запрос.УстановитьПараметр("Организация",Организация);
Запрос.УстановитьПараметр("Контрагент",Контрагент);
Запрос.Текст ="ВЫБРАТЬ РАЗЛИЧНЫЕ
| Взаиморасчеты.ДоговорКонтрагента КАК ДоговорКонтрагента,
| Взаиморасчеты.Контрагент КАК Контрагент,
| Взаиморасчеты.Организация,
| Взаиморасчеты.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК Валюта,
| Взаиморасчеты.ДоговорКонтрагента.ВидДоговора КАК ВидДоговора
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК Взаиморасчеты
|ГДЕ
| Взаиморасчеты.Период >= &ДатаНач
| И Взаиморасчеты.Период <= &ДатаКон
| И Взаиморасчеты.Организация = &Организация
| И Взаиморасчеты.Контрагент В(&Контрагент)
|
|УПОРЯДОЧИТЬ ПО
| Валюта УБЫВ,
| Контрагент";
Если ПоВсемОрганизациям = Истина Тогда
Запрос.УстановитьПараметр("Контрагент",Контрагент);
КонецЕсли;
ВыборкаДоговоров = Запрос.Выполнить().Выбрать();
По теме из базы знаний
- Запись значения в поле ввода/формы со срабатыванием события ПриИзменении
- Всякие полезности
- Анализ сложных запросов с временными таблицами-2. Не такой мудреный.
- Универсальная обработка заполнения колонки табличной части документа. Обычная форма
- Как сохранить данные табличного поля в табличный документ / файл Excel программно
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ОкончаниеВводаТекста - вызывается после ввода текста при сходе с элемента управления, таким образом чтобы запустилась обработка события нужно будет после выбора данных поля щелкнуть по какому-нибудь элементу формы... а ОбработкаВыбора - вызывается после осуществления выбора, но до помещения выбранного значения в элемент управления - тоесть то, что нам и нужно
тебе нужны все договора контрагента или выбранные по условию?
если отобранные по хитрому условию:
размещаешь на форме ПолеТабличногоДокумента, связываешь с таблицей значений. Колонки можно задать сразу на стадии разработки или по результатам условия.
Если колонки заданы сразу, выгружаешь результат запроса в таблицу значений, потом из этой таблицы переписываешь в ТЗ, связанную с таб полем. В стандартных конфах для этого есть процедура ОбщегоНазначения.ЗагрузитьВТаблицуЗначений( ТЗИсточник. ТЗПриемник). Перед применением ТЗПриемник очисть. Преписывает инфу по колонкам с совпадающими именами.
Если колонки не создаешь на стадии разработки, то выгружаешь результат запроса сразу в ТЗ, связанную с таб полем, потом ЭлементыФормы.ИмятабПоля.СоздатьКолонки();
Если просто все договора или условие отбора простое, размести таб поле с типом источника данных СправочникСписок.ДоговорыКонтрагентов. Установи связь по владельцу с Контрагент. Можно накладывать условия отбора как в обычном справочнике (интерактивно и програмно)
если отобранные по хитрому условию:
размещаешь на форме ПолеТабличногоДокумента, связываешь с таблицей значений. Колонки можно задать сразу на стадии разработки или по результатам условия.
Если колонки заданы сразу, выгружаешь результат запроса в таблицу значений, потом из этой таблицы переписываешь в ТЗ, связанную с таб полем. В стандартных конфах для этого есть процедура ОбщегоНазначения.ЗагрузитьВТаблицуЗначений( ТЗИсточник. ТЗПриемник). Перед применением ТЗПриемник очисть. Преписывает инфу по колонкам с совпадающими именами.
Если колонки не создаешь на стадии разработки, то выгружаешь результат запроса сразу в ТЗ, связанную с таб полем, потом ЭлементыФормы.ИмятабПоля.СоздатьКолонки();
Если просто все договора или условие отбора простое, размести таб поле с типом источника данных СправочникСписок.ДоговорыКонтрагентов. Установи связь по владельцу с Контрагент. Можно накладывать условия отбора как в обычном справочнике (интерактивно и програмно)
Вот на форме есть реквизиты:ДатаНач и ДатаКон, Организация и Контрагент. При вводе контрагента в ТабПоле должна выводиться выборка колонок: №, Использовать (флажки), ДоговорКонтрагента, Организация, ВалютаВзаиморасчетов, ВидДоговора (реквизиты табличной части:Использовать,ДоговорКонтрагента,Контрагент). Также на форме есть флажки:ПоВсемОрганизациям,ПоХолдингу,ПоСпискуКонтрагентов. Вот при их установке в ТабПоле выборка меняется.
При установке флПоВсемОрганизациям колонки остаются теже,но выборка договоров по контрагенту уже со всеми орг-ми в определенный период. Если флПоХолдингу, то выборка по определенному Контрагенту и опр.Орг-ей, но в ТабПоле добавляется колонка Контрагент. А вот если установить флПоСпискуКонтрагентов, то на форме появляется страница и вводится список Контрагентов (реквизиты тчКонтрагенты: Контрагент) и потом переходя на страницу договоров, то там уже высвечивается выборка договоров этих контрагентов с опр.Орг-ей..Колонке как при вводе начальном. И мне именно нужно выборка в ТабПоле, а не ПолеТабДок
Вот 1 вопрос: Если в ПолеВвода Контрагента ввести и установить флПоСпискуКонтрагентов, то на странице ввода списка Контрагентов в ТабПоле должен быть уже введен этот контрагент из ПоляВвода. Как это прописать?? Надеюсь я понятно объясняю
2 вопрос: Вот как осуществить вывод определенных колонок, при том что некоторые из ТЧ,а некотрые надо создать
МОЖЕТ кто скинет обработку наподобие этому
При установке флПоВсемОрганизациям колонки остаются теже,но выборка договоров по контрагенту уже со всеми орг-ми в определенный период. Если флПоХолдингу, то выборка по определенному Контрагенту и опр.Орг-ей, но в ТабПоле добавляется колонка Контрагент. А вот если установить флПоСпискуКонтрагентов, то на форме появляется страница и вводится список Контрагентов (реквизиты тчКонтрагенты: Контрагент) и потом переходя на страницу договоров, то там уже высвечивается выборка договоров этих контрагентов с опр.Орг-ей..Колонке как при вводе начальном. И мне именно нужно выборка в ТабПоле, а не ПолеТабДок
Вот 1 вопрос: Если в ПолеВвода Контрагента ввести и установить флПоСпискуКонтрагентов, то на странице ввода списка Контрагентов в ТабПоле должен быть уже введен этот контрагент из ПоляВвода. Как это прописать?? Надеюсь я понятно объясняю
2 вопрос: Вот как осуществить вывод определенных колонок, при том что некоторые из ТЧ,а некотрые надо создать
МОЖЕТ кто скинет обработку наподобие этому
Что то не понял... а чем "Связь по владельцу" не угодила?
Прикрепленные файлы:
ВнешняяОбработка2.zip
Ну не подходит мне связь по владельцу! ПРОЧИТАЙТЕ внимательнее описание 25.08.2008 05:39:33. Я не знаю как выгрузить каждую колонку из ВыборкаРезультатаЗапроса в колонки ТабПоле, которое создано данными ТабЧасти объекта.
Вот пример в обработке...Если ввести период, организацию, а потом контрагента, то при вводе контрагента выйдет выборка в 1ТП. Но мне нужно чтобы во втором, которое является табличной часть объекта +новые колонки из выборки запроса. Еще три флажка, при их изменении выдается др.выборка. Первое ТабПоле вообще не нужно, просто чтобы пример показать как должно быть.
Вот пример в обработке...Если ввести период, организацию, а потом контрагента, то при вводе контрагента выйдет выборка в 1ТП. Но мне нужно чтобы во втором, которое является табличной часть объекта +новые колонки из выборки запроса. Еще три флажка, при их изменении выдается др.выборка. Первое ТабПоле вообще не нужно, просто чтобы пример показать как должно быть.
Прикрепленные файлы:
akt.rar
к 25.08.2008 05:39:33
1) если есть возможность - посмотри, например, БП любой из документов: ПКО, РКО, ПлатПорИсх или ПлатПорВход - в любом из них есть табличная часть РасшифровкаПлатежа, которая может редактироваться как таблица или как одна строка из таблицы. Все очень просто
2) Формируешь таблицу значений, связанную с табличным полем любым способом (запрос+доп. обработка в коде) - т.е. набор колонок и их наполнение по строкам. После этого выполняешь
ТвоеТабличноеПоле.СоздатьКолонки();
т ьы увидишь свою таблицу значений.
1) если есть возможность - посмотри, например, БП любой из документов: ПКО, РКО, ПлатПорИсх или ПлатПорВход - в любом из них есть табличная часть РасшифровкаПлатежа, которая может редактироваться как таблица или как одна строка из таблицы. Все очень просто
2) Формируешь таблицу значений, связанную с табличным полем любым способом (запрос+доп. обработка в коде) - т.е. набор колонок и их наполнение по строкам. После этого выполняешь
ТвоеТабличноеПоле.СоздатьКолонки();
т ьы увидишь свою таблицу значений.
допустим у тебя на форме лежит табличное поле СписокДоговоров, тип: таблица значений, данные: СписокДоговоров.
В обработчиках событий различных элементов вызываешь процедуру СформироватьСписокДоговоров()
В ней формируешь ТЗ: например
СписокДоговоров = Запрос.Выполнить()Выгрузить() (запросом)
или СписокДоговоров = Новый таблицаЗначений + колонки + наполнение
в зависимости от разных условий
В конце этой процедуры
ЭлементыФормы.СписокДоговоров.СоздатьКолонки();
В обработчиках событий различных элементов вызываешь процедуру СформироватьСписокДоговоров()
В ней формируешь ТЗ: например
СписокДоговоров = Запрос.Выполнить()Выгрузить() (запросом)
или СписокДоговоров = Новый таблицаЗначений + колонки + наполнение
в зависимости от разных условий
В конце этой процедуры
ЭлементыФормы.СписокДоговоров.СоздатьКолонки();
У меня работает так:
где тзЗагрузки - заполненная таблица значений
тчЗагрузки - пустая таблица на форме обработки
может что-то и лишнее здесь, но работает отлично и по функционалу и по скорости(тзЗагрузки - 210 колонок и 6000 строк)
Код |
---|
ЭлементыФормы.тчЗагрузки.Значение = тзЗагрузки;
ЭлементыФормы.тчЗагрузки.СоздатьКолонки();
Для КолТЧ=0 По ЭлементыФормы.тчЗагрузки.Колонки.Количество()-1 Цикл
ЭлементыФормы.тчЗагрузки.Колонки[КолТЧ].ОтображатьИтогиВПодвале = Истина;
КонецЦикла;
ЭлементыФормы.тчЗагрузки.ОбновитьСтроки();
Показать полностью |
где тзЗагрузки - заполненная таблица значений
тчЗагрузки - пустая таблица на форме обработки
может что-то и лишнее здесь, но работает отлично и по функционалу и по скорости(тзЗагрузки - 210 колонок и 6000 строк)
Процедура СформироватьСписокДоговоров()
Договора.Очистить();Запрос = Новый Запрос;
Если ПоСпискуКонтрагентов Тогда
Параметры = " И Взаиморасчеты.Контрагент = &ВыбраннаяГруппаКонтрагентов И Взаиморасчеты.Организация = &Организация";
ИначеЕсли ПоВсемОрганизациям Тогда
Параметры = " И Взаиморасчеты.Контрагент = &Контрагент";
ИначеЕсли ПоХолдингу Тогда
Параметры = " И Взаиморасчеты.Контрагент = &Контрагент И Взаиморасчеты.Организация = &Организация";
Иначе
Параметры = " И Взаиморасчеты.Контрагент = &Контрагент И Взаиморасчеты.Организация = &Организация";
КонецЕсли;
Запрос.Текст= "ВЫБРАТЬ РАЗЛИЧНЫЕ
| Взаиморасчеты.ДоговорКонтрагента КАК ДоговорКонтрагента,
| Взаиморасчеты.Контрагент КАК Контрагент,
| Взаиморасчеты.Организация,
| Взаиморасчеты.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК Валюта,
| Взаиморасчеты.ДоговорКонтрагента.ВидДоговора КАК ВидДоговора
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК Взаиморасчеты
|ГДЕ
| Взаиморасчеты.Период >= &ДатаНач
| И Взаиморасчеты.Период <= &ДатаКон"
+Параметры+"
|УПОРЯДОЧИТЬ ПО
| Валюта УБЫВ,
| Контрагент";
Запрос.УстановитьПараметр("ДатаНач",ДатаНач);
Запрос.УстановитьПараметр("ДатаКон",ДатаКон);
Запрос.УстановитьПараметр("Организация",Организация);
Запрос.УстановитьПараметр("Контрагент",Контрагент);
Договора.Загрузить(Запрос.Выполнить().Выгрузить());
//тз.Колонки.Добавить("Организация", Новый Описание типов "Справочники.Организации"),"Организация",100));
// тз.Колонки.Добавить("Валюта", Новый ОписаниеТипов("Справочники.Валютаы"),"Валюта",30));
// тз.Колонки.Добавить("ВидДоговора", Новый ОписаниеТипов("Перечисления.ВидыДоговоровКонтрагентов"),"Вид договора",45));
КонецПроцедуры
------
Вообщем выводятся только колонки тчДоговора, а добавленные в связанное с ним ТабПоле колонки Орг-я,Валюта,ВидДоговора-не выводит
Договора.Очистить();Запрос = Новый Запрос;
Если ПоСпискуКонтрагентов Тогда
Параметры = " И Взаиморасчеты.Контрагент = &ВыбраннаяГруппаКонтрагентов И Взаиморасчеты.Организация = &Организация";
ИначеЕсли ПоВсемОрганизациям Тогда
Параметры = " И Взаиморасчеты.Контрагент = &Контрагент";
ИначеЕсли ПоХолдингу Тогда
Параметры = " И Взаиморасчеты.Контрагент = &Контрагент И Взаиморасчеты.Организация = &Организация";
Иначе
Параметры = " И Взаиморасчеты.Контрагент = &Контрагент И Взаиморасчеты.Организация = &Организация";
КонецЕсли;
Запрос.Текст= "ВЫБРАТЬ РАЗЛИЧНЫЕ
| Взаиморасчеты.ДоговорКонтрагента КАК ДоговорКонтрагента,
| Взаиморасчеты.Контрагент КАК Контрагент,
| Взаиморасчеты.Организация,
| Взаиморасчеты.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК Валюта,
| Взаиморасчеты.ДоговорКонтрагента.ВидДоговора КАК ВидДоговора
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК Взаиморасчеты
|ГДЕ
| Взаиморасчеты.Период >= &ДатаНач
| И Взаиморасчеты.Период <= &ДатаКон"
+Параметры+"
|УПОРЯДОЧИТЬ ПО
| Валюта УБЫВ,
| Контрагент";
Запрос.УстановитьПараметр("ДатаНач",ДатаНач);
Запрос.УстановитьПараметр("ДатаКон",ДатаКон);
Запрос.УстановитьПараметр("Организация",Организация);
Запрос.УстановитьПараметр("Контрагент",Контрагент);
Договора.Загрузить(Запрос.Выполнить().Выгрузить());
//тз.Колонки.Добавить("Организация", Новый Описание типов "Справочники.Организации"),"Организация",100));
// тз.Колонки.Добавить("Валюта", Новый ОписаниеТипов("Справочники.Валютаы"),"Валюта",30));
// тз.Колонки.Добавить("ВидДоговора", Новый ОписаниеТипов("Перечисления.ВидыДоговоровКонтрагентов"),"Вид договора",45));
КонецПроцедуры
------
Вообщем выводятся только колонки тчДоговора, а добавленные в связанное с ним ТабПоле колонки Орг-я,Валюта,ВидДоговора-не выводит
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот