По теме из базы знаний
- Как красиво и профессионально вести (оформлять) разработку в 1С
- Универсальная печатная форма Приказа/Договора с возможностью настройки макета в пользовательском режиме
- Интеграция с Трелло. Готовый код
- Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3
- Самые используемые методы БСП 3.1.9
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Если это ЗуП то там точно фио в разных реквизитах хранится
то это делается так
Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>)
Параметры:
<Строка> (обязательный)
Тип: Строка. Исходная строка.
<НачальныйНомер> (обязательный)
Тип: Число. Начальный номер символа, с которого начинается выборка. Нумерация символов в строке начинается с 1.
<ЧислоСимволов> (необязательный)
Тип: Число. Количество выбираемых символов. Если параметр не указан, то выбираются символы до конца строки.
Возвращаемое значение:
Тип: Строка. Строка выбранных символов.
Описание:
Выбирает строку символов, начиная с символа <НачальныйНомер>, общим количеством <ЧислоСимволов>.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:
// Пусть номер автомобиля в справочнике основных средств задается
// в виде х999хх99, где последние две цифры - код региона.
// Получим цифровую часть номера.
ЦифрыНомера = Сред(ОсновноеСредство.ГосНомер, 2, 3);
то это делается так
Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>)
Параметры:
<Строка> (обязательный)
Тип: Строка. Исходная строка.
<НачальныйНомер> (обязательный)
Тип: Число. Начальный номер символа, с которого начинается выборка. Нумерация символов в строке начинается с 1.
<ЧислоСимволов> (необязательный)
Тип: Число. Количество выбираемых символов. Если параметр не указан, то выбираются символы до конца строки.
Возвращаемое значение:
Тип: Строка. Строка выбранных символов.
Описание:
Выбирает строку символов, начиная с символа <НачальныйНомер>, общим количеством <ЧислоСимволов>.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:
// Пусть номер автомобиля в справочнике основных средств задается
// в виде х999хх99, где последние две цифры - код региона.
// Получим цифровую часть номера.
ЦифрыНомера = Сред(ОсновноеСредство.ГосНомер, 2, 3);
Парсить строку по пробелам и получать отдельно имя фамилию и отчество, а из них инициалы. Правда тут будет важен порядок указания фамилии, имени и отчества, да и подумать, как обрабатывать, если фамилия из нескольких слов какая то, для иностранцев, например.
ПРИМЕР:
ЗапросК = Новый Запрос;
ЗапросК.Текст =
"ВЫБРАТЬ
| ПРЕДСТАВЛЕНИЕ(ОтветственныеЛицаОрганизацийСрезПоследних.Должность) КАК Должность,
| ФИОФизЛицСрезПоследних.Фамилия,
| ФИОФизЛицСрезПоследних.Имя,
| ФИОФизЛицСрезПоследних.Отчество
|ИЗ
| РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(
| &ДатаДокумента,
| СтруктурнаяЕдиница = &Организация
| И ОтветственноеЛицо = &ОтветственноеЛицо) КАК ОтветственныеЛицаОрганизацийСрезПоследних
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
| ПО ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо = ФИОФизЛицСрезПоследних.ФизЛицо";
ЗапросК.УстановитьПараметр("ОтветственноеЛицо", Перечисления.ОтветственныеЛицаОрганизаций.РуководительКадровойСлужбы);
ЗапросК.УстановитьПараметр("ДатаДокумента", Дата);
ЗапросК.УстановитьПараметр("Организация",Организация);
РезультатК = ЗапросК.Выполнить();
ВыборкаДетальныеЗаписиК = РезультатК.Выбрать();
ЗапросК.Выполнить();
Пока ВыборкаДетальныеЗаписиК.Следующий() Цикл
ОбластьМакетаПодвал.Параметры.ЗамПоКадрам = ВыборкаДетальныеЗаписиК.Должность;
ОбластьМакетаПодвал.Параметры.ФИОЗамПоКадрам = Лев(ВыборкаДетальныеЗаписиК.Имя,1)
+". "+Лев(ВыборкаДетальныеЗаписиК.Отчество,1)+". "
+ВыборкаДетальныеЗаписиК.Фамилия+"";
КонецЦикла;
Показать
(11) rhtr, Немного некропостинга, но можно немножко по 2гому. в запросе есть ПОДСТРОКА();
Вставте в запрос: ФИОФизЛицСрезПоследних.Фамилия + "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) + ""."" + ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) + ""."" КАК ФИОЗамПоКадрам
В нужном порядке/разделителями
Вставте в запрос: ФИОФизЛицСрезПоследних.Фамилия + "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) + ""."" + ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) + ""."" КАК ФИОЗамПоКадрам
В нужном порядке/разделителями
// Функция формирует фамилию и инициалы либо по наименованию элемента спр-ка ФизическиеЛица
// либо по переданным строкам.
// Если передан Объект, то извлеченная из него строка считается совокупностью
// Фамилия + Имя + Отчество, разделенными пробелами.
//
// Параметры
// Объект - строка или ссылка или объект элемента спр-ка ФизическиеЛица.
// Фамилия - фамилия физ. лица.
// Имя - имя физ. лица.
// Отчество - отчество физ. лица.
//
// Возвращаемое значение
// Фамилия и Инициалы одной строкой. Побочные эффекты - переданная целая строка
// Побочные эффекты - переданная целая строка разбивается на подстроки, соответствующие
// отдельным Фамилии,Имени и Отчеству
//
Функция ФамилияИнициалыФизЛица(Объект = "", Фамилия = " ", Имя = " ", Отчество = " ") Экспорт
ТипОбъекта = ТипЗнч(Объект);
Если ТипОбъекта = Тип("Строка") Тогда
ФИО = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СокрЛП(Объект)," ");
ИначеЕсли ТипОбъекта = Тип("СправочникСсылка.ФизическиеЛица") или ТипОбъекта = Тип("СправочникОбъект.ФизическиеЛица") Тогда
ФИО = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СокрЛП(Объект.Наименование)," ");
Иначе
// используем возможно переданные отдельные строки
Возврат ?(НЕ ПустаяСтрока(Фамилия),
Фамилия + ?(НЕ ПустаяСтрока(Имя)," " + Лев(Имя,1) + "." + ?(НЕ ПустаяСтрока(Отчество),Лев(Отчество,1)+".", ""), ""),
"")
КонецЕсли;
КоличествоПодстрок = ФИО.Количество();
Фамилия = ?(КоличествоПодстрок > 0,ФИО[0],"");
Имя = ?(КоличествоПодстрок > 1,ФИО[1],"");
Отчество= ?(КоличествоПодстрок > 2,ФИО[2],"");
Возврат ?(НЕ ПустаяСтрока(Фамилия),
Фамилия + ?(НЕ ПустаяСтрока(Имя)," " + Лев(Имя,1) + "." + ?(НЕ ПустаяСтрока(Отчество),Лев(Отчество,1)+".", ""), ""),
"");
КонецФункции
Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",",
Знач ПропускатьПустыеСтроки = Неопределено) Экспорт
Результат = Новый Массив;
// для обеспечения обратной совместимости
Если ПропускатьПустыеСтроки = Неопределено Тогда
ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
Если ПустаяСтрока(Строка) Тогда
Если Разделитель = " " Тогда
Результат.Добавить("");
КонецЕсли;
Возврат Результат;
КонецЕсли;
КонецЕсли;
//
Позиция = Найти(Строка, Разделитель);
Пока Позиция > 0 Цикл
Подстрока = Лев(Строка, Позиция - 1);
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
Результат.Добавить(Подстрока);
КонецЕсли;
Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
Позиция = Найти(Строка, Разделитель);
КонецЦикла;
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
Результат.Добавить(Строка);
КонецЕсли;
Возврат Результат;
КонецФункции
Показать
В УТ (11.3.4.197) так:
Есть ФизическиеЛицаКлиентСервер.ФамилияИнициалыФизЛица(), но написано устарело.
ФИОФизическогоЛица = ФизическиеЛицаКлиентСервер.ЧастиИмени(СокрЛП(ФИОДиректораСтрока)); // разбиваем на части
ФамилияИнициалы = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(ФИОФизическогоЛица);
Есть ФизическиеЛицаКлиентСервер.ФамилияИнициалыФизЛица(), но написано устарело.
1С:Комплексная автоматизация 2 (2.5.7.394)
// Формирует строку, содержащую фамилию и инициалы физического лица.
// Строка формируется в зависимости от типа переданного параметра:
// - либо по истории ФИО элемента справочника ФизическиеЛица,
// - либо разбором строки, содержащей полную ФИО.
//
// Параметры:
// ФизическоеЛицо - Строка, СправочникСсылка.ФизическиеЛица - источник информации о ФИО
// Дата - Дата - дата для получения истории ФИО, имеет смысл если в первом параметре передана ссылка.
//
// Возвращаемое значение:
// Строка - Фамилия И. О.
//
Функция ФамилияИнициалыФизЛица(ФизическоеЛицо, Дата = Неопределено) Экспорт
ФамилияИнициалы = "";
ФизическиеЛицаЛокализация.ДополнитьФамилияИнициалыФизЛица(ФизическоеЛицо, ФамилияИнициалы, Дата);
Возврат ФамилияИнициалы;
КонецФункции
Показать
ФИОСокращенная = СтрШаблон("%1 %2.%3.",ТекПользователь.ФизическоеЛицо.Фамилия,Лев(ТекПользователь.ФизическоеЛицо.Имя,1),Лев(ТекПользователь.ФизическоеЛицо.Отчество,1));
Руководители = ОтветственныеЛицаБП.ОтветственныеЛица(Реквизиты.Организация, ВыборкаСФ.Дата, Реквизиты.Подразделение);
(23) я немного по другому делаю
ФиоИнициалы = СтрРазделить(Фио, " ")[0] + " " + СтрЗаменить(СтрРазделить(Фио, " ")[1], Сред(СтрРазделить(Фио, " ")[1], 2, СтрДлина(СтрРазделить(Фио, " ")[1])-1), ". ") + СтрЗаменить(СтрРазделить(Фио, " ")[2], Сред(СтрРазделить(Фио, " ")[2], 2, СтрДлина(СтрРазделить(Фио, " ")[2])-1), ". ")
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот