Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вибір з РегистраСведений з допомогою запиту, і без
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
lin
Доброго дня.

Роблю вибір даних з допомогою запиту:
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Искомое = "Бородін О. О.";
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо,
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
                   |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер
                   |ИЗ
                   |    РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(, ФизЛицо.Наименование = &Искомое) КАК ПаспортныеДанныеФизЛицСрезПоследних";
                  
    Запрос.УстановитьПараметр("Искомое", Искомое);
    Результат = Запрос.Выполнить().Выбрать();
    
    Пока Результат.Следующий() Цикл
        Сообщить(Строка(Результат.ФизЛицо)+ " " +Строка(Результат.ДокументСерия)+Строка(Результат.ДокументНомер));
    КонецЦикла
КонецПроцедуры


Як мені це реалізувати без використання запиту??

Пробував, але не працює, викидає помилку :
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Искомое = "Бородін О. О.";
    СтруктураОтбора = Новый Структура("ФизЛицо.Наименование", Искомое);
        
    Работнички = РегистрыСведений.ПаспортныеДанныеФизЛиц.СрезПоследних( ,СтруктураОтбора);
    
    Для Каждого Поле из Работнички Цикл
        Сообщить("Сотрудник " + Строка(Поле.ФизЛицо) + " Серия " + Строка(Поле.ДокументСерия) + " номер " + Строка(Поле.ДокументНомер));
    КонецЦикла;
КонецПроцедуры


Помилка:
Цитата
{Форма.Форма(4)}: Ошибка при вызове конструктора (Структура): Недопустимое значение параметра (параметр номер '1')
СтруктураОтбора = Новый Структура("ФизЛицо.Наименование", Искомое);
по причине:
Недопустимое значение параметра (параметр номер '1')


Якщо вказати
Цитата
СтруктураОтбора = Новый Структура("ФизЛицо", Искомое);

то нічого не повертає програма.
Ardi
РегистрСведенийМенеджер.<Имя регистра сведений>.СрезПоследних (InformationRegisterManager.<Имя регистра сведений>.SliceLast)
РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Имя регистра сведений>)
СрезПоследних (SliceLast)
Синтаксис:
СрезПоследних(<Конец периода>, <Отбор>)
Параметры:
<Конец периода> (необязательный)
Тип: Дата, МоментВремени, Граница. Определяет момент времени, заканчивая которым необходимо выбрать записи.
Если параметр не указан, то будут возвращены значения ресурсов самой последней записи регистра.
<Отбор> (необязательный)
Тип: Структура. Структура, содержащая отбор по измерениям и реквизитам регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры - задает отбираемое по данному измерению значение. Если параметр не указан, то отбор не используется.
Возвращаемое значение:
Тип: ТаблицаЗначений. Таблица значений, заполненная данными найденных записей регистра сведений.
Описание:
Получает наиболее поздние записи регистра, соответствующие установленным в параметрах метода значениям ключевых полей. Записи подбираются для каждого сочетания из всех имеющихся значений измерений регистра.
lin
Цитата(Ardi @ 10.11.10, 20:48) необходимо зарегистрироваться для просмотра ссылки
<Отбор> (необязательный)
Тип: Структура. Структура, содержащая отбор по измерениям и реквизитам регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры - задает отбираемое по данному измерению значение. Если параметр не указан, то отбор не используется.


Дивився я справку, ще до того як на форумі написав, тому можливо я чогось не розумію.
Варіант:
Процедура КнопкаВыполнитьНажатие(Кнопка)
Искомое = "Бородін О. О.";
СтруктураОтбора = Новый Структура("ФизЛицо", Искомое);

Работнички = РегистрыСведений.ПаспортныеДанныеФизЛиц.СрезПоследних( ,СтруктураОтбора);

Для Каждого Поле из Работнички Цикл
Сообщить("Сотрудник " + Строка(Поле.ФизЛицо) + " Серия " + Строка(Поле.ДокументСерия) + " номер " + Строка(Поле.ДокументНомер));
КонецЦикла;
КонецПроцедуры


здається правильний, але непрацює. Тому будь-ласка поясніть в чому моя помилка.
Vofka
Цитата
Искомое = "Бородін О. О.";

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

Вот так точно работает, проверено только значение структуры (ФизЛицо) должно быть (СправочникСсылкка.ФизическиеЛица)
lin
Суть поняв. Щиро вдячний за допомогу!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.