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

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 не будет опубликован. Обязательные поля помечены *