10 функций БСП, которые должен знать каждый программист 1С
HTML-код
- Опубликовано: 8 окт 2023
- 🔴В этом видео мы покажем вам 10 функций из 1С:БСП, которые должен знать каждый программист 1С. Эти функции помогут писать код быстрее и сделают ваш код более компактным.
💥 Записаться на курс "Программист 1С: с нуля до профи": ironskills.by/kursi/programmi...
Поддержать канал:
donate.stream/ya410011655962993
✅Подписывайтесь на наш канал чтобы первыми получать новые видео.
#1с #ironskills #1с_бсп
---
С уважением, команда IRONSKILLS
Нужно больше таких видео, что бы молодые "программисты" не изобретали велосипед.
У тебя не оспоримый плюс - очень хорошо поставленная дикция. Восприятие материала на уровне Гилева. Но и реальные кейсы рассматриваешь (не академические), это круто, особенно для джунов.
Одни не оспоримые плюсы. Минусов нет.
Супер, емко, информативно, без лишней воды, обожаю ваши видео, спасибо!
Всегда без воды, четко и по делу. Всегда лайк
Отличное видео! Можно даже вывести в отдельный формат, думаю многим будет полезно.
Спасибо за видео, очень познавательно. Побольше бы таких кратких, но ёмких уроков.
Круто, Иван!) Благодарю за ценную лекцию. Был бы рад курсу по БСП.
Отличное видео, без лишней воды, все по делу. Спасибо!
Половина для себя приметил)) спасибо большое! Ещё хотим))
Как всегда на высоте, спасибо большое за видео)
Какой хороший выпуск, большое спасибо!!!
Отлично, еще один повод покопаться в дебрях общих модулей! :)
Супер! Спасибо! Больше бы таких видео!
Спасибо, очень классно рассказано и показано, прям с удовольствием посмотрел
огонь, спасибо, Иван
Часто использую большинство из этих функции. Спасибо за материал.
Познавательно, спасибо! А если запишите такое же краткое видео про оптимизицию, явные и неявные вызовы - было бы супер!
Быстро, четко, как всегда - топ!
Как всегда Лайк! Спасибо
Спасибо Вам за полезные видео)
Все чётко и быстро. Спасибо!
Превосходно, собственно как и всегда. 🎉
Спасибо большое, очень полезно.
Редко выходишь, давай почаще)
Отличное видео, спасибо!
Круто, Вань! Можно сделать такие видосы на постоянной основе. Рассмотреть какие-то еще полезные фишки БСП ))
Выучу наизусть просто! ❤❤❤
Какого было мое удивление, когда я откопал эти функции, после того, как большую часть из них писал самостоятельно под определенные задачи)
Всегда очень приятная подача материала.
Спасибо!
Супер!
Огонь. Вы молодей. 1000 лайков
очень круто!
Наконец-то, давно ждал что-то про бсп)
Так все ж в документации лежит )) Читайте и юзайте интефейсную часть.
Отлично! Взяла!
Ваня, ты как всегда супер! так бы курсы 1с-овские проводили..
Ваня очень крутой. Спасибо!
Ты лучший! 👍
Иногда, создавать свои велосипеды полезно для саморазвития.
С этим не поспоришь)
спасибо
Про все знал, только не всегда при работе вспоминаю о них)
У автора большой талант в подаче материала!
Спасибо)
отлично видео. Предложение для следующего ролика: сохраняемые данные на форме (через хранилище или через отметку "Сохранить"). Правильный порядок получения и примеры работы с ними, с учетом стандартов 1С
Спасибо большое за идею для ролика)
Спасибо! Очень полезно! Можно еще видео, со следующими 10 функциями БСП?
Сделаем)
когда уже, нужно чтобы вы выделили и описали ещё 20-30 самых частых функций, будет полезно очень многим, я поставлю свечку и помолюсь за вас@ills-1c
Благодарю! Очень полезная информация.
П.С.Подскажите, пожалуйста, а какой программой видеомантажа вы пользуетесь в данном видео?...
1 с
Хорошие программы для монтажа: Adobe premiere pro, DaVinci Resolve
Ничего нового не узнал, но новичкам полезно
Спасибо огромное за ваши полезные видео! Можно узнать что за консоль такая интересная в видео используется?
Спасибо за комментарий) Консоль создавали для студентов наших курсов на основе вот этой: github.com/salexdv/bsl_console
Один из самых понятных источников информации по 1С в интернете!
Спасибо :)
Умопомрачительно!
Четко, держи подписку
Добро пожаловать! :)
выкладывайте больше видео плиииз
Иван, спасибо, тебе и твоей команде! Очень помогаете разбираться в тонкостях работы 1С. И еще может подскажете, недавно столкнулся с задачей, в которой на входе получал дату типа "17 декабря 2023" (строка), далее эту дату нужно было преобразовать в 17.12.2023 (дата). Есть ли типовая функция выполняющая данное действие?
Есть. Называется Формат
К сожалению, для преобразования строки вида "17 декабря 2023" в дату готовой функции нет - нужно писать свою: получать части строки (день, месяц, год), составлять строку вида "YYYYMMDD", и уже её преобразовывать к дате)
Можно видео для магазина с покупка продаж склад и кассой пж😊
Еще как вариант можно сделать видео на тему. Как сделать макеты печатных форм доступными к редактированию пользователем. Не совсем там все очевидно. Даже опытные программисты бывает не справляются
Спасибо за идею)
6:00 есть ещё вариант, где в значения реквизитов объекта передаётся вторым параметром не список реквизитов через запятую, а структура - в которой ключи это желаемые нами предоставления реквизитов, а значения - собственно имена реквизитов в конфигураторе
Там еще круче можно сделать со структурой, т.е. ключ это псевдоним, а в значении можно указать через точку. Например так Новый Структура("ИНН", "Товар.ОсновнойПоставщик.ИНН")
@@timurdanilenko3582 и даже можно туда выражения писать - например "ОбщегоНазначения.ПолучитьЗначенияРеквизитов(Стр.Контрагент,
Новый Структура("КонтрагентКод, КонтрагентНаименование, КонтрагентЕДРПОУ, КонтрагентGLN, КонтрагентАдрес",
"Код", "Наименование", "ОКПО", "К2_GLN", "ОсновнойАдресДоставки.Улица + "", "" + ОсновнойАдресДоставки.Дом"))"
Ваня, ты даёшь хорошие знания, спасибо тебе. Можно спросить, как ты этой всей информации владеешь, по каким источникам изучаешь?. Заранее спасибо.
Спасибо за комментарий) Конкретно для изучения БСП можно начать с документации на ИТС. Всё помнить нереально, самое главное - много практики, учиться регулярно, ну и любить своё дело)
Строка в число не сделает того что сделает
Функция ПривестиСтрокуКЧислу(ЧислоСтрокой, ВозвращатьНеопределено = Ложь)
ОписаниеТипаЧисла = Новый ОписаниеТипов("Число");
ЗначениеЧисла = ОписаниеТипаЧисла.ПривестиЗначение(ЧислоСтрокой);
Если ВозвращатьНеопределено И (ЗначениеЧисла = 0) Тогда
Стр = Строка(ЧислоСтрокой);
Если Стр = "" Тогда
Возврат Неопределено;
КонецЕсли;
Стр = СтрЗаменить(СокрЛП(Стр), "0", "");
Если (Стр "") И (Стр ".") И (Стр ",") Тогда
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
Возврат ЗначениеЧисла;
КонецФункции
За видео спасибо!
Был бы рад, если-б записали видео по блокировкам...
... Начитался ИТС-а, инфостарт-а ... В голове каша. Хрен поймешь ка правильно блокировать остатки, чтобы избежать излишних блокировок. Как работать с конфой если у неё стоит управляемые, а на объекте(регистр накопления) автоматические. Что за исключительная ситуация и т.д.
Заранее спасибо.
Большое спасибо за классную идею для видео, сделаем ;)
Эх вот бы еще простыми словами объяснить фоновое многопоточное выполнение внешних обработок с возвратом результата во время работы.
Всё классно. Один минус: научишься применять БСП, будешь тупить там, где БСП нет.
Прошу Вас рассмотреть тему для новых видео: rls. Как настраивать ограничения доступа на уровне записей на стороне конфигурации. Спасибо!
Спасибо за идею для ролика)
Спасибо! Очень полезно! А можно где-то скачать консоль кода?
Можно вот тут глянуть пример консоли: github.com/salexdv/bsl_console
Меня больше консоль кода заинтересовала)
Мы дорабатывали под себя вот эту: github.com/salexdv/bsl_console
Спасибо за видео! Скажите, а в ЗначениеРеквизитаОбъекта(Ссылка, "ИмяРеквизита") можно ли через Имя реквизита сразу достать что-то по точке? Например, "ФизическоеЛицо.Код"? Или для таких случаев нужна другая функция? Или последовательно вызывать ЗначениеРеквизитаОбъекта(), получая сначала реквизит, затем от реквизитам опять ЗначениеРеквизитаОбъекта()? Всегда интересовал этот вопрос :) Спасибо!
Да, через точку тоже можно ;)
1. Нужны таймкоды
2. Нужно описание ключевых моментов для улучшенного поиска
Топ
Функции есть для создания пользователя в 1с с ролями типа администратор только чтение и тд?
Спасибо, смотрю и понимаю, что велосипедов я уже изобрела😅
Хорош
Иван, клаасная тема! Поделитесь консолью
Мы дорабатывали консоль под себя на основе вот этой: github.com/salexdv/bsl_console
@@ironskills-1cкак то заполучить доработанную можно?
Объясните молодому, пожалуйста
1) Для чего использовать длинные вызовы, если можно показать сообщение через "Сообщить()"?
2) Из строки в число можно преобразовать через функцию "Число()" - это короче
3) Из строки в дату вроде тоже работает через функцию "Дата()"
Здравствуйте!)
1. Метод Сообщить() считается устаревшим, для вывода сообщений рекомендуется использовать объект СообщениеПользователю
2. Да, через Число() можно, но будет исключение при попытке преобразовать к числу значение, которое не может быть преобразовано к числу, например, такую строку "абв". Функции БСП используют для преобразования объект ОписаниеТипов, это не приводит к исключениям в ситуации, описанной выше.
3. Тут смысл такой же как в пункте 2: если к дате не получится привести значение, функция Дата() вызовет исключение, а метод БСП - нет :)
А что за трэк играет на фоне?
Функция ФамилияИнициалы Экспортная. Но в Документообороте когда пишешь скрипт в автоподстановке для объектов такой функции нет, а можно узнать почему?
Очень полезно. А где такую консоль взять?
В видео используем доработанную консоль, за основу брали вот эту: github.com/salexdv/bsl_console
Про свернуть массив не знал :)
Иван, как называется шрифт установленный в консоли?
consolas - для программного кода, прям отличный)
МЕГА!!!
Оч круто, жалко что функций, маловато)
Функций много. Но всю БСП в 12 минут не уложишь. :)
Почему нельзя сразу на уровне платформы вытаскивать не весь объект, а только сам реквизит, при обращении к нему через точку?
Спасибо! По БСП вообще ни книгу не найти, ни доступной официальной документации (ИТС пробник на неделю, потом только закрытая для клиентов). Интересно, выгрузка ТЗ в массив структур (AoS), а не в структуру массивов (SoA) выбрали из практики, или по аналогии с табличной моделью, для удобства перебора строками?
Со структурой массивов на практике не очень удобно работать, удобнее с массивом структур)
Структура хорошо подходит для хранения данных строки табличной части. Одна строка табличной части - одна структура, коллекция строк табличной части - массив структур)
Иван привет, как можно тебе написать? по сотрудничеству
Привет!) Можно написать на email, который в разделе "Контакты" на нашем сайте (ironskills.by)
🥰💥❤💋
А почему на 4:20 в рабочих базах так не надо делать? Можете, пожалуйста, дать пояснения?
Поиск по коду и по наименованию - это очень ненадежно, т.к. код и наименование элемента справочника могут поменяться (либо пользователь изменит, либо какой-либо алгоритм, например, при обмене)
А можно спросить мне нужно лицензионный программу и чтобы там были функции все. Отчет учётов, бух учет, банковские отчеты , таможенный функция, приемка товара где его скачать я сам живу в Азербайджане
Программу можно купить у партнеров фирмы 1С, список партнеров в вашем регионе: clck.ru/36Jb97
Пожалуйста! СКАЖИТЕ!!! Как запоминать все модули по которым раскиданы эти функции? Я могу запомнить что есть готовая возможность в БСП, например доставать ФИО, или правильно вытаскивать значения реквизитов. Как запомнить в каком модуле это искать?
Можно не запоминать, а использовать Шаблоны текста в 1С.
Создаешь новый шаблон, указываешь Название: "Строка в число", Автоматически заменять строку: "БСП[Строки]", Текст шаблона: "СтроковыеФункцииКлиентСервер.СтрокаВЧисло(Сумма);".
В коде, когда тебе нужно будет вызвать функцию СтрокаВЧисло, просто пишешь "БСПС" (БСПСтроки), нажимаешь Ctrl+q, появится форма с выбором шаблона "Строка в число", выбираешь нужный шаблон, текст шаблона автоматически появится в редакторе текста
Часть этих функций и есть велосипеды. Утешает только, что они от самой 1С )
Это да)
Где можно взять такую "Консоль кода" ?
В видео используется доработанная консоль, на основе вот этой: github.com/salexdv/bsl_console
про блокировку забыли сказать. при объектном чтении блокировка может быть наложена при наличии табличных частей
Спасибо за уточнение)
добрый вечер Иван откуда можно получить этого БСП бесплатно
а где такую консольку кода можно приобрести?
Вот тут можно скачать бесплатно похожую: github.com/salexdv/bsl_console
Спасибо!
@@ironskills-1c
Большое спасибо!@@ironskills-1c 🙂
А версия бсп какая ,где появились эти апи?не слова
В версиях 3.1.5 и выше эти функции уже точно есть, в более младших - надо проверить в документации)
А через точку достает табличные части, или ссылку на табличные части?
Если ссылка то не так и много достает
Проблема програмистов 1С что сильно учат оптимизировать, местами через-чур,
вот недавно встретился - передал(1с 10 лет опыт) в процедуру с формы два параметра, потом чтото поменялось и бери меняй ту процедуру после него; а можно было передать туда сразу ссылку и из нее достать что надо(пусть даже через точку что быстрее и меньше заморачиватся); неудобно передавать параметры, нужно передавать объекты используемые
А так &НаСервереБезКонтекста больше оптимизирует чем операция через точку(достанет подумаешь 5 реквизитов и 3 ссылки на таб части, зато скорость написания выше в раза 2)
Могу конечно ошибатся, сразу таб части достает через точку или всетаки ссылки на таб части?
Ох меня сейчас заплюют)
Согласен, больше на предварительную оптимизацию походит. В узких местах можно его использовать, но на постоянной основе это ухудшает читаемость, вынуждая отходить от объектного подхода, плюс потом искать куда сложнее, где использовался реквизит объекта. Также зачастую при вызове другого метода либо передаётся куча параметров, либо ссылка + повторный запрос, так что тут ещё смотреть надо, когда это действительно влияет положительно. Сходу из кейсов только обращение к разным обьектам в цикле приходит на ум.
А почему не использовать функцию всторенного языка Дата(), И Число() уже давно платформа роспознает НПП-пробел
М - мутабельность. Поэтому нельзя передавать сложные типы с сервера на клиент.
В чем преимущество бсп перед запросами? Так же лишнего нет.
ЗначениеВМассиве тоже
Да, спасибо, это тоже полезная функция)
А почему просто нельзя Число() использовать? Также быстрее)
Функция из БСП не выбрасывает исключение, если переданное знание не может быть преобразовано в число, а возвращает Неопределенно. Ещё при просмотре удивился, почему автор не уточнил этот момент. Ведь сразу возникает данный очевидный вопрос.
Спасибо за уточнение) Да, стоило об этом сказать, согласен)
Консольку очень хотелось бы получить ...
Можно вот тут похожую скачать: github.com/salexdv/bsl_console
@@ironskills-1c Такая уже давно есть, спасибо. Тогда вопросик - у Вас есть что-то типа справочника алгоритмов. А где Вы храните алгоритмы для внешней обработки? Или при старте считываете какую-то папку?
1) А как отработает сообщить на сервере? Я был уверен, что это только клиентская процедура. Кому мы что на сервере может сообщить? Ведь именно так объясняют разницу между клиентом (не берем про производительность) и сервером. ЧТо на клиенте можно показать что то, а на сервере нет.
2) Зачем так много функций Значение(я)Реквизита(ов)Объекта? Почему нельзя использовать самую универсальную функцию ЗначенияРеквизитовОбъектов, даже для 1 реквизита и объекта?
При вызове метода Сообщить() на сервере, сообщения выводятся пользователю после того, как управление будет передано на клиент. Пока управление не передано обратно на клиента, можно получить массив сообщений методом глобального контекста ПолучитьСообщенияПользователю().
Подробнее можно тут почитать про это: its.1c.ru/db/metod8dev/content/3442/hdoc
По 2-му вопросу - можно и одну функцию использовать, но это не всегда удобно: при получении значения одного реквизита через функцию ЗначенияРеквизитовОбъектов() получим соответствие, и из него ещё нужно будет "достать" само значение) А если использовать ЗначениеРеквизитаОбъекта(), то значение реквизита будет возвращено сразу)