Часто возникаю ситуации, что при работе в программе 1С не можем найти нужный документ, справочник, отчет, либо обработку. Причинами может быть обновление программы, после чего изменился интерфейс и расположение меню, либо перешли с другой версии программы, открыли программу первый раз.
Ниже рассмотрим способ как найти любые объекты в программах 1С 8.2 и 8.3.
Версия 1С:Предриятие 8.3:
1. Запускаем 1С.
2. Выделяем нужную базу.
3. Открываем базу 1С.
4. Нажимаем главное Меню, дальше Все функции.
5. В окне все функции видим все объекты, которые есть в программе:
- константы;
- справочники
- документы;
- журналы документов;
- отчеты;
- обработки;
- планы видов характеристик;
- планы счетов;
- планы видов расчета;
- регистры сведений;
- регистры накопления;
- регистры бухгалтерии;
- и другие.
6. Допустим нам нужен документ “Ввод остатков”. Нажимаем на плюс “+” рядом Документы, после чего раскрывается список документов. Прокручиваем вниз и находим нужный документ. Также название объекта можно набрать в клавиатуре на русском раскладке. Для справочников и других объектов, проделываем те же шаги.
7. После открытия, работаем нужным документом. В нашем случае, это документ Ввод остатков”.
Версия 1С:Предриятие 8.2
1. Запускаем 1С и выбираем нужную базу.
2. Если есть пользователь, выбираем и нажимаем ОК.
3. Нажимаем Операции. Ниже видим, что есть список объектов, в которых мы можем найти нужный нам объект. Допустим, мы хотим найти справочник “Статьи затрат”. Для этого нажимаем Операции – Справочники.
4. В списке находим “Статьи затрат” и нажимаем ОК.
5. Продолжаем работу открытым справочником.
Источник изображения.
Понравилась статья? Ставьте лайк и подписывайтесь на канал Советы бухгалтеру.
В группах Вконтакте, Одноклассники можете задавать ваши вопросы.
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
/// Как выбрать и упорядочить документы за период /// в 1с 8.3, 8.2 &НаСервере Процедура КакВыбратьИУпорядочитьДокументыЗаПериодНаСервере() // найдём все документы поступления еды за 2014 год // упорядочив их по возрастанию даты Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Дата МЕЖДУ &НачДата И &КонДата |УПОРЯДОЧИТЬ ПО | Дата ВОЗР"; Запрос.УстановитьПараметр("НачДата", '20140101'); Запрос.УстановитьПараметр("КонДата", '20141231'); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументов = РезультатЗапроса.Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл Сообщить(ВыборкаДокументов.Ссылка); КонецЦикла; КонецПроцедуры /// Как найти документ по номеру в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиДокументПоНомеруНаСервере() // найдём поступление еды № ВМБП-000005 за 2014 год Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Дата МЕЖДУ &НачДата И &КонДата И | Номер = &ВыбНомер"; Запрос.УстановитьПараметр("НачДата", '20140101'); Запрос.УстановитьПараметр("КонДата", '20141231'); Запрос.УстановитьПараметр("ВыбНомер", "ВМБП-000005"); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументов = РезультатЗапроса.Выбрать(); Если ВыборкаДокументов.Следующий() Тогда Сообщить(ВыборкаДокументов.Ссылка); Иначе Сообщить("Документ с таким номером не существует!"); КонецЕсли; КонецПроцедуры /// Как найти документы по реквизиту в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиДокументПоРеквизитуНаСервере() // найдём все документы поступления еды // от поставщика ООО "Поле" Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка, | Поставщик |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Поставщик = &ВыбПоставщик |УПОРЯДОЧИТЬ ПО | Дата ВОЗР"; Запрос.УстановитьПараметр( "ВыбПоставщик", Справочники.Поставщики.НайтиПоНаименованию("ООО ""Поле""") ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументов = РезультатЗапроса.Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл Сообщить( Строка(ВыборкаДокументов.Ссылка) + " " + ВыборкаДокументов.Поставщик ); КонецЦикла; КонецПроцедуры /// Как выбрать все документы, которые не проведены и /// не помечены на удаление в 1с 8.3, 8.2 &НаСервере Процедура КакВыбратьВсеДокументыКоторыеНеПроведеныИНеПомеченыНаУдалениеНаСервере() // найдём не проведенные и не помеченные на удаление // документы поступления еды Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка, | Проведен, | ПометкаУдаления |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Проведен = ЛОЖЬ И | ПометкаУдаления = ЛОЖЬ |УПОРЯДОЧИТЬ ПО | Дата ВОЗР"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументов = РезультатЗапроса.Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл Сообщить( Строка(ВыборкаДокументов.Ссылка) + " " + ВыборкаДокументов.Проведен + " " + ВыборкаДокументов.ПометкаУдаления ); КонецЦикла; КонецПроцедуры /// Как найти подчиненные документы в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиПодчиненныеДокументыНаСервере() // Рассмотрим работу с подчиненными (связанными) документами // на примере документов: ПоступлениеТоваровУслуг и СчетФактураПолученный. // Документ СчетФактураПолученный вводится на основании документа // ПоступлениеТоваровУслуг, то есть счет фактура является подчиненной // по отношению к поступлению. // Факт подчиненности обычно (в типовых) фиксируется в самом подчиненном // документе через табличную часть ДокументыОснования. // Почему через табличную часть? Потому что один документ может зависеть // (быть подчиненным) сразу от нескольких родителей (оснований). // Пример №1. // У нас есть ссылка на поступление товаров и услуг. Требуется найти // счёт-фактуры, которые были введены на основании этого поступления. // В дереве подчиненности эти фактуры будут подчинены (зависимы) от // документа поступления. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка |ИЗ | Документ.СчетФактураПолученный.ДокументыОснования КАК | СчетФактураПолученныйДокументыОснования |ГДЕ | СчетФактураПолученныйДокументыОснования.ДокументОснование = | &ВыбПоступление"; Запрос.УстановитьПараметр("ВыбПоступление", Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру("0000-000004", '20160101') ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ПодчиненнаяФактура = ВыборкаДетальныеЗаписи.Ссылка; Сообщить(ПодчиненнаяФактура); КонецЦикла; // Пример №2. // У нас есть ссылка на счет-фактуру полученную. Требуется найти, // документы, на основании которых она была введена (родителей). Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДокументОснование |ИЗ | Документ.СчетФактураПолученный.ДокументыОснования КАК | СчетФактураПолученныйДокументыОснования |ГДЕ | СчетФактураПолученныйДокументыОснования.Ссылка = | &ВыбСчетФактура"; Запрос.УстановитьПараметр("ВыбСчетФактура", Документы.СчетФактураПолученный.НайтиПоНомеру("0000-000007", '20160101') ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл РодительФактуры = ВыборкаДетальныеЗаписи.ДокументОснование; Сообщить(РодительФактуры); КонецЦикла; КонецПроцедуры /// Как перебрать (перечислить) строки табличной части документа в 1с 8.3, 8.2 &НаСервере Процедура КакПеречислитьСтрокиИзТабличнойЧастиДокументаНаСервере() // У документа ПоступлениеЕды есть табличная часть 'Еда'. // У этой табличной части есть колонки: Номенклатура, Количество, // Сумма. ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231'); // перечислим строки табличной части этого документа // при помощи объектной техники Для Каждого Строка Из ПоступлениеСсылка.Еда Цикл Сообщить( Строка.Номенклатура.Наименование + " " + Строка.Количество + " шт. " + Строка.Сумма + " руб." ); КонецЦикла; // при помощи запроса Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеЕдыЕда.Номенклатура, | ПоступлениеЕдыЕда.Количество, | ПоступлениеЕдыЕда.Сумма |ИЗ | Документ.ПоступлениеЕды.Еда КАК ПоступлениеЕдыЕда |ГДЕ | ПоступлениеЕдыЕда.Ссылка = &ВыбПоступление"; Запрос.УстановитьПараметр("ВыбПоступление", ПоступлениеСсылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить( ВыборкаДетальныеЗаписи.Номенклатура.Наименование + " " + ВыборкаДетальныеЗаписи.Количество + " шт. " + ВыборкаДетальныеЗаписи.Сумма + " руб." ); КонецЦикла; КонецПроцедуры &НаСервере Процедура СозданиеИИзменениеДокументовНаСервере() /// Как создать новый документ в 1с 8.3, 8.2 // создадим новый документ поступление еды Поступление = Документы.ПоступлениеЕды.СоздатьДокумент(); // заполним шапку документа Поступление.Дата = ТекущаяДата(); Поступление.Поставщик = Справочники.Поставщики.НайтиПоНаименованию( "ООО ""Кузбас""" ); Поступление.Склад = Справочники.Склады.НайтиПоНаименованию( "Основной" ); // заполним табличную часть Еда НоваяСтрока = Поступление.Еда.Добавить(); НоваяСтрока.Номенклатура = Справочники.Еда.НайтиПоНаименованию( "Банан" ); НоваяСтрока.Количество = 10; НоваяСтрока.Сумма = 550; /// Как записать документ в 1с 8.3, 8.2 Поступление.Записать(РежимЗаписиДокумента.Запись); /// Как провести документ в 1с 8.3, 8.2 Поступление.Записать(РежимЗаписиДокумента.Проведение); /// Как отменить проведение документа в 1с 8.3, 8.2 Поступление.Записать(РежимЗаписиДокумента.ОтменаПроведения); /// Как внести изменения в документ по ссылке в 1с 8.3, 8.2 // зачастую у нас есть только ссылка на документ // и чтобы по ней получить сам объект документа // для изменения нужно вызывать метод ПолучитьОбъект // найдём документ продажа еды под номером ВМБП-000001 // для лаконичности примера воспользуемся не запросом, // а объектной техникой СсылкаНаПродажу = Документы.ПродажаЕды.НайтиПоНомеру( "ВМБП-000001", '20141231' // поиск среди документов 2014 года ); // нам вернули не сам документ, а ссылку (указатель) на него // проверим - нашёлся ли вообще документ Если СсылкаНаПродажу.Пустая() Тогда Сообщить("Документ не найден."); Иначе // получим сам документ по ссылке Продажа = СсылкаНаПродажу.ПолучитьОбъект(); // вот его уже можно изменять и записывать Продажа.Клиент = Справочники.Клиенты.НайтиПоНаименованию( "Пётр" ); Продажа.Записать(); КонецЕсли; /// Как получить пустую ссылку типа документ в 1с 8.3, 8.2 ПустаяСсылка = Документы.ПродажаЕды.ПустаяСсылка(); Если ПустаяСсылка.Пустая() Тогда Сообщить("Ссылка действительно пустая."); КонецЕсли; /// Как скопировать существующий документ в 1с 8.3, 8.2 // скопируем найденный документ на продажу и запишем // как новый документ от сегодняшнего числа КопияПродажи = СсылкаНаПродажу.Скопировать(); КопияПродажи.Дата = ТекущаяДата(); КопияПродажи.Комментарий = "Копия документа " + Строка(СсылкаНаПродажу); // запишем и проведём документ КопияПродажи.Записать(РежимЗаписиДокумента.Проведение); /// Как заблокировать документ перед изменениями /// в 1с 8.3, 8.2 // выполним блокировку документа // от изменения другими режимами или пользователями Продажа = СсылкаНаПродажу.ПолучитьОбъект(); Если Не Продажа.Заблокирован() Тогда Продажа.Заблокировать(); // тут идёт какой-то долгий алгоритм // в результате которого мы меняем // заблокированный элемент Продажа.Комментарий = "Документ изменён."; Продажа.Записать(); // и только потом освобождаем его // для других режимов и пользователей Продажа.Разблокировать(); КонецЕсли; /// Как создать новый документ на основании другого объекта /// в 1с 8.3, 8.2 // создадим документ продажа на основании поступления // скопировав из поступления табличную часть // в модуле документа ПродажаЕды я определил процедуру // ОбработкаЗаполнения, которая обрабатывает ситуации // когда мы заполняем один элемент на основании // данных другого (см. в базе для скачивания) ПродажаНаОсновании = Документы.ПродажаЕды.СоздатьДокумент(); ПродажаНаОсновании.Дата = ТекущаяДата(); ПродажаНаОсновании.Комментарий = "Документ введён на основании " + Строка(Поступление.Ссылка); ПродажаНаОсновании.Заполнить(Поступление.Ссылка); ПродажаНаОсновании.Записать(РежимЗаписиДокумента.Проведение); /// Как пометить на удаление документ в 1с 8.3, 8.2 ПродажаНаОсновании.УстановитьПометкуУдаления(Истина); // метод Записать вызывать не нужно КонецПроцедуры /// Как найти и изменить программно движения документа /// по регистрам в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиИИзменитьДвиженияДокументаНаСервере() // предположим у нас есть ссылка на проведенный // документ поступления еды № ВМБП-000002 ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231'); // мы знаем, что этот документ делает записи по // двум регистрам: // - регистр накопления "ЗапасЕды" // - регистр бухгалтерии "Хозрасчетный" // наша задача: найти записи по регистру "ЗапасЕды" // изменить их (например, удвоим количество) // и записать вместо старых // используем объектную технику получения движений, // ведь мы будем их изменять Поступление = ПоступлениеСсылка.ПолучитьОбъект(); // получим набор записей этого документа в регистр ЗапасыЕды НаборЗаписей = Поступление.Движения.ЗапасыЕды; // прочитаем записи из базы данных НаборЗаписей.Прочитать(); Для Каждого Запись Из НаборЗаписей Цикл // выведем старые значения Сообщить( Строка(Запись.ВидДвижения) + " " + Запись.Еда + " " + Запись.Количество ); // изменим запись, удвоив количество Запись.Количество = Запись.Количество * 2; КонецЦикла; // добавим новую запись НоваяЗапись = НаборЗаписей.ДобавитьПриход(); НоваяЗапись.Склад = Справочники.Склады.НайтиПоНаименованию("Основной"); НоваяЗапись.Еда = Справочники.Еда.НайтиПоНаименованию("Банан"); НоваяЗапись.Количество = 3; НоваяЗапись.Период = ТекущаяДата(); // разом запишем набор записей НаборЗаписей.Записать( Истина // удалим старые движения и запишем вместо них новые ); // теперь движения документа № ВМБП-000002 отличаются от тех, // что были записаны документом при проведении // чтобы вернуть их к начальному виду - нужно // перепровести документ КонецПроцедуры /// Как прочитать движения документа по регистрам запросом /// в 1с 8.3, 8.2 &НаСервере Процедура КакПрочитатьДвиженияДокументаЗапросомНаСервере() // этот приём используется, если не требуется изменять // найденные записи // предположим у нас есть ссылка на проведенный // документ поступления еды № ВМБП-000002 ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231'); // мы знаем, что этот документ делает записи по // двум регистрам: // - регистр накопления "ЗапасЕды" // - регистр бухгалтерии "Хозрасчетный" // прочитаем записи по регистру "ЗапасЕды" запросом Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗапасыЕды.НомерСтроки, | ЗапасыЕды.ВидДвижения, | ЗапасыЕды.Еда, | ЗапасыЕды.Количество |ИЗ | РегистрНакопления.ЗапасыЕды КАК ЗапасыЕды |ГДЕ | ЗапасыЕды.Регистратор = &ВыбРегистратор | |УПОРЯДОЧИТЬ ПО | ЗапасыЕды.НомерСтроки"; Запрос.УстановитьПараметр("ВыбРегистратор", ПоступлениеСсылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить( "#" + ВыборкаДетальныеЗаписи.НомерСтроки + " " + ВыборкаДетальныеЗаписи.ВидДвижения + " " + ВыборкаДетальныеЗаписи.Еда + " " + ВыборкаДетальныеЗаписи.Количество ); КонецЦикла; КонецПроцедуры /// Как изменить проведенный документ, не меняя его /// движений (проводок) в 1с 8.3, 8.2 &НаСервере Процедура КакИзменитьПроведенныйДокументНеМеняяЕгоДвиженийНаСервере() // бывает так, что есть проведенный документ // в уже закрытом периоде и нужно изменить // некоторое поле документа, но так чтобы // не поменялись проводки документа ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000005", '20141231'); // Изменим количество в табличной части этого документа // на 1, но чтобы проводки (движения) остались прежними Поступление = ПоступлениеСсылка.ПолучитьОбъект(); Для Каждого Строка Из Поступление.Еда Цикл Строка.Количество = 1; КонецЦикла; // если сейчас просто записать документ // изменятся его проводки, ведь он уже проведён // но если установить флаг Загрузка Поступление.ОбменДанными.Загрузка = Истина; // то можно записать проведенный документ // без повторного проведения Поступление.Записать(); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьПродажуПоНомеру(Номер, Интервал) Возврат Документы.ПродажаЕды.НайтиПоНомеру( Номер, Интервал ); КонецФункции /// Как открыть форму существующего документа /// по ссылке в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуСуществующегоДокумента(Команда) СсылкаНаДокумент = ПолучитьПродажуПоНомеру("ВМБП-000006", '20141231'); ПараметрыФормы = Новый Структура("Ключ", СсылкаНаДокумент); ОткрытьФорму( "Документ.ПродажаЕды.ФормаОбъекта", // имя формы ПараметрыФормы // параметры для формы ); КонецПроцедуры /// Как открыть форму выбора документа и /// отследить её закрытие в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуВыбораДокумента(Команда) ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораДокумента", ЭтотОбъект); ОткрытьФорму( "Документ.ПродажаЕды.ФормаВыбора",,,,,,ОповещениеОЗакрытии ); КонецПроцедуры &НаКлиенте Процедура ПослеВыбораДокумента(Результат, Параметры) Экспорт Если Результат <> Неопределено Тогда Сообщить("Был выбран документ " + Результат); КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция НайтиПоставщикаПоИмени(Имя) Возврат Справочники.Поставщики.НайтиПоНаименованию( Имя ); КонецФункции /// Как открыть форму списка (журнал) документов и /// с отбором по реквизиту в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуСпискаДокументовСОтбором(Команда) // откроем список поступлений, оставив // только те, что от поставщика ООО "Поле" ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Поставщик", НайтиПоставщикаПоИмени("ООО ""Поле""")); ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора); ОткрытьФорму( "Документ.ПоступлениеЕды.ФормаСписка", ПараметрыФормы ); КонецПроцедуры /// Как открыть форму только что созданного, но ещё /// не записанного документа в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуНовогоНеЗаписанногоДокумента(Команда) // получаем форму нового документа ФормаНовогоДокумента = ПолучитьФорму( "Документ.ПоступлениеЕды.ФормаОбъекта",,, Истина); // делаем копию её данных (так как напрямую их менять // нельзя) КопияДанныхФормы = ФормаНовогоДокумента.Объект; // заполняем эти данные на сервере ЗаполнитьДанныеФормыНаСервере(КопияДанныхФормы); // копируем заполненные данные в исходную форму КопироватьДанныеФормы(КопияДанныхФормы, ФормаНовогоДокумента.Объект); // показываем форму нового заполненного // документа пользователю ФормаНовогоДокумента.Открыть(); КонецПроцедуры &НаСервере Процедура ЗаполнитьДанныеФормыНаСервере(ДанныеФормы) // преобразуем данные формы в документ Поступление = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ПоступлениеЕды")); // заполним только табличную часть НоваяСтрока = Поступление.Еда.Добавить(); НоваяСтрока.Номенклатура = Справочники.Еда.НайтиПоНаименованию( "Банан" ); НоваяСтрока.Количество = 10; НоваяСтрока.Сумма = 550; // преобразуем документа обратно в данные формы ЗначениеВДанныеФормы(Поступление, ДанныеФормы); КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере
Содержание:
При реализации прикладных задач в программе 1С:Предприятие 8 у разработчика может возникнуть потребность использовать прикладные объекты ссылочного типа. У которых есть свойство «Наименование», но нет возможности с помощью встроенного языка 1С Предприятие обратиться «напрямую» к объекту базы данных 1С, как к предопределенному элементу справочника 1С т.к. они были созданы пользователем в информационной базе 1С 8.
Для решения таких задач можно воспользоваться методом «НайтиПоНаименованию», который присутствует у некоторых объектов конфигурации или с помощью объекта встроенного языка «Запрос».
1. Метод «НайтиПоНаименованию» в конфигурации «Справочник»
Иногда в компаниях реквизит «наименование» элемента справочника формируется пользователем в строго установленной последовательности. В наименовании элемента справочника может присутствовать какое-нибудь свойства товара.
У объекта конфигурации Справочник есть метод НайтиПоНаимнованию (Рис. 1).
Рисунок №1.
Наименование – тип Строка. Текст, по которому нужно найти.
Точное соответствие – тип булево. Истина – искать точное соответствие за исключением пробелов в конце наименования. Ложь – искать соответствие по левой части наименования.
Родитель – тип Справочник. В пределах которого нужно найти элемент справочника 1С.
Владелец – тип Справочник. В пределах которого нужно найти элемент справочника 1С.
Рисунок № 2.
Для иллюстрации будет приведен пример в демонстрационной базе 1С Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.112.34).
Запустим информационную базу в режиме Конфигуратор в 1С. Создадим обработку. В форме обработки создадим команду, реквизит формы (Рис. 3) и опишем действие команды (Рис. 4). Сохраним созданную обработку, как внешнюю обработку.
Рисунок №3.
Рисунок № 4.
Теперь можно запустить работу системы 1С: Предприятия 8.3 в пользовательском режиме. Открыть внешнюю обработку ввести текст в реквизит «Текст поиска». Введем текст «Шоколад» и нажмем команду «Найти».
Рисунок № 5.
Система нашла в справочнике «Номенклатура» первый попавшийся элемент. Система искала соответствие по левой части наименования.
2. Объект встроенного языка «Запрос»
Получить объект базы данных 1С также можно с помощью объекта встроенного языка «Запрос». Запустим информационную базу в режиме Конфигуратор в 1С. Изменим код встроенного языка 1С Предприятие в модуле формы внешней обработки (Рис. 6).
Рисунок № 6.
Сохраним изменения и запустим информационную базу в пользовательском режиме 1С.
Рисунок № 7.
Откроем внешнюю обработку, заполним реквизит «Текст поиска» (Рис. 7). Нажимаем команду «Найти». В результате на экран система выведет сообщения с наименованиями из справочника Номенклатура у которых левая часть наименования начинается с текста «Шоколад».
Специалист 1С компании «Кодерлайн»
Быков Владимир
|
|||
orda
29.07.13 – 13:50 |
Как найти документ (по дате и номеру)если тип документа – строка с именем типа. Типа “док=Документы.Найти[имя].найти по номеру()”? |
||
chelentano
1 – 29.07.13 – 13:51 |
Документы[Имя].НайтиПоНомеру? |
||
Cube
2 – 29.07.13 – 13:51 |
Документы[имя] не? |
||
wms
3 – 29.07.13 – 13:51 |
док=Документы.[имя].найтипономеру(дата,номер) порядок параметров не помню ищу всегда запросом |
||
orda
4 – 29.07.13 – 13:54 |
(1)-(3) значит так можно? Попробую. Спасибо. |
||
Maxus43
5 – 29.07.13 – 13:55 |
(4) непонятно почему сначала не попробовать, а сразу спрашивать тут |
||
wms 6 – 29.07.13 – 13:57 |
я запросом пишу, там можно отборы делать по организации, проведенные и прочее, типа : |
2 + 2 = 3.9999999999999999999999999999999…
У справочников в 1С есть встроенные функции для поиска в них элементов, к ним относится НайтиПоКоду, НайтиПоНаименованию и НайтиПоРеквизиту;
В данном случае рассмотрим поиск по наименованию.
Синтаксис:
Справочники.<НазваниеСправочника>.НайтиПоНаименованию (<Значение>, <ПоискПоПолномуСоответсвию>, <Родитель>, <Владелец>)
Параметры:
НазваниеСправочника — наименование справочника, к примеру Сотрудники.
Значение— значение в реквизите Наименование.
ПоискПоПолномуСоответсвию — По умолчанию установлен в значении Ложь, т.е. ищется соответствие левой части (пример: ищем Алекс то найдем Алексей). Но если установить в истину то поиск будет вестись по полному значению, кроме пробелов в конце строки. (необязательный)
Родитель — Ссылка на родителя. Поиск будет вестись только по тем элементам где указан данный родитель. (необязательный)
Владелец — Ссылка на элемент владельца справочника, указанного на закладке Владельцы. (необязательный)
Результат:
Если элемент не найден возвращается ПустаяСсылка, иначе ссылка на элемент.
Если существует несколько элементов, возвращается только 1.
Пример:
НаименованиеЭлемента = "Иванов Иван Иванович"; ТекСправочник = Справочники.Преподаватели; РезультатПоискаПоНаименованию = ТекСправочник.НайтиПоНаименованию(НаименованиеЭлемента); Если РезультатПоискаПоНаименованию = ТекСправочник.ПустаяСсылка() Тогда Сообщить("Не найден"); Иначе Сообщить(РезультатПоискаПоНаименованию.код); КонецЕсли;
Поиск с учетом родителя:
Университет = Справочники.Университеты.НайтиПоНаименованию("МГИМО");
Преподователь = ТекСправочник.НайтиПоНаименованию("Иванов Иваон Иванович",,Университет);