Версия для печати темы (https://pro1c.org.ua/index.php?s=cab22fff7cac2d3235b06be57a0b6065&showtopic=45973)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Вставить реквизит формы документа в отбор СКД

Автор: Lexveritas 30.05.18, 15:10

1С8.3.10 УПП 1.3

Задача примерно такова:

Документ "Заказ Покупателя" делает движения дописанными полями в регистр накопления.
Имеется отчет, который вытягивает из него все необходимые данные.

Так же на форме документа добавлена кнопка "проверить корректность данных".

В данном случае по нажатию кнопки открывается отчет. Задумка такова - нажимаем на кнопку, по номеру документа получаем содержимое регистра с нужными ресурсами.

Мной найдено и в обработчик события "ПриОткрытии" добавлено вот что:

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


Вручную вместо НовыйЭлементОтбора.ПравоеЗначение = НомерЗаказа; пишу НовыйЭлементОтбора.ПравоеЗначение = "123"; нормально происходит отбор по номеру 123, что означает что отбор работает и я как то не правильно пытаюсь получить "НомерЗаказа".

Помогите получить номер в отбор.
Из одной формы в другую нормально получалось реквизит отправить, но с СКД и формами отчетов как то завис!

Буду признателен любой помощи!

Автор: Vidocq05 30.05.18, 17:13

Цитата(Lexveritas @ 30.05.18, 16:10) *
 Форма = ПолучитьФорму("Документ.ЗаказПокупателя.Форма.ФормаДокумента");
    НомерЗаказа = Форма.Номер;

Судя по всему здесь НомерЗаказа равен пустой строке.

Lexveritas @ Сегодня, 16:10 * ,
Вообще задача не понятна. Например, при открытии какой формы срабатывает Ваш код?

Автор: Lexveritas 30.05.18, 20:20

Цитата(Vidocq05 @ 30.05.18, 18:13) *
Вообще задача не понятна. Например, при открытии какой формы срабатывает Ваш код?


Отчет. Основная форма. Событие "ПриОткрытии".

Прошу прощения, забыл указать!

Сама форма отчета и отбор по указаным параметрам срабатывает.

Я не могу из формы документа ЗаказПокупателя отправить реквизит "Номер" в параметры отбора.

Автор: Prospero 31.05.18, 8:05

Lexveritas @ Вчера, 21:20 * ,
НомерЗаказа - Переменная в отчете?

Автор: Vofka 31.05.18, 8:08

Lexveritas, в пустой форме (которую вы получаете методом ПолучитьФорму()) нету никаких значений. Точнее, все значения всех реквизитов формы, будут со значениями по умолчанию (пустая ссылка, 0, пустая строка, пустая дата и т.п.). Вам нужно из документа в отчет передать Ссылку на текущий документ и отбор устанавливать по этой Ссылке.

Автор: Lexveritas 31.05.18, 8:44

Цитата(Vofka @ 31.05.18, 9:08) *
Вам нужно из документа в отчет передать Ссылку на текущий документ и отбор устанавливать по этой Ссылке.


Путем не понятно как я дехал что получаю пустые данные. При том еще и создается новый документ заказа.

Вот сам то и вопрос как из документа в отчет передать Ссылку...

Автор: Vofka 31.05.18, 9:38

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

Добавляете своему отчету реквизит Ссылка типа Документ.ЗаказПокупателя. В заказе добавляете кнопку и в обработчике нажатия пишете:

Отчет = Отчеты.МойОтчет.Создать();
Отчет.Ссылка = Ссылка;
Отчет.ПолучитьФорму().Открыть();


Далее в отчете в ПриОткрытии получаете ссылку на документ через свойство Ссылка отчета. Ну и делаете уже что хотите с этим.

Автор: logist 31.05.18, 14:34

Цитата(Lexveritas @ 30.05.18, 16:10) *
получаем содержимое регистра с нужными ресурсами.

А чем не подходит типовой отчет Движения по регистрам?

Автор: Lexveritas 04.06.18, 8:53

Чудно!
Спасибо всем за помощь! Заработало!

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua