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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Создание декорации надпись

Boris911 36 1 3

	НовыйЭлемент = ЭтаФорма.Элементы.Добавить("ИмяДекорации", Тип("ДекорацияФормы"),СтраницаТовары);
	НовыйЭлемент.Вид = ВидДекорацииФормы.Надпись;
	НовыйЭлемент.Заголовок = "ЗаголовокДляОтображения";

Создать группу формы

Создание различных групп формы
Boris911 36 1 3
	//Группы
	
	//Пример создания обычной группы без отображения
	ГруппаДатаНомер = ЭтаФорма.Элементы.Добавить("ГруппаОбычная", Тип("ГруппаФормы"),ЭтаФорма);
	ГруппаДатаНомер.Вид = ВидГруппыФормы.ОбычнаяГруппа;
	ГруппаДатаНомер.Отображение = ОтображениеОбычнойГруппы.Нет;
	ГруппаДатаНомер.ОтображатьЗаголовок = ЛОЖЬ; 
	ГруппаДатаНомер.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда;
	
	//Пример создания обычной группы
	ГруппаШапка = ЭтаФорма.Элементы.Добавить("ГруппаШапка", Тип("ГруппаФормы"),ЭтаФорма);
	ГруппаШапка.Вид = ВидГруппыФормы.ОбычнаяГруппа;
	ГруппаШапка.Заголовок = "Основные реквизиты";
	ГруппаШапка.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение;
	ГруппаШапка.ОтображатьЗаголовок = ИСТИНА; 
	ГруппаШапка.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
	ГруппаШапка.РастягиватьПоГоризонтали = ИСТИНА;
	
	//Пример создания группы страниц
	ГруппаСтраниц = ЭтаФорма.Элементы.Добавить("ГруппаСтраницы", Тип("ГруппаФормы"),ЭтаФорма);
	ГруппаСтраниц.Вид = ВидГруппыФормы.Страницы;
	ГруппаСтраниц.ОтображениеСтраниц = ОтображениеСтраницФормы.ЗакладкиСверху;
	ГруппаСтраниц.РастягиватьПоГоризонтали = ИСТИНА;
	
	//Пример создания страниц
	
	СтраницаТовары = ЭтаФорма.Элементы.Добавить("СтраницаТовары", Тип("ГруппаФормы"),ГруппаСтраниц);
	СтраницаТовары.Вид = ВидГруппыФормы.Страница;
	СтраницаТовары.Заголовок = "Товары";
	
	СтраницаДополнительно = ЭтаФорма.Элементы.Добавить("СтраницаДополнительно", Тип("ГруппаФормы"),ГруппаСтраниц);
	СтраницаДополнительно.Вид = ВидГруппыФормы.Страница;
	СтраницаДополнительно.Заголовок = "Дополнительно";

Программно создать новый реквизит

Создание нового реквизита программно
Boris911 36 1 3
ДобавляемыеРеквизиты = Новый Массив; //Определяем массив добавляемых реквизитов

РеквизитКомментарий = Новый РеквизитФормы("Комментарий",Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(500))); 
ДобавляемыеРеквизиты.Добавить(РеквизитКомментарий ); 
НомерРеквизит = Новый РеквизитФормы("Номер",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,0))); 
ДобавляемыеРеквизиты.Добавить(НомерРеквизит);
ДатаРеквизит = Новый РеквизитФормы("Дата",Новый ОписаниеТипов("Дата",,,Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя))); 
ДобавляемыеРеквизиты.Добавить(ДатаРеквизит);
НаименованиеРеквизит = Новый РеквизитФормы("Наименование",Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(150))); 
ДобавляемыеРеквизиты.Добавить(НаименованиеРеквизит);

ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеРеквизиты); //Применяем реквизиты

Загрузка данных копипастом

Показываем пользователю табличный документ. Туда он может скопипастить данные откуда пожелает. Дальше следующие 3 строчки кода позволяют загрузить эти данные в таблицу значений
nik.lankaster 19 1 1
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());  	
	
ТабДанные = Построитель.Результат.Выгрузить();

Отбор при начале выбора Групп и элементов (УФ)

Пример кода открытия УФ с установкой Выбора Групп и элементов
Boris911 36 1 3
Процедура ОсновнаяТЗГруппаЦенНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("РежимВыбора",Истина);
    ПараметрыФормы.Вставить("МножественныйВыбор",Ложь);
    ПараметрыФормы.Вставить("ЗакрыватьПриВыборе",Истина);
    ПараметрыФормы.Вставить("ВыборГруппИЭлементов",ИспользованиеГруппИЭлементов.Группы);
	
	ОО = Новый ОписаниеОповещения("ПослеВыбораГруппыСкидок",ЭтаФорма);
	
    ОткрытьФорму("Справочник.СкидкиНаценки.ФормаВыбораГруппы",ПараметрыФормы,ЭтаФорма,,,,ОО);
КонецПроцедуры