Полезные функции БСП

29 Comments

  1. OtTech

    Вместо этого

    ФизЛицо = Пользователи.ТекущийПользователь().ФизическоеЛицо;

    Пользователь = Пользователи.ТекущийПользователь();

    не проще будет?

    Пользователь = ПараметрыСеанса.ТекущийПользователь;

    ФизическоеЛицо = ПараметрыСеанса.ТекущийПользователь.ФизическоеЛицо;

    Во всех типовых работает без проблем.

    Reply ↓
  2. Liily
    этот код вообще не рабочий, если внимательно посмотреть

    Всё работает.. СП пишет:

    Глобальный контекст (Global context)

    ПользователиИнформационнойБазы (InfoBaseUsers)

    Использование:

    Только чтение.

    Описание:

    Тип: МенеджерПользователейИнформационнойБазы.

    Используется для управления списком пользователей информационной базы.

    Доступность:

    Сервер, толстый клиент, внешнее соединение.

    Функции полезные. Имеет смысл вообще поразбираться в БСП и использовать уже написанные функции, чтобы не изобретать велосипед.

    Reply ↓
  3. slazzy

    (1) OtTech,

    не проще будет?

    Проще, но хуже. Всё дело в одном слове — стандартизация. В конфигурациях с использованием БСП рекомендуется использовать процедуры из модуля ПользователиКлиентСервер и никак иначе.

    Reply ↓
  4. davdykin

    В свете вышесказанного, а как можно с ней поразбираться? Т.е. есть какая-либо справочная информация по ней?

    Reply ↓
  5. slazzy

    (4) davdykin, вообще во всех модулях из БСП есть программный интерфейс(важные функции для работы) и они детально описаны, заходите — читаете 🙂 в основном самые частые функции в модулях ОбщегоНазначения… таких модулей как минимум несколько. Ну и на ИТС есть документация по БСП

    Reply ↓
  6. ediks

    (2) Вы хотите сказать, что у функция ПользователиИнформационнойБазы.ТекущийПользователь() возвращает элемент справочника Пользователи?

    Мне кажется, что Вы ошибаетесь, и код действительно нерабочий.

    МенеджерПользователейИнформационнойБазы.ТекущийПользователь (InfoBaseUsersManager.CurrentUser)

    МенеджерПользователейИнформационнойБазы (InfoBaseUsersManager)

    ТекущийПользователь (CurrentUser)

    Синтаксис:

    ТекущийПользователь()

    Возвращаемое значение:

    Тип: ПользовательИнформационнойБазы.

    Описание пользователя, аутентифицированного в текущем сеансе. Если список пользователей информационной базы пустой, то в качестве текущего пользователя будет возвращен пользователь с пустым именем и идентификатором объекта, полученного методом НайтиПоИмени, если в параметре указано пустое имя.

    Reply ↓
  7. Liily

    (6)

    Мне кажется, что Вы ошибаетесь, и код действительно нерабочий.

    Точно.. Посмотрела повнимательней. Именно так не работает. Извините.

    Reply ↓
  8. spec8s

    (7) Liily, нерабочий, тут нужно внимательнее смотреть на тип получаемого значения.

    Reply ↓
  9. AlX0id

    (1) OtTech,

    Сегодня это параметр сеанса ТекущийПользователь, завтра — предопределенный элемент справочника, послезавтра — запись регистра сведений (все приведенные данные являются выдумкой автора и совпадения случайны) ) На текущий момент, может быть и проще, в будущем — хуже.

    Reply ↓
  10. chmv

    Библиотека нужна, но лучше бы её писала сама фирма 1с

    Reply ↓
  11. rasswet

    спасибо за хорошее оформление и наличие примеров.

    Reply ↓
  12. ~ADm!t_@vd~

    Плюсую. Для себя по мере надобности тоже выдергиваю обращения к БСП и общим модулям, в виде шаблонов, чтобы потом не искать…

    Reply ↓
  13. RomanBor

    (10) chmv,

    Библиотека нужна, но лучше бы её писала сама фирма 1с

    вроде бы и пишет сама 1С называется Библиотека Стандартный Подсистем, или я чего то не знаю

    Reply ↓
  14. chmv

    Я имею ввиду стандартные конфигурации + встроенные функции системы

    Reply ↓
  15. jobkostya1c8

    Также программисту-разработчику полезно знать и заглядывать при доработке типовых конфигураций в первую очередь в общие модули (ОбщегоНазначения, ОбщегоНазначенияКлиентСервер, ОбработкаТабличныхЧастей, где прячутся очень нужные, универсальные функции и обычно без привязки к структуре метаданных. Если за 2 минуты ничего не приглянулось, приходится писать самому 🙁 Вот только в модуле ОбщегоНазначения на примере Розницы 1.0 столько же полезного:

    — Функция ЭтоСсылка(Тип) Экспорт

    // Проверить, что значение имеет ссылочный тип данных.

    //

    // Параметры:

    // Значение — ссылка на объект, — элемент справочника, документ, …

    //

    // Возвращаемое значение:

    // Булево — Истина, если тип значения ссылочный.

    //

    2. Функция ЗначениеСсылочногоТипа(Значение) Экспорт

    3. // Проверяет физическое наличие записи в информационной базе данных о переданном значении ссылки

    //

    // Параметры:

    // ЛюбаяСсылка — значение любой ссылки информационной базы данных

    //

    // Возвращаемое значение:

    // Истина — ссылка физически существует;

    // Ложь — ссылка физически не существует

    //

    Функция СсылкаСуществует(ЛюбаяСсылка) Экспорт

    Функция ЕстьНеЦифры(Знач СтрокаПроверки) Экспорт

    Функция ПолучитьВладельцаХарактеристики(Номенклатура) Экспорт

    Функция ПолучитьЗначениеПеременной(ИмяПараметра, Кэш = Неопределено, КэшИзменен = Ложь) Экспорт — Вот эта фунция при использвании в обработках проведения документов и перелопачиванию справочников позволяет в разы убыстрить работу, т.к. переменные читаются из базы только один раз и остаются в ОЗУ.

    Процедура ЗаписатьНаборЗаписейНаСервере(ИмяРегистра, Регистратор, ТаблицаДвижений = Неопределено) Экспорт

    Продолжать можно бесконечно. Самое веселое, что не найдешь функцию, напишешь, а потом вот она под носом была 🙂

    Reply ↓
  16. kser87

    (1) OtTech,

    ФизЛицо = Пользователи.ТекущийПользователь().ФизическоеЛицо;

    Пользователь = Пользователи.ТекущийПользователь();

    не проще будет?

    Пользователь = ПараметрыСеанса.ТекущийПользователь;

    ФизическоеЛицо = ПараметрыСеанса.ТекущийПользователь.ФизическоеЛицо;

    Не проверял, но скорее всего БСП-шная функция засунута в повторное использование. Поэтому типовую использовать правильнее

    Reply ↓
  17. vitaliy1911

    меня всегда дико радовала функция Просклонять в общем модуле ОбщегоНазначения. как она работает — загадка, но для различных отчетов вещь незаменимая

    Reply ↓
  18. nixel

    (4) davdykin, вы удивитесь, но… http://its.1c.ru/db/bspdoc

    Reply ↓
  19. DrAku1a

    1. — Костыль, фирменный — от 1С.

    3. — Есть реквизит в метаданных, серьёзно? За этим — в отдельный модуль ходить?

    МетаданныеОбъекта.Реквизиты.Найти(ИмяРеквизита)<>неопределено

    6. Оставляем только цифры от номера (без лидирующих нулей):

    Цифры=»123456789″;
    НомерОбъекта = СтрЗаменить(СтрЗаменить(СокрЛП(НомерОбъекта), » «, «»), Символы.НПП, «»);
    Пока НомерОбъекта<>»» и Найти(Цифры, Лев(НомерОбъекта, 1)=0 Цикл
    НомерОбъекта = Сред(НомерОбъекта, 2);
    КонецЦикла;

    Это ещё — не самый оптимальный вариант.

    PS.В целом же, модуль содержит много полезных и нужных функций.

    Reply ↓
  20. herfis
    СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку

    С 8.3.6 реализовано функцией платформы «СтрШаблон»

    Гораздо удобнее пользовать именно ее, т.к. вызов гораздо короче и код читабельнее выходит.

    А БСПшную скорее всего в очередной версии библиотеки задиприкейтят.

    Reply ↓
  21. capitan

    Идея хорошая, сам год назад пытался сделать вики в интернете по БСП, но не взлетело.

    Тут надо всем сообществом браться и делать что-то типа синтаксис помощника хотьбы и chm.

    Подозреваю у самих 1С он есть — а так надо из текстов модулей парсить.

    К тому же периодически 1С перетасовывает карты. И функции которые прекрасно работали канут в лету.

    Жизнь — странная штука. Когда у тебя на руках все козыри, она делает ход конем.

    Reply ↓
  22. herfis
    Идея хорошая, сам год назад пытался сделать вики в интернете по БСП, но не взлетело. 

    Понятно, почему не взлетело. Ведь идея так себе — скорее для новеньких/ленивых.

    Опытный разработчик обычно всегда знакомится с докой и API новых для него подсистем, чтобы не изобретать велосипедов и писать хороший код.

    Если новую конфу в руки берешь — первым делом общие модуля листаешь.

    Reply ↓
  23. capitan

    (22) herfis,

    Если новую конфу в руки берешь — первым делом общие модуля листаешь.

    А не упаришься общие модуля читать ?

    Сами 1С частенько не знают что у них в соседних модулях есть.

    Хочется примера? набери в глобальном поиске Новый ФТПСоединение

    В том то и дело, что у всех мало мальски приличных систем апи документирован.

    Намедни на aliexpess читал апи. Оченнно даже приличное апи.

    В гуглопереводе с китайского )

    Reply ↓
  24. c300pm

    неистово плюсую

    Reply ↓
  25. rusikgluki

    большое спасибо за ооочень хорошую статью..

    Reply ↓
  26. shumvlesu
  27. logarifm
  28. logarifm

    Как говорится не знание закона не освобождает от ответственности! Все в 1С есть и очень даже хорошо описано. В т.ч. с примерами

    Reply ↓
  29. binx

    за 3 года что-то могло измениться

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *