Все публикации

БСП
Разработки

Линейка - панель с номерами строк

Включает/отключает в окнах текстовых документов панель с отображением номеров строк
bolsun 495 6 11 12
Бесплатно

Преобразование JSON в структуру и обратно

Две экспортные функции для удобной работы с JSON. 1. Преобразовать строку JSON в структуру или соответствие 2. Преобразовать структуру в строку JSON (или записать в файл) Функция JSONВСтруктуру(СтрокаJSON, ПрочитатьВСоответствие=Ложь) Экспорт Если Пу...
ErLink 6 1

Синтакс-помощник БСП с нейросетевым ассистентом Наш выбор

Синтакс-помощник БСП - cправочник по библиотеке стандартных подсистем. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП. В справчоник добавлены ассистенты на базе нейросетевых моделей ИИ.
prog1c
1 800 руб.

Конвертация даты в UNIX и обратно

Подходит для интеграций с внешними системами, веб-сервисами и API, где используется UNIX-время. Функция ДатаВUNIX(Дата) Экспорт Результат = Число((Дата - '19700101') * 1000); Результат = Формат(Результат, ЧГ=); Возврат Результат; КонецФункции Функци...
ErLink 6 1

Удаление пустых строк

Удаление пустых строк в коде
Бесплатно

ИР Вставить со сравнением

Эта команда адаптера открывает сравнение выделенного текста с текстом буфера обмена с синтаксической подсветкой. После нажатия кнопки "Применить" выполняется замена выделенного текста на текст из буфера и вставленный фрагмент остается выделенным.
tormozit 62 2 4

Вызов метода API

Пример POST-запроса к API
bolsun 495 6 11 12
Функция ПримерВызоваМетодаAPI()
	
	Соединение = Новый HTTPСоединение("https://<адрес API>",,,,,5,Новый ЗащищенноеСоединениеOpenSSL);

	Запрос = Новый HTTPЗапрос();
	
	Запрос.АдресРесурса = "/api/v1/echo";
	Запрос.Заголовки.Вставить("Authorization", "Ключ сервиса");
	Запрос.Заголовки.Вставить("Content-Type", "application/json");
	
	ДанныеДляПередачи = Новый Структура("data");
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, Символы.Таб);
	ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
	ЗаписатьJSON(ЗаписьJSON, ДанныеДляПередачи);
	ТелоЗапросаСтрока = ЗаписьJSON.Закрыть();
	
	Запрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрока);
	
	ОтветHTTP = Соединение.ВызватьHTTPМетод("POST", Запрос);
	
	КодСостояния = ОтветHTTP.КодСостояния;
	
	Если КодСостояния < 200 Или КодСостояния >= 300 Тогда
		Сообщить("Ошибка " + КодСостояния + " подключения к сервису " + ОтветHTTP.ПолучитьТелоКакСтроку());
		Возврат Неопределено;
	КонецЕсли;
	
	СтрокаJSON = ОтветHTTP.ПолучитьТелоКакСтроку();	
	
	Возврат СтрокаJSON;
	
КонецФункции

Поиск всех вхождений регулярного выражения в исходной строке

Функция СтрНайтиВсеПоРегулярномуВыражению() доступна в платформе «1С:Предприятие» версии 8.3.23 и выше. // определим количество закрывающих тегов блоков item КоличествоСтрок = СтрНайтиВсеПоРегулярномуВыражению(ТекстПакета, /.*_item, Истина).Количество(...

FastCode AI (ИИ помощник в Конфигураторе 1С)

Добавляет возможности использования ИИ в Конфигураторе 1С с TurboConf.
bolsun 495 6 11 12
Бесплатно

ИР Кнопка "В json-конструктор" в окне "Выражение"

Эта кнопка адаптера сериализует текущий объект в JSON и генерирует функцию-конструктор для типизирующих комментариев анализатора кода ИР <iframe width="560" height="315" src="https://www.youtube.com/embed/SZLeHbYpPDY?si=oyKTPWMl55zjdQm_" title="YouTube vi...
tormozit 62 2 4

Високосный ли год?

Функция определяет, високосный ли год по григорианскому календарю (полное правило). Платформа "1C:Предприятие.Элемент Скрипт" method Leap(year:Number):Boolean case True when year % 400 == 0 return True when year % 100 == 0 ...

Синоним из идентификатора

Из идентификатора "МояТаблицаTable" формирует строку "Моя таблица table" Минимальная версия платформы: 8.3.23 Функция СинонимИзИдентификатора(Идентификатор) Возврат СокрЛП(ВРЕГ(Лев(Идентификатор,1)) + нрег(СтрЗаменитьПоРегулярномуВыражению(Сред(Иденти...

Проверить расположен ли один элемент управляемой формы внутри другого

tormozit 62 2 4
// Проверить расположен ли элемент управляемой формы ПроверяемыйЭлемент внутри элемента Родитель.
// Параметры:
//   Родитель - ГруппаФормы, ТаблицаФормы, ФормаКлиентскогоПриложения - 
//   ПроверяемыйЭлемент - ПолеФормы, ГруппаФормы, ТаблицаФормы, КнопкаФормы, ДекорацияФормы - 
// Возвращаемое значение:
//   Булево - 
Функция ЛиВнутриРодителяФормыЛкс(Знач Родитель, Знач ПроверяемыйЭлемент) Экспорт
	ТекущийРодитель = ПроверяемыйЭлемент;
	Пока Истина Цикл
		Если ТекущийРодитель = Родитель Тогда
			Возврат Истина;
		КонецЕсли;
		Если ТипЗнч(ТекущийРодитель) = Тип("ФормаКлиентскогоПриложения") Тогда
			Возврат Ложь;
		КонецЕсли;
		ТекущийРодитель = ТекущийРодитель.Родитель;
	КонецЦикла; 
КонецФункции

ИР Проверить модуль (CTRL+F7)

Эта команда адаптера улучшает штатную команду "Проверить модуль" конфигуратора: Очищает окно сообщений (есть опция в Турбоконфе) Запускает штатную проверку модуля конфигуратора Дожидается ее завершения Активирует первое сообщение об ошибке в окне сообщений...
tormozit 62 2 4

Аналоги функций ДобавитьКДате и РазностьДат языка запросов

tormozit 62 2 4
//.
// Возвращаемое значение:
//   Структура - значения положительны для месячных типов и отрицательны для секундных
Функция МножителиТиповПериодов() Экспорт
	Сутки = 24*60*60;
	Множители = Новый Структура("Год, Полугодие, Квартал, Месяц,    Декада,   Неделя,     День,    Час, Минута, Секунда",
			                     12,          6,       3,     1, -10*Сутки, -7*Сутки, -1*Сутки, -60*60,    -60,      -1);
	Возврат Множители;
КонецФункции 

// Аналог функции ДобавитьКДате языка запросов.
// Параметры:
//   ИсходнаяДата - Дата - 
//   ТипПериода - Строка - имя типа периода аналогично языку запросов, регистр букв не важен
//   Количество - Число - допускается отрицательное
// Возвращаемое значение:
//   Дата - 
Функция ДобавитьКДате(Знач ИсходнаяДата, Знач ТипПериода, Знач Количество = -1) Экспорт
	ТипПериода = ВРег(ТипПериода);
	Если Найти("ГОД;КВАРТАЛ;ПОЛУГОДИЕ;МЕСЯЦ;", ТипПериода + ";") > 0 Тогда
		Если Цел(Количество) <> Количество Тогда
			ВызватьИсключение "Количество должно быть целым числом для типа периода " + ТипПериода;
		КонецЕсли;
	КонецЕсли;
	Множители = МножителиТиповПериодов();
	Если Не Множители.Свойство(ТипПериода) Тогда
		ВызватьИсключение "Неподдерживаемый тип периода: " + ТипПериода;
	КонецЕсли;
	Если Множители[ТипПериода] > 0 Тогда
		Возврат ДобавитьМесяц(ИсходнаяДата, Количество * Множители[ТипПериода]);
	Иначе
		Возврат ИсходнаяДата - Количество * Множители[ТипПериода];
	КонецЕсли;
КонецФункции 

// Аналог функции РазностьДат языка запросов.
// Параметры:
//   ВычитаемаяДата - Дата - которую вычитаем
//   ИсходнаяДата - Дата - из которой вычитаем
//   ТипПериода - Строка - имя типа периода аналогично языку запросов, регистр букв не важен
// Возвращаемое значение:
//   Число - ИсходнаяДата-ВычитаемаяДата
Функция РазностьДат(Знач ВычитаемаяДата, Знач ИсходнаяДата, Знач ТипПериода) Экспорт
	Множители = МножителиТиповПериодов();
	Если Не Множители.Свойство(ТипПериода) Тогда
		ВызватьИсключение "Неподдерживаемый тип периода: " + ТипПериода;
	КонецЕсли;
	Если Множители[ТипПериода] > 0 Тогда
		Возврат Цел((Год(ИсходнаяДата)   * 12 + Месяц(ИсходнаяДата)   - 1) / Множители[ТипПериода])
			  - Цел((Год(ВычитаемаяДата) * 12 + Месяц(ВычитаемаяДата) - 1) / Множители[ТипПериода])
	Иначе
		Возврат Цел((Дата(1,1,1) - ИсходнаяДата)   / Множители[ТипПериода])
			  - Цел((Дата(1,1,1) - ВычитаемаяДата) / Множители[ТипПериода])
	КонецЕсли;
КонецФункции

Форматирование строки JSON

Часто при работе с Интернет ресурсами в ответ приходит строка JSON в неформатированном виде. Хочется получить эту строку с отступами и другими прикрасами
ProxyInspector 112 1 5 4
Функция ФорматироватьСтрокуJSON(СтрокаJSON, ПереносСтрокJSON, СимволыОтступа = " ", ИспользоватьДвойныеКавычки = Истина, ЭкранированиеСимволов = Неопределено) 	
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
	Структура = ПрочитатьJSON(ЧтениеJSON, Ложь);
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON, СимволыОтступа, ИспользоватьДвойныеКавычки, ЭкранированиеСимволов);
	ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
	
	ЗаписатьJSON(ЗаписьJSON, Структура);
	
	СтрокаJSON = ЗаписьJSON.Закрыть();

	Возврат СтрокаJSON;
	
КонецФункции

Преобразование Строки в строку Base64

Иногда при работе с WEB сервисами возникает задача преобразовать строку в строку Base64
ProxyInspector 112 1 5 4
Функция СтрокаBase64(Стр, Кодировка = Неопределено, ЗаписатьBOM = Ложь) Экспорт
	
	Если НЕ ЗначениеЗаполнено(Кодировка) Тогда
		Кодировка = КодировкаТекста.UTF8;
	КонецЕСли;
	
	ДвоичныеДанныеСтроки = ПолучитьДвоичныеДанныеИзСтроки(Стр, Кодировка, ЗаписатьBOM);
	Результат = Base64Строка(ДвоичныеДанныеСтроки);
	
	Возврат Результат;
	
КонецФункции

ИР Кнопка "ОК" в окне "Тип вызова" для расширения метода

Эта кнопка адаптера замещает штатную кнопку "ОК" в окне "Тип вызова" при создании расширения метода, чтобы автоматически вставлять корневую инструкцию препроцессора в модуль расширения. Это очень важно для расширения модулей менеджеров для обеспечения их к...
tormozit 62 2 4

Преобразовать Структуру в Таблицу значений (одну строку)

Например, при передаче данных в запрос в качестве таблицы с одной строкой. // Преобразовать Структуру в Таблицу значений (одну строку) // Каждое значение станет колонкой в таблице значений, // тип значения в колонке будет определён по содержащемуся в по...
СергейТ 156 1 6 9

ИР Измененные модули

Эта команда адаптера открывает в приложении ИР список измененных модулей кэша по отношению к папке Гита. Двойной клик на изменном модуле открывает его сравнение с версией Гита в окне "Сравнение текстов", откуда можно открыть VS Code для выборочного отката ...
tormozit 62 2 4

Проверка пересечения периодов (интервалов дат) в запросе

Функция для проверки, есть ли документы с тем же интервалом дат, что и заданный.
BobrAl 16 1 1

//Истина - есть пересечения
//Ложь - пересечений нет.
Функция ЕстьПересечениеДат(НачалоПериода, КонецПериода)
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ВашДокумент.Ссылка
		|ИЗ
		|	Документ.ВашДокумент КАК ВашДокумент
		|ГДЕ
		|	ПлановыйГрафикРаботы.Проведен
		|	И &НачалоПериода < ВашДокумент.КонецПериода
		|			И &КонецПериода > ВашДокумент.НачалоПериода";
	
	Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
	Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
	
	РезультатЗапроса = Запрос.Выполнить();  	
	Возврат Не РезультатЗапроса.Пустой();

КонецФункции