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

Господа Эксперты Помогите с обходом выборки.

Автор OnePunch-Man, 03 апр 2023, 15:42

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

OnePunch-Man

Уважаемые Специалисты, помогите пожалуйста с обходом выборки.
Вовнутренней обработке нужно вывести на форму отчет.
создал обработку, Макет отчета написал код чтобы вывести все на форму, и не получается заполнить в форме параметры значениями со справочника.
уже перепробовал все методы не пойму что не так.

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

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

РеквизитОтчета.Очистить();
ОбъектОбработка = РеквизитФормыВЗначение("Объект");
МакетОтчета = ОбъектОбработка.ПолучитьМакет("МакетОтчета");

ОбластьКонстанты = МакетОтчета.ПолучитьОбласть("Константы");
ОбластьШапка = МакетОтчета.ПолучитьОбласть("Шапка");
ОбластьДанные = МакетОтчета.ПолучитьОбласть("Данные");


ОбластьКонстанты.Параметры.Директор = Константы.Директор.Получить();
ОбластьКонстанты.Параметры.ДатаЗапретаРедактирования = Константы.ДатаЗапретаРедактирования.Получить();
ОбластьКонстанты.Параметры.ТекущаяСтавкаНДС = Константы.ТекущаяСтавкаНДС.Получить();
РеквизитОтчета.Вывести(ОбластьКонстанты);

РеквизитОтчета.Вывести(ОбластьШапка);

//Что здесь не так? Перепробывал уже все методы ничего не выходит.
Сотрудники = Справочники.Сотрудники;
Выборка = Сотрудники.Выбрать();

Пока Выборка.Следующий() Цикл
ОбластьДанные.Параметры.Филиал = Справочники.Сотрудники.НайтиПоРеквизиту("ФилиалРаботы") ;
ОбластьДанные.Параметры.Сотрудник = Справочники.Сотрудники.НайтиПоРеквизиту("Наименование") ;
ОбластьДанные.Параметр.ГодРождения = Справочники.Сотрудники.НайтиПоРеквизиту("ДатаРождения") ;
КонецЦикла;                                                                                      
РеквизитОтчета.Вывести(ОбластьДанные);

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


Kvark5d

Цитата: OnePunch-Man от 03 апр 2023, 15:42ОбластьДанные.Параметры.Филиал = Справочники.Сотрудники.НайтиПоРеквизиту("ФилиалРаботы") ;

 ;) эх...на лицо полное непонимание происходящего  :angry:
посмотрите в синтакс-помошнике функцию НайтиПоРеквизиту
она ищет элемент справочника по значению указанного реквизита и возвращает ссылку на элемент справочника
у вас же циклический обход элементов справочника
почитайте что такое Выборка
должно быть
ОбластьДанные.Параметры.Филиал = Выборка.ФилиалРаботы

OnePunch-Man

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

OnePunch-Man

Kvark5d, Большое спасибо за помощь разобрался. все заработало.

OnePunch-Man

Kvark5d, &НаКлиенте
Процедура ЗаполнитьФорму(Команда)
ЗаполнитьФормуНаСервере();
КонецПроцедуры

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

РеквизитОтчета.Очистить();
ОбъектОбработка = РеквизитФормыВЗначение("Объект");
МакетОтчета = ОбъектОбработка.ПолучитьМакет("МакетОтчета");

ОбластьКонстанты = МакетОтчета.ПолучитьОбласть("Константы");
ОбластьШапка = МакетОтчета.ПолучитьОбласть("Шапка");
ОбластьДанные = МакетОтчета.ПолучитьОбласть("Данные");


ОбластьКонстанты.Параметры.Директор = Константы.Директор.Получить();
ОбластьКонстанты.Параметры.ДатаЗапретаРедактирования = Константы.ДатаЗапретаРедактирования.Получить();
ОбластьКонстанты.Параметры.ТекущаяСтавкаНДС = Константы.ТекущаяСтавкаНДС.Получить();
РеквизитОтчета.Вывести(ОбластьКонстанты);

РеквизитОтчета.Вывести(ОбластьШапка);

Сотрудники = Справочники.Сотрудники;
Выборка = Сотрудники.Выбрать();

Пока Выборка.Следующий() Цикл
ОбластьДанные.Параметры.Филиал = Выборка.ФилиалРаботы;
ОбластьДанные.Параметры.Сотрудник = Выборка.Наименование;
ОбластьДанные.Параметры.ГодРождения = Выборка.ДатаРождения ;
КонецЦикла;                                                                                      
РеквизитОтчета.Вывести(ОбластьДанные);


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

Но почемуто в отчете после выборки поле данные заполнятся только одним сотрудником? а в справочнике их 3.

LexaK

OnePunch-Man, так для каждого сотрудника надо выводить свою область в отчет, так
...
     ОбластьДанные.Параметры.ГодРождения = Выборка.ДатаРождения ;
     РеквизитОтчета.Вывести(ОбластьДанные);
КонецЦикла;                                                                                         
//    РеквизитОтчета.Вывести(ОбластьДанные);


если помогло нажмите: Спасибо!

OnePunch-Man


Теги:

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

Рейтинг@Mail.ru

Поиск