ZloyBrawler
Full Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору niko7 для БП 3.0 пример из своих наработок в одной внешней обработке обмена данными не с 1С базой последнюю функцию усек малость, у нас там отрабатывается ситуация еще, если артикул длиннее положенной длины текста в реквизите. Код: // Выводит сообщение пользователю. // // Параметры: // ТекстПредупреждения - Строка - Текст предупреждения выводящийся перед сообщением. // Сообщение - Строка - Текст сообщения. // Статус - СтатусСообщения - Статус сообщения. (обязательный, но никакого эффекта не оказывает в настоящей реализации метода, // может быть в будущем можно будет вывести иконки или просто символы, чтобы обозначить важность сообщений) // Процедура ВывестиСообщение(Знач ТекстПредупреждения = "", Знач Сообщение, Знач Статус) Экспорт ОбщегоНазначенияКлиентСервер.СообщитьПользователю(?(ТекстПредупреждения = "", "", ТекстПредупреждения + " ") + Сообщение); КонецПроцедуры // Осуществляет поиск первого элемента справочника удовлетворяющего условиям поиска. // // Параметры: // ИмяСправочника - Строка - Наименование справочника как оно задано в метаданных конфигурации. // ИмяРеквизита - Строка - Имя реквизита искомого элемента. // ЗначениеРеквизита - Произвольный - Значение реквизита искомого элемента. // ВыводитьПредупреждение - Булево - Выводить ли сообщения в случае неудачного поиска. // ТекстПредупреждения - Строка - Текст сообщения выводимый перед текстом ошибки. // // Возвращаемое значение: // СправочникСсылка - Ссылка на найденный элемент справочника. // Если элемент справочника не найден, возвращается пустая ссылка на элемент справочника. // Функция ПолучитьЭлементСправочника(Знач ИмяСправочника, Знач ИмяРеквизита, Знач ЗначениеРеквизита, Знач ВыводитьПредупреждение = Истина, Знач ТекстПредупреждения = "") ИмяРеквизита = СокрЛП(ИмяРеквизита); МенеджерСправочника = Справочники[ИмяСправочника]; Если ВРег(ИмяРеквизита) = "НАИМЕНОВАНИЕ" Тогда Объект = МенеджерСправочника.НайтиПоНаименованию(ЗначениеРеквизита); ИначеЕсли ВРег(ИмяРеквизита) = "КОД" Тогда Объект = МенеджерСправочника.НайтиПоКоду(ЗначениеРеквизита); Иначе Объект = МенеджерСправочника.НайтиПоРеквизиту(ИмяРеквизита, ЗначениеРеквизита); КонецЕсли; Если Не ЗначениеЗаполнено(Объект) Тогда Объект = МенеджерСправочника.ПустаяСсылка(); // чтобы наверняка пустая ссылка была Если ВыводитьПредупреждение Тогда ВывестиСообщение(ТекстПредупреждения, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( "Не удалось найти элемент справочника '%1' по условию '%2' = '%3'.", СокрЛП(Метаданные.Справочники[ИмяСправочника].Синоним), ИмяРеквизита, ЗначениеРеквизита), СтатусСообщения.Внимание); КонецЕсли; КонецЕсли; Возврат Объект; КонецФункции // Осуществляет поиск элемента справочника "Номенклатура" по артикулу. // // Параметры: // Артикул - Строка - Артикул искомого элемента. // ВыводитьПредупреждение - Булево - Выводить ли сообщения в случае неудачного поиска. // ТекстПредупреждения - Строка - Текст сообщения выводимый перед текстом ошибки. // // Возвращаемое значение: // СправочникСсылка.Номенклатура - Ссылка на найденный элемент справочника. // Если элемент справочника не найден, возвращается пустая ссылка на элемент справочника. // Функция ПолучитьНоменклатуруПоАртикулу(Знач Артикул, Знач ВыводитьПредупреждение = Истина, Знач ТекстПредупреждения = "") Экспорт Возврат ПолучитьЭлементСправочника("Номенклатура", "Артикул", Артикул, ВыводитьПредупреждение, ТекстПредупреждения); КонецФункции |
|