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

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

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

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

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

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

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

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз Наш выбор

Быстрое и надежное обновление файловых и серверных баз, защита от шифровальщиков, автоматическое обновление доработанных конфигураций и расширений, а также многое другое.
950 руб.

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

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

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

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

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

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

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

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

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

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

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

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

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

Boris911 21 1 1

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

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

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

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

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

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

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

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

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

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

Получение данных из буфера обмена

Получение данных из буфера
Boris911 21 1 1
Функция ПолучениеДанныхИзБуфера()
ТекстДанных = “”;
ОбъектВставки = Новый ComОбъект(“HTMLFILE”);
ТекстДанных = ОбъектВставки.ParentWindow.ClipboardData.GetData(“Text”);
Возврат ТекстДанных;
КонецФункции

Схема компоновки данных из запроса

Возвращает схему компоновки данных на основе текста запроса и параметров
SeiOkami 560 5 15 15
// Схема компоновки данных из запроса.
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/160
// 
// Параметры:
//  ТекстЗапроса - Строка
//  ПараметрыЗапроса - Структура
// 
// Возвращаемое значение:
//  СхемаКомпоновкиДанных
//
// Пример:
//  СКД = СхемаКомпоновкиДанныхИзЗапроса("ВЫБРАТЬ * ИЗ Справочник.Валюты");
//
Функция СхемаКомпоновкиДанныхИзЗапроса(ТекстЗапроса, ПараметрыЗапроса = Неопределено) Экспорт
	
	СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных();
	
	ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
	ИсточникДанных.Имя = "ЛокальнаяБаза";
	ИсточникДанных.СтрокаСоединения = "";
	ИсточникДанных.ТипИсточникаДанных = "Local";
	
	НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
	НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина;
	НаборДанных.Запрос = ТекстЗапроса;
	НаборДанных.Имя = "Запрос";
	НаборДанных.ИсточникДанных = ИсточникДанных.Имя;
	
	Если ЗначениеЗаполнено(ПараметрыЗапроса) Тогда
		Для Каждого КлючИЗначение Из ПараметрыЗапроса Цикл
			ПараметрЗапроса = СхемаКомпоновкиДанных.Параметры.Добавить();
			ПараметрЗапроса.Имя = КлючИЗначение.Ключ;
			ПараметрЗапроса.Значение = КлючИЗначение.Значение;
			ПараметрЗапроса.ОграничениеИспользования = Истина;
			ПараметрЗапроса.Использование = ИспользованиеПараметраКомпоновкиДанных.Всегда;
		КонецЦикла;
	КонецЕсли;
	
	КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных();
	КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    
    КоллекцияВыбранныхПолей = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.Выбор.Элементы;
	Для Каждого ДоступноеПоле Из КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.Элементы Цикл
		Если НЕ ДоступноеПоле.Папка Тогда
			ВыбранноеПоле = КоллекцияВыбранныхПолей.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
			ЗаполнитьЗначенияСвойств(ВыбранноеПоле, ДоступноеПоле, "Поле,Заголовок");
		КонецЕсли;
	КонецЦикла;
	
	Для Каждого Параметр Из КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы Цикл
		ИмяПараметра = Строка(Параметр.Параметр);
		Если СхемаКомпоновкиДанных.Параметры.Найти(ИмяПараметра) = Неопределено Тогда
			ПараметрСКД = СхемаКомпоновкиДанных.Параметры.Добавить();
			ПараметрСКД.Имя = ИмяПараметра;
			ПараметрСКД.Использование = ИспользованиеПараметраКомпоновкиДанных.Авто;
		КонецЕсли;
	КонецЦикла;
	
	ДетальныеЗаписи = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
	ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	
	Возврат СхемаКомпоновкиДанных;
	
КонецФункции

Шаблон внешней печатной формы на БСП с назначением

Коллеги, много видел тут шаблонов, но мне ни один не подошел. Пришлось писать свой, которым я решил поделиться. Версию БСП можете указывать свою, на версиях ниже не тестировалось. Отличительная особенность в возможности печати по-комплектно. Комментарии в ...

Это ошибка существования метода.

Метод проверяет является ли это ошибкой существования метода
SeiOkami 560 5 15 15
// Это ошибка существования метода.
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/158
// 
// Параметры:
//  ИнформацияОбОшибке - ИнформацияОбОшибке 
//  ИмяМетода - Строка
//  ПроверятьНаНеобъектныйТип - Булево - Если Истина, то ошибка "Значение не является объектного типа" тоже считается за ошибку отстуствия типа 
// 
// Возвращаемое значение:
//  Булево
//
// Пример:
// 
//  Попытка
//      Объект.НеобязательныйМетод();
//  Исключение
//      Если НЕ ЭтоОшибкаСуществованияМетода(ИнформацияОбОшибке(), "НеобязательныйМетод") Тогда
//          ВызватьИсключение;
//      КонецЕсли;
//  КонецПопытки;
//
Функция ЭтоОшибкаСуществованияМетода(ИнформацияОбОшибке, 
	ИмяМетода, ПроверятьНаНеобъектныйТип = Истина) Экспорт
	
	ОписаниеОшибки = ИнформацияОбОшибке.Описание;
	
	ВременныеОбъекты = Новый Массив; //Массив из Неопределено
	ВременныеОбъекты.Добавить(Новый Структура);
	
	Если ПроверятьНаНеобъектныйТип Тогда
		ВременныеОбъекты.Добавить();
	КонецЕсли;
	
	Для Каждого ВременныйОбъект Из ВременныеОбъекты Цикл
		
		Попытка
			ВременныйОбъект.СуперПуперМетод(); //@skip-check dynamic-access-method-not-found
		Исключение
			ВременноеОписание = СтрЗаменить(ИнформацияОбОшибке().Описание, "СуперПуперМетод", ИмяМетода);
			Если ОписаниеОшибки = ВременноеОписание Тогда
				Возврат Истина;
			КонецЕсли;
		КонецПопытки;
		
	КонецЦикла;
	
	Возврат Ложь;
	
КонецФункции

Определние ПустаяСсылка в Запросе

Часто в Запросе требуется проверить заполнение реквизита типа Справочник, Документ, Перечисление или другого ссылочного типа на заполненность.
ProxyInspector 93 5 3
//	ВидМаркированнойПродукции = Перечисление.ВидыМаркируемойПродукции
//      Выбираем элементы справочника Номенклатура 
//      Где заполнен реквизит "ВидМаркированнойПродукции"

Запрос = Новый Запрос;
	
	ТекстЗапроса = "
		|ВЫБРАТЬ
		|	Спр.Ссылка,
		|	Спр.ВидМаркированнойПродукции		
		|ИЗ
		|	Справочник.Номенклатура КАК Спр
		|	
		|ГДЕ 
		|	НЕ Спр.ВидМаркированнойПродукции.ССылка is NULL
		|";
	
	Запрос.Текст = ТекстЗапроса;
	
	Выборка = Запрос.Выполнить().Выбрать();

Меню обработки дополнительной расшифровки в табличном документе (не СКД)

Пример работы с расшифровкой и дополнительной расшифровкой. Выводит меню (контекстное по правой кнопке мыши) для дополнительной расшифровки табличного документа. Для обработки расшифровки требуется создать два события у табличного документа на форме: 20...

Свернуть таблицу значений на клиенте (ДанныеФормыЗначение)

Сворачивает реквизит формы типа "ТаблицаЗначений" на клиенте. Процедуру можно вставить в клиентский общий модуль и использовать для сворачивания таблицы значений (ДанныеФормыКоллекция) без серверного вызова. // Сворачивает ДанныеФормыКоллекция по указан...
Little Friend 29 2 1