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

Как связать Справочник и Список Документов на Начальной странице

Автор Алексей2014, 14 авг 2016, 14:35

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

Алексей2014

Подскажите пож - След. настройка - на Начальную страницу выводятся две колонки. В первой расположен справочник организаций. Во второй колонке документы расчетов с организациями. Нужно, чтобы при изменении текущей строки организации из первой колонки, во второй колонке устанавливалась текущая строка на первый документ расчетов с этой организацией.

vitasw

Цитата: Алексей2014 от 14 авг 2016, 14:35След. настройка - на Начальную страницу выводятся две колонки.

Подробнее пожалуйста. Это может быть 2 разных формы, а может быть одна форма с двумя табличными полями. В первом случае - нельзя, во втором - можно.

Алексей2014

Цитата: vitasw от 15 авг 2016, 08:33
Подробнее пожалуйста. Это может быть 2 разных формы, а может быть одна форма с двумя табличными полями. В первом случае - нельзя, во втором - можно.
Это действительно 2 разные формы - первая колонка форма списка справочника, вторая колонка форма списка документов.
Если в Начальной странице используется режим 2х колонок по другому и не может быть. В каждой колонке своя форма.
Значит остается создавать отдельную обработку, где городить форму с двумя табличными частями - в первой справочник списком, во второй документы списком?

vitasw


Алексей2014

Цитата: vitasw от 16 авг 2016, 10:06
да
а если не торопиться с ответом, а зайти через получить программно список открытых форм, и уже затем, таким образом, залезть во вторую форму программно и отсортировать по данным первой формы! осталось за малым - как это будет в коде?

ilnur75

сделайте как вариант вывод во 2-колонку не форму списка документов. а форму отчета "Список документов" , в отчете создайте форму ,добавьте  сначала реквизит табличный документ , закиньте его в элементы, для формы примените обработчик события ПриСозданииНаСервере, запросом получите нужные данные. Форму выносите на раб.стол.

Алексей2014

Цитата: ilnur75 от 16 авг 2016, 19:53
сделайте как вариант вывод во 2-колонку не форму списка документов. а форму отчета "Список документов" , в отчете создайте форму ,добавьте  сначала реквизит табличный документ , закиньте его в элементы, для формы примените обработчик события ПриСозданииНаСервере, запросом получите нужные данные. Форму выносите на раб.стол.
выглядит не очень оптимально. может проще подключить обработчик события. без всяких доп. отчетов?

Dethmontt

Алексей2014, вообще самый простой вариант решения задачи, это создание формы обработки где разместить два списка (организации и документы) и при активизации строки в таб1 устанавливать отбор на Таб2

Но мы не ищем легких путей =)))

Итак задача, есть две формы на начальной странице, необходимо при активизации строки в одной форме, устанавливать отбор в другой форме (единственная сложность научить общаться формы и именно из нужного нам места)

Реализация:

Форма списка справочника Организации
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)

//Нужно определить что активизация именно с рабочей обрасти начальной страницы
Если ЭтаФорма.Окно = Неопределено или ЭтаФорма.Окно.НачальнаяСтраница Тогда

//Данные для отбора
ТекДанные = Элемент.ТекущиеДанные;
СтруктураДанных = Новый Структура("Использование, Имя, Значение", Ложь, "Организация");
Если ТекДанные <> Неопределено Тогда
СтруктураДанных.Использование = Истина;
СтруктураДанных.Значение = ТекДанные.Ссылка;
КонецЕсли;

//Оповещаем открытые формы об активизации строки в форме списка справочника Организации
Оповестить("АктивизацияСтрокиСправочникаОрганизации", СтруктураДанных, ЭтаФорма);

КонецЕсли;

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


Форма списка документов Документ1:
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

РаботаСФормамиКлиент.ОбработчикОповещенияУстановкаОтбораПоОрганизации(ЭтаФорма, ИмяСобытия, Параметр, Источник);

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


ОМ РаботаСФормамиКлиент (галка "Только клиент упр. приложение"):
Процедура ОбработчикОповещенияУстановкаОтбораПоОрганизации(Форма, ИмяСобытия, Параметр, Источник) Экспорт

//Проверяем что за событие вызвало этот обработчик
Если ИмяСобытия = "АктивизацияСтрокиСправочникаОрганизации" Тогда //Это оповещение об отборе
//Проверяем что эта форма находиться на рабочей области начальной страницы
Если Форма.Окно = Неопределено или Форма.Окно.НачальнаяСтраница Тогда
//Устанавливаем отбор
УстановитьОтборСпискаДокументов(Форма.Список, Параметр);
КонецЕсли;
КонецЕсли;

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


Процедура УстановитьОтборСпискаДокументов(Список, СтруктураДанных) Экспорт

//Поле для отбора
ПолеКомпоновки = Новый ПолеКомпоновкиДанных(СтруктураДанных.Имя);

//Проверяем возможность установки отбора
Если Список.Отбор.ДоступныеПоляОтбора.НайтиПоле(ПолеКомпоновки) <> Неопределено Тогда

ЭлементОтбора = Неопределено;
//Ищем уже установленный отбор
Для каждого Элемент Из Список.Отбор.Элементы Цикл

Если Элемент.ЛевоеЗначение = ПолеКомпоновки Тогда
ЭлементОтбора = Элемент;
Прервать;
КонецЕсли;

КонецЦикла;

//Добавляем отбор если его еще нету
Если ЭлементОтбора = Неопределено Тогда
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
КонецЕсли;

//Устанавливаем значения
ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновки;
ЭлементОтбора.ПравоеЗначение = СтруктураДанных.Значение;
ЭлементОтбора.Использование = СтруктураДанных.Использование;

КонецЕсли;

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


Добавлено: 17 авг 2016, 03:29


//Ах, да! Чуть не забыл. Что бы строчка ниже отработала, нужно в свойствах динамического списка (на форме списка справочника Организации) напротив поля Ссылка - поставить галочку "Использовать всегда"
СтруктураДанных.Значение = ТекДанные.Ссылка;
//можно конечно переписать на более универсальную функцию, но это будет лишний

Добавлено: 17 авг 2016, 03:30


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

vitasw

вот-вот и я о том же. Вместо того чтобы сделать одну форму с 2-мя таблицами, будем рвать гланды через ж**у. проще сразу сказать "низя" чем почему "можно, но не нужно."

Dethmontt

Цитата: vitasw от 17 авг 2016, 08:19проще сразу сказать "низя" чем почему "можно, но не нужно."
А если разные пользователи захотят видеть разные типы документов с таким же отбором, под каждого будем обработку пилить?
Добавлено: 17 авг 2016, 11:14


поэтому - есть задача! Есть - решение!
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

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

Рейтинг@Mail.ru

Поиск