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

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

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

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

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

tormozit 44 2 3
//.
// Возвращаемое значение:
//   Структура - значения положительны для месячных типов и отрицательны для секундных
Функция МножителиТиповПериодов() Экспорт
	Сутки = 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) - ВычитаемаяДата) / Множители[ТипПериода])
	КонецЕсли;
КонецФункции

TurboConf 6 - расширение Конфигуратора 1С Наш выбор

TurboConf повышает эффективность работы в Конфигураторе 1С и помогает программисту автоматизировать свои задачи.
bolsun
590 руб.

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

Часто при работе с Интернет ресурсами в ответ приходит строка JSON в неформатированном виде. Хочется получить эту строку с отступами и другими прикрасами
ProxyInspector 106 1 4 5
Функция ФорматироватьСтроку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 106 1 4 5
Функция СтрокаBase64(Стр, Кодировка = Неопределено, ЗаписатьBOM = Ложь) Экспорт
	
	Если НЕ ЗначениеЗаполнено(Кодировка) Тогда
		Кодировка = КодировкаТекста.UTF8;
	КонецЕСли;
	
	ДвоичныеДанныеСтроки = ПолучитьДвоичныеДанныеИзСтроки(Стр, Кодировка, ЗаписатьBOM);
	Результат = Base64Строка(ДвоичныеДанныеСтроки);
	
	Возврат Результат;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

Просклонять число лет

Формирует строку типа: "1 год", "2 года", "5 лет", "14 лет", "21 год" и т.д.
Функция ПросклонятьЧислоЛет(Знач ЧислоЛет)
   а = ПолучитьСклоненияСтрокиПоЧислу("год", ЧислоЛет, "",  "ЧС=Количественное", "ПД=Именительный")[0];
   Возврат СтрЗаменить(а,"годов","лет");
КонецФункции

Шаблон метода для заполнения Таблицы формы данными из СКД по макету

Например, в обработку можно добавлять макеты СКД, и в обработке использовать их для заполнения Дерева или Таблицы значений НаСервере Процедура ОбновитьДанныеТаблицы(Вариант = СворачиваниеНулевыхОстатков) ОбъектОбработки = РеквизитФормыВЗначение(Объек...
СергейТ 140 6 10

ИР Кнопка "Ловить изменение" в окне "Выражение"

Эта кнопка адаптера позволяет ловить изменение значения объектного выражения автоматической пошаговой отладкой. При ее нажатии сначала будет очищено табло. Далее адаптер будет с большой скоростью шагать отладчиком и проверять после каждого шага, изменилос...
tormozit 44 2 3

Получить уровень вложенности дерева значений

Функция вычисляет максимальную глубину (уровень вложенности) дерева значений.
Источник: https://t.me/by_1cnik
Функция ПолучитьМаксГлубинуДерева(ДеревоЗначений) Экспорт

   МаксГлубина = 0;
   Для Каждого Строка Из ДеревоЗначений.Строки Цикл
       МаксГлубина = Макс(МаксГлубина, РекурсивныйОбходДерева(Строка, 1));
   КонецЦикла;

   Возврат МаксГлубина;

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

Функция РекурсивныйОбходДерева(Строка, ТекущаяГлубина)

   МаксГлубина = ТекущаяГлубина;
   Для Каждого ПодчиненнаяСтрока Из Строка.Строки Цикл
       МаксГлубина = Макс(МаксГлубина, РекурсивныйОбходДерева(ПодчиненнаяСтрока, ТекущаяГлубина + 1));
   КонецЦикла;

   Возврат МаксГлубина;

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

// МаксГлубинаДерева = ПолучитьМаксГлубинуДерева(ДеревоЗначений);

ИР Кнопка "Сравнить" в окне "Отчет сравнения метаданных"

Эта кнопка адаптера формирует стандартный текстовый отчет об изменениях в окне сравнения конфигураций, разбивает его на левую и правую части и показывает их сравнение. Таким образом значительно упрощается восприятие различий, т.к. быстрее видно, что где до...
tormozit 44 2 3

Процедура Изобразить сканер штрих-кода

Имитация события от сканера штрихкода для отладки.
СергейТ 140 6 10
// Команда формы для вызова
&НаКлиенте
Процедура ИзобразитьСканерШК(Команда)
	
	ИзобразитьСканерШКДанныеВОсновных("68331545384715610814882357176103939876");
	
КонецПроцедуры

&НаКлиенте
Процедура ИзобразитьСканерШКДанныеВОсновных(Данные)
	
	ИмяСобытия = "ScanData";
	Источник = "ПодключаемоеОборудование";
	Параметр = Новый Массив;
	Параметр.Добавить(Данные);
	Параметр.Добавить(Неопределено);
	
	глПодключаемоеОборудованиеСобытиеОбработано = Ложь;
	
	Оповестить(ИмяСобытия, Параметр, Источник);
	
КонецПроцедуры

ИР Найти использование

Эта команда адаптера сначала делает переход к определению слова (метода или переменной) и затем вызывает штатную команду "Найти использование (ALT+F12)" на его определении. Пример работы команды на вызове метода
tormozit 44 2 3

ИР Кнопка "В табло" в окне "Выражение"

Эта кнопка адаптера добавляет в очередь добавления в табло путь к текущему свойству. После закрытия окна в табло автоматически добавляются все выражения накопленные в очереди и выводится уведомление с их списком.
tormozit 44 2 3

ИР Перейти в последние методы

Адаптер автоматически запоминает и помнит между сеансами последние методы, где выполнялось редактирование вызывались команды адаптера выполнялся переход в метод через список закладок, список методов Турбоконфа, список методов конфигуратора Команда "Перейти...
tormozit 44 2 3

ИР Найти следующий (выделенный)

Эта команда адаптера вызывает штатную команду "Найти следующий (F3)" или "Найти следующий выделенный (CTRL+F3)" конфигуратора и дополнительно выводит уведомление о достижении конца документа.
tormozit 44 2 3

Создание команды

Boris911 36 1 3
//Создание команды
	НоваяКоманда = ЭтаФорма.Команды.Добавить("ОбщаяКоманда");
	НоваяКоманда.Заголовок = "Общая команда";
	НоваяКоманда.Действие = "ОбщееДействие"; //указываем имя процедуры

Создание декорации картинки

Boris911 36 1 3
	НовыйЭлемент = ЭтаФорма.Элементы.Добавить("КартинкаТовара", Тип("ДекорацияФормы"),СтраницаТовары);
	НовыйЭлемент.Вид = ВидДекорацииФормы.Картинка;
	НовыйЭлемент.Картинка = БиблиотекаКартинок.ГеографическаяСхема;
	НовыйЭлемент.РазмерКартинки = РазмерКартинки.Растянуть;
	НовыйЭлемент.Ширина = 20;
	НовыйЭлемент.Высота = 8;