Содержание:
1. Когда возникает необходимость проверить наличие реквизита 1С?
2. Как можно получить метаданные объекта 1С?
1. Когда возникает необходимость проверить наличие реквизита 1С
Потребность проверки наличия реквизита обычно возникает при написании общих, универсальных процедур или функций, к примеру, когда необходимо выполнить ряд однообразных действий, проверить заполнение перед проведением, при этом реквизитный состав обрабатываемых объектов метаданных отличается незначительно (например, в документе, отражающем продажу товара, есть реквизит Склад, а в документе, отражающем перемещение товара – реквизиты Склад-отправитель и Склад-получатель).
В ряде типовых конфигураций 1С предлагается стандартная функция проверки наличия реквизита в объекте (расположена в модуле “ОбщегоНазначения”)
Функция ЕстьРеквизитОбъекта(ИмяРеквизита, МетаданныеОбъекта) Экспорт
Возврат НЕ (МетаданныеОбъекта.Реквизиты.Найти(ИмяРеквизита) = Неопределено);
КонецФункции
2. Как можно получить метаданные объекта 1С
Однако написать свою функцию также не представляет труда. В первую очередь необходимо получить метаданные объекта 1С одним из способов:
через функцию Метаданные() объекта
пример синтаксиса: СправочникСсылка.Метаданные()
ДокументСсылка.Метаданные()
через свойство глобального контекста Метаданные
пример синтаксиса: Метаданные.Справочники.[ИмяСправочника]
Метаданные.Документы.[ИмяДокумента]
Далее через свойство “Реквизиты” использовать функцию Найти(). В случае, если реквизит не найден, возвращается значение Неопределено.
Пример 1
Метаданные = Контрагент.Метаданные();
Если Метаданные.Реквизиты.Найти(«Ответственный») = Неопределено Тогда
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли;
Пример 2
Функция ПолучитьОрганизацию(Контрагент, Пользователь)
Если Метаданные.Справочники.Контрагенты.Реквизиты.Найти(«Организация») <> Неопределено Тогда
Возврат Контрагент.Организация;
Иначе
Возврат Пользователь.Организация;
КонецЕсли;
КонецФункции
Описанный алгоритм подходит для случаев проверки наличия реквизита шапки. Но что делать, когда возникает необходимость определить, существует ли реквизит в табличной части 1С (справочника или документа)? Для этого используется следующая конструкция:
Метаданные.Справочники.<ИмяСправочника>.ТабличныеЧасти.Реквизиты.Найти(<ИмяОбъектаПоиска>).
При обработке таблиц значений также возможно выполнить проверку существования колонки – в этом случае применяется метод Свойство(), с помощью которого, помимо основной функции – получения значения элемента по указанному имени, можно проверить, имеется ли указанного свойство.
Пример синтаксиса:
Если НЕ ТекущаяСтрока.Свойство(«Исключить») ИЛИ НЕ ТекущаяСтрока.Исключить Тогда
ЗаполнитьЗначенияСвойств(ТаблицаЗагрузки.Добавить(); ТекущаяСтрока);
КонецЕсли;
Специалист компании ООО «Кодерлайн»
Кондренко Анна Сергеевна
0
1С 8.3 : Функции ЕстьРеквизитДокумента и ЕстьРеквизитОбъекта
При разработке частенько нужно проверить наличие реквизита в документе или справочнике.
Ниже приведены функции позволяющие проверить наличие заданных реквизитов в объектах конфигурации:
Код 1C v 8.х
// Позволяет определить есть ли среди реквизитов шапки Объекта реквизит с переданным именем.
Функция ЕстьРеквизитОбъекта(ИмяРеквизита, Объект) Экспорт
МетаданныеОбъекта = Объект.Метаданные();
Если МетаданныеОбъекта.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли;
КонецФункции
Для документа:
Код 1C v 8.х
// Позволяет определить есть ли среди реквизитов шапки документа
// реквизит с переданным именем.
//
// Параметры:
// ИмяРеквизита - строковое имя искомого реквизита,
// МетаданныеДокумента - объект описания метаданных документа, среди реквизитов которого производится поиск.
//
// Возвращаемое значение:
// Истина - нашли реквизит с таким именем, Ложь - не нашли.
//
Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента) Экспорт
Если МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли;
КонецФункции
P.S. Посмотрите еще Полезные функции по работе с метаданными
Проверка существования реквизита |
Я |
03.09.14 — 10:02
Народ, подскажите как проверить существование реквизита у документа. Не его заполнение, а именно существование
1 — 03.09.14 — 10:05
Если Документ.Метаданные().Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
Сообщить(«Нету»);
КонецЕсли;
2 — 03.09.14 — 10:09
(1) ага, а если метаданных нету
(0) через Попытка — наверняка
3 — 03.09.14 — 10:12
(2) т.е. как нету ? ))
4 — 03.09.14 — 10:16
(3) ну ты че с будуна внешней обработкой в нету конфу не тыкал?
в пустой тоже запускается
5 — 03.09.14 — 10:18
(4) всё равно есть метаданные у документа, хоть обработкой тыкай, хоть чем.
6 — 03.09.14 — 10:18
(4)В не той конфе пошлет лесом через ошибку и это будет правильно и соразмерно:-)
7 — 03.09.14 — 10:20
(4) ну если с фанатизмом, то версию еще конфы при открытии проверить да? ))
8 — 03.09.14 — 10:21
(5)
Наверное он имеет в виду вариант если в обработке стоит:
Документ=Документы.КакойтоВид.ПустаясСылка();
в случае если нет такого вида:-)
9 — 03.09.14 — 10:23
(2) Попытка — ЗЛО
10 — 03.09.14 — 10:25
(1) у Задачи поищи реквизит «Адресат»….
или у справочника «Код»
в 8.1 было все просто, сейчас развели по разным коллекциям, по этому стало куда более проблемно…
11 — 03.09.14 — 10:28
можно через задницу
Структура = Новый Структура(ИмяРеквизита);
ЗаполнитьЗначенияСвойств(Структура, Документ);
Если Структура[ИмяРеквизита] = Неопределено Тогда
Сообщить(«Нету»);
КонецЕсли;
12 — 03.09.14 — 10:30
(10) >>у справочника «Код»
а зачем его искать?
13 — 03.09.14 — 10:32
(9) если проверять наличие каждого объекта метаданных в процессе обращения — супер мега универсальная обработка получится. года через два тестирования
14 — 03.09.14 — 10:33
(12) а его может и не быть…. да у справочника может не быть кода
проверь на длине кода = 0
15 — 03.09.14 — 10:34
(14) ну и проверяй длину кода отдельно
да несколько не однообразно, ну что делать
16 — 03.09.14 — 10:34
(12) или например общие реквизиты у документов, угадай где они
17 — 03.09.14 — 10:34
(13) ты просто не знаешь какое зло эта «попытка»
18 — 03.09.14 — 10:34
(12) его может не быть
19 — 03.09.14 — 10:36
(15) ты не понял, его физически в таблице нет, колонки нет! и запрос вылетет с ошибкой
20 — 03.09.14 — 10:52
(17) И какое ж зло это — попытка? Не поясните?
21 — 03.09.14 — 10:57
Я кстати тоже подумал над попыткой. -почему мегазло???
22 — 03.09.14 — 10:59
23 — 03.09.14 — 11:01
вот еще про попытки исключение и остановка по ошибке в отладчике
http://forum.infostart.ru/forum26/topic56814/
24 — 03.09.14 — 11:17
(20)(21) вы теряете ошибку, все проходит «хорошо», но результат может быть плачевен
25 — 03.09.14 — 11:20
(22) (24) ну это смотря где пытаться проверять
в приначалеработысистемы или в приоткрытии, если внешняя обработка — ничего не будет
26 — 03.09.14 — 11:25
+ флажок один раз зарядил — и работай себе не хочу
а про метаданные в 150-ти местах вставлять — это каждый тормоз может
27 — 03.09.14 — 11:28
(24) Например?
28 — 03.09.14 — 11:46
(10) Речь про документ вообще-то, а не про задачу и не про справочник
29 — 03.09.14 — 11:48
(8) Вообще-то в таких случаях сначала делается проверка на существование вида документа, а уже потом его реквизитов.
30 — 03.09.14 — 11:50
+(10) адресата у задачи и код у справочника надо искать через СтандартныеРеквизиты
31 — 03.09.14 — 11:54
(30) У стандартных реквизитов НЕТ метода «НАЙТИ» — только перебором, либо через «заполнитьЗначенияСвойств», либо через попытку
32 — 03.09.14 — 11:57
(0) Вот тебе универсальная процедура. Кинь в общий модуль и пользуйся:
Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента) Экспорт
Если МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
//<—Maximus
Для Каждого Реквизит Из МетаданныеДокумента.СтандартныеРеквизиты цикл
Если Врег(Реквизит.Имя) = Врег(ИмяРеквизита) Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
//Maximus—>
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли;
КонецФункции // ЕстьРеквизитДокумента()
33 — 03.09.14 — 11:57
(24) Конструкцией, позволяющей отработать ошибку, вы умудряетесь её потерять?? Вспоминается анекдот: а где шары металлические? — один сломал, второй про..терял.
34 — 03.09.14 — 11:59
Конечно, это сугубое ИМХО. Я считаю при хорошей архитектуре решения не должна вставать необходимость выяснения наличия реквизитов.
35 — 03.09.14 — 12:03
(34) имело место быть на больших кусках, вложенных в Попытка
36 — 03.09.14 — 12:03
(22) (23) — осилил, но так и не понял, зачем к серьёзному вопросу ссылки на ламерские топики?
Адский плющ
37 — 03.09.14 — 12:10
(24) +1
Попытка хороша, когда в блоке «Исключение» вызывается исключение.
Ну кроме пользовательского уровня, когда в исключении просто выводится более вежливое сообщение.
Перейти в раздел примеры кода 1С 8.3:
При наличии в конфигурации БСП, желательно использовать метод ЕстьРеквизитИлиСвойствоОбъекта (ссылка выше). Но что делать если конфигурация нетиповая? Вариантов (в зависимости от поставленной задачи) несколько: скопировать метод из БСП, проверить на свойство объекта, проверить через поиск, использовать попытку (не рекомендуется, только как временная заплатка).
Проверка реквизита через свойство объекта в 1С 8.3:
Функция ПроверкаНаСвойствоОбъекта(Объект, ИмяСвойстваОбъекта) Экспорт
ЕстьСвойство = Ложь;
СтруктураОбъекта = Новый Структура(ИмяСвойстваОбъекта, Неопределено);
ЗаполнитьЗначенияСвойств(СтруктураОбъекта, Объект);
Если СтруктураОбъекта[ИмяСвойстваОбъекта] = Неопределено Тогда
СтруктураОбъекта[ИмяСвойстваОбъекта] = Ложь;
ЗаполнитьЗначенияСвойств(СтруктураОбъекта, Объект);
Если СтруктураОбъекта[ИмяСвойстваОбъекта] <> Ложь Тогда
ЕстьСвойство = Истина;
КонецЕсли;
Иначе
ЕстьСвойство = Истина;
КонецЕсли;
Возврат ЕстьСвойство;// Булево
КонецФункции
Проверка реквизита через Найти в 1С 8.3:
Функция ПроверитьНаРеквизит(ИмяРеквизита, МетаданныеДок) // универсальная функция
// Например ИмяРеквизита=»ДрагМеталлы»;
Если МетаданныеДок.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли;
КонецФункции
Функция НайтиДрагМеталлы(Номенклатура, Материал, ОсновноеСредство) // пример использования в универсальной обработке
// если реквизит шапки
ИмяРеквизита=«ДрагМеталлы»;
Если Метаданные.Справочники.Товары.Реквизиты.Найти(ИмяРеквизита) <> Неопределено Тогда
Возврат Номенклатура.ДрагМеталлы;
ИначеЕсли Метаданные.Справочники.Материалы.Реквизиты.Найти(ИмяРеквизита) <> Неопределено Тогда
Возврат Материал.ДрагМеталлы;
ИначеЕсли Метаданные.Справочники.ОсновныеСредства.Реквизиты.Найти(ИмяРеквизита) <> Неопределено Тогда
Возврат ОсновноеСредство.ДрагМеталлы;
Иначе
Возврат Ложь;
КонецЕсли;
// если реквизит таб.части
//Если НЕ ТекущаяСтрока.Свойство(ИмяРеквизита) ИЛИ НЕ ТекущаяСтрока.ДрагМеталлы Тогда
// ЗаполнитьЗначенияСвойств(ТаблицаДок.Добавить(), ТекущаяСтрока); // приёмник, источник
//КонецЕсли;
КонецФункции
Проверка реквизита через Попытка (&НаКлиенте) в 1С 8.3:
&НаКлиенте
Функция ПроверитьНаНаличиеРеквизитаЧерезПопытку(ИмяРеквизита)
Попытка
РеквизитФормыПоИмени = ЭтаФорма[ИмяРеквизита];
ЕстьРеквизитНаФорме = Истина;
Исключение
ЕстьРеквизитНаФорме = Ложь;
КонецПопытки;
Возврат ЕстьРеквизитНаФорме;
КонецФункции
В определенных задачах можно использовать метод в 1С 8.3:
ПолучитьРеквизиты(GetAttributes)
Синтаксис:
ПолучитьРеквизиты(<Путь>)
Параметры:
<Путь> (необязательный)
Тип: Строка.
Указывает путь к родительскому реквизиту. Если параметр опущен или указана пустая строка, возвращаются реквизиты верхнего уровня.
Возвращаемое значение:
Тип: Массив.
Массив объектов РеквизитФормы.
Описание:
Получает описание реквизитов формы.
Copyright©, «Программист 1С в г.Минске», 06.11.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
|
1 |
|
Проверить наличие реквизита через свойство13.09.2018, 13:47. Показов 24780. Ответов 12
Добрый день, вообщем нужно проверить есть ли реквизит в справочнике, как это проверить? через метаданные не идёт, так как пишет поле объекта не обнаружено
0 |
_ЕГОР_ Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
||||
13.09.2018, 13:59 |
2 |
|||
0 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
|
13.09.2018, 14:51 [ТС] |
3 |
_ЕГОР_, а как-нибудь без попытки можно?
0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
13.09.2018, 14:58 |
4 |
Владислаучык, а чем попытка то не устраивает?
0 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
|
13.09.2018, 14:59 [ТС] |
5 |
_ЕГОР_, Да и с попыткой как-то не идёт
0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
13.09.2018, 15:06 |
6 |
что не идет то? есть реквизит, но он падает в исключение?
0 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
|
13.09.2018, 15:12 [ТС] |
7 |
_ЕГОР_, я не в справочнике нахожусь, реквизит текущего справочника ссылается на справочник, вот в том справочнике и нужноо проверить наличие определенного реквизита. Можно же как-то через свойство проверить?
0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
13.09.2018, 15:24 |
8 |
ну получите вы пустую ссылку этого справочника, и далее через попытку проверьте
0 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
|
13.09.2018, 16:19 [ТС] |
9 |
Если Не (Справочники.ПрофессииРабочих.ПолучитьСсылку().Мет аданные().Реквизиты.Найти(«КодПоОКРБ») = Неопределено) — кароч вот как я сделал, если кому надо
0 |
polax 1808 / 1228 / 442 Регистрация: 16.01.2015 Сообщений: 5,396 |
||||
13.09.2018, 18:53 |
10 |
|||
Владислаучык, Тогда уж сократите
1 |
Эксмет |
14.09.2018, 07:37
|
Не по теме:
Владислаучык, а чем попытка то не устраивает? Вы фазу определяете, приложив провод к языку?
0 |
_ЕГОР_ |
14.09.2018, 07:57
|
Не по теме:
Вы фазу определяете, приложив провод к языку? какое тонкое сравнение
0 |
Эксмет |
14.09.2018, 08:04
|
Не по теме:
какое тонкое сравнение Почему же тонкое? Такое же глупое действие как и проверять что-то через ошибку, вместо того, чтобы открыть С-П)
0 |
Вопрос Как определить программно, существует ли у документа требуемый реквизит
С давних времен в типовых конфигурациях для этого существовала специальная функция.
В конфигурациях последних редакций эта функция стала более универсальной и кроме того стала неожиданно оригинальной, даже эстетически восхитительной.
Так, на сегодня, в 2019 г., эта функция называется ЕстьРеквизитИлиСвойствоОбъекта и располагается в общем модуле ОбщегоНазначенияКлиентСервер. Обращение к функции:
ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Форма, "ПериодРегистрацииИсправленногоДокумента")
Сама функция проверки выглядит сейчас (2019 год) так:
// Проверяет наличие реквизита или свойства у произвольного объекта без обращения к метаданным. // // Параметры: // Объект - Произвольный - объект, у которого нужно проверить наличие реквизита или свойства; // ИмяРеквизита - Строка - имя реквизита или свойства. // // Возвращаемое значение: // Булево - Истина, если есть. // Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт КлючУникальности = Новый УникальныйИдентификатор; СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; КонецФункции
В типовых конфигурациях 1С по состоянию на 2010 г. для этой цели использовалась функция, например, «ЕстьРеквизитДокумента» общего модуля «ОбщегоНазначения» и была построена на получении метаданных. Обращение к функции:
Если ОбщегоНазначения.ЕстьРеквизитДокумента("БанковскийСчет", МетаданныеДокумента) Тогда ...
где «БанковскийСчет» — пример наименования искомого реквизита,
«МетаданныеДокумента«:
МетаданныеДокумента = ДокументОбъект.Метаданные();
Сама функция проверки (расположенная в общем модуле «ОбщегоНазначения«):
// Позволяет определить есть ли среди реквизитов шапки документа // реквизит с переданным именем. // // Параметры: // ИмяРеквизита - строковое имя искомого реквизита, // МетаданныеДокумента - объект описания метаданных документа, среди реквизитов которого производится поиск. // // Возвращаемое значение: // Истина - нашли реквизит с таким именем, Ложь - не нашли. // Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента) Экспорт Если МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции // ЕстьРеквизитДокумента()
Next Post
-
v8
-
Программисту 1C
Ср Ноя 10 , 2010
Примеры работы с регистами сведений см. также в Шпаргалке по программированию для системы 1С:Предприятие 8.2 Оглавление 1. Как из регистра сведений «РасчетчикиЗарплатыОрганизации» получить в виде массива всех расчетчиков зарплаты определенного подразделения организации 2. Как добавить запись в непериодический независимый регистр сведений 3. Как считать содержимое непериодического независимого регистра сведений «СобственныеКонтрагенты» […]
Breaking News
Войти или зарегистрироваться
8.х Как проверить реквизит/Объект метаданных на существование?
Тема в разделе «Конфигурирование на платформе «1С:Предприятие 8″», создана пользователем alp, 17 апр 2010.
-
0/5,
Голосов: 0
-
Offline
alp
Опытный в 1С- Регистрация:
- 8 янв 2009
- Сообщения:
- 434
- Симпатии:
- 0
- Баллы:
- 26
есть Список реквизитов:
Контрагент
Договор
Договор2
….
Как проверить существует ли этот реквизит в объекте?
подобно методу Выбран() в 77.
alp,
17 апр 2010
#1 -
Offline
mialord
Модераторы
Команда форума
Модератор- Регистрация:
- 31 июл 2009
- Сообщения:
- 5.460
- Симпатии:
- 53
- Баллы:
- 54
Здраствуйте!
Если Вы хотите проверить существует ли реквизит у объекта метаданных контрагент, то самый простой способ попытаться его получить через Метаданные() с использованием оператора Попытка … КонецПопытки;
mialord,
17 апр 2010
#2 -
Offline
Stack_G
Опытный в 1С- Регистрация:
- 10 дек 2007
- Сообщения:
- 786
- Симпатии:
- 2
- Баллы:
- 29
Из типовой:
Код:МетаданныеДокумента = ДокументОбъект.Метаданные();
Код:// Позволяет определить есть ли среди реквизитов шапки документа // реквизит с переданным именем. // // Параметры: // ИмяРеквизита - строковое имя искомого реквизита, // МетаданныеДокумента - объект описания метаданных документа, среди реквизитов которого производится поиск. // // Возвращаемое значение: // Истина - нашли реквизит с таким именем, Ложь - не нашли. // Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента) Экспорт Если МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции // ЕстьРеквизитДокумента()
Переписать под любой объект не составляет труда:
Код:Функция ЕстьРеквизитОбъекта(ИмяРеквизита, Объект) Экспорт МетаданныеОбъекта = Объект.Метаданные(); Если МетаданныеОбъекта.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции
Как говорит «начальника форума»: «все украдено до нас»
Stack_G,
17 апр 2010
#3
- Похожие темы
-
8.х
Как проверить существование переменной
GRUV,
15 май 2008, в разделе: Конфигурирование на платформе «1С:Предприятие 8»
- Ответов:
- 5
- Просмотров:
- 6.698
- BabySG
- 20 май 2008
-
8.х
Как созданную в SQL таблицу превратить в объект метаданных 1С 8.2?
МалышкА,
8 мар 2014, в разделе: Конфигурирование на платформе «1С:Предприятие 8»
- Ответов:
- 4
- Просмотров:
- 849
- Thelearning
- 12 мар 2014
-
7.7
Проверить существование файла запросом
man37,
21 ноя 2015, в разделе: Конфигурирование на платформе «1С:Предприятие 7.7»
- Ответов:
- 8
- Просмотров:
- 2.765
- man37
- 23 ноя 2015
-
[РЕШЕНО]
Как проверить существование узла при чтении ФабрикаXDTO
Aidis,
27 ноя 2015, в разделе: Конфигурирование на платформе «1С:Предприятие 8»
- Ответов:
- 3
- Просмотров:
- 2.723
- hawksib
- 24 сен 2019
- Ваше имя или e-mail:
- У Вас уже есть учётная запись?
-
- Нет, зарегистрироваться сейчас.
- Да, мой пароль:
-
Забыли пароль?
-
Запомнить меня
-
- Искать только в заголовках
- Сообщения пользователя:
-
Имена участников (разделяйте запятой).
- Новее чем:
-
- Искать только в этой теме
- Искать только в этом разделе
- Отображать результаты в виде тем
-
Быстрый поиск
- Последние сообщения
Больше…