arefaste/1C_Forums huggingface dataset:
POST-запрос к HTTP-серверу
Теги: HttpСоединение,1С,XDTO,POST

POST-запрос к HTTP-серверу

# Код реализации

```1c
ЗаписьXML=Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();
Фабрика.ЗаписатьXML(ЗаписьXML, КонтрагентXDTO);//объект XDTO создан и заполнен ранее

Заголовки=Новый Соответствие();
Заголовки.Вставить("Content-Type","application/xml");
Заголовки.Вставить("Accept","application/xml");

Запрос=Новый HTTPЗапрос();
Запрос.АдресРесурса="clients/add";
Запрос.Заголовки=Заголовки;
Запрос.УстановитьТелоИзСтроки(ЗаписьXML.Закрыть());

Соединение=Новый HTTPСоединение("api.yourserver.ru");//таким образом полный URL запроса http://api.yourserver.ru/clients/add
Ответ=Соединение.ОтправитьДляОбработки(Запрос);
КодСостояния=Ответ.КодСостояния;
СтрокаОтвета=Ответ.ПолучитьТелоКакСтроку();
Если КодСостояния=201 тогда
	ЧтениеXML=Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(СтрокаОтвета);
	Попытка
		СтатусРаботыXDTO=Фабрика.ПрочитатьXML(ЧтениеXML,ФабрикаXDTO.Тип("http://api.yourserver.ru/xdto","Status"));
	Исключение
		Сообщить(СформироватьСообщениеОбОшибке(ИнформацияОбОшибке()));
		Предупреждение("Сервер прислал плохие данные!");
		Возврат;
	КонецПопытки;
	//обработка объекта XDTO
Иначе
	//обработка ошибочных кодов
КонецЕсли;
```

# Примечания

- Немного не так.
Сначала надо выяснить в каком формате принимает данные и в каком формате дает ответ. если действительно формат обмена xml, а не JSON то тогда код подходит.
GET-запрос к HTTP-серверу
Теги: HttpСоединение,1С,XDTO,GET

GET-запрос к HTTP-серверу

# Код реализации

```1c
Заголовки=Новый Соответствие();
Заголовки.Вставить("Content-Type","application/xml");
Заголовки.Вставить("Accept","application/xml");

Запрос=Новый HTTPЗапрос();
Запрос.АдресРесурса="clients/list";
Запрос.Заголовки=Заголовки;

Соединение=Новый HTTPСоединение("api.yourserver.ru");//таким образом полный URL запроса http://api.yourserver.ru/clients/list
Ответ=Соединение.Получить(Запрос);
КодСостояния=Ответ.КодСостояния;
СтрокаОтвета=Ответ.ПолучитьТелоКакСтроку();

Если КодСостояния=200 тогда
	ЧтениеXML=Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(СтрокаОтвета);
	Попытка
		КонтрагентыСписокXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ФабрикаXDTO.Тип("http://api.yourserver.ru/xdto","ClientList"));
	Исключение
		Сообщить(СформироватьСообщениеОбОшибке(ИнформацияОбОшибке()));
		Предупреждение("Сервер прислал плохие данные!");
		Возврат;
	КонецПопытки;
	//обработка объекта XDTO
Иначе
	//обработка ошибочных кодов
КонецЕсли;
```

# Примечания

- В конструкторе можно задать дополнительные параметры:
Новый HTTPСоединение(<Сервер>, <Порт>, <Пользователь>, <Пароль>, <Прокси>, <Таймаут>, <ЗащищенноеСоединение>, <ИспользоватьАутентификациюОС>) 

Например, для установки времени ожидания от сервера, можно задать параметр Таймаут в конструкторе:
Соединение = Новый HTTPСоединение(
                            "hostname",,,,,
                            30 // таймаут в секундах
                        );
Обрезка сигнатуры BOM
Теги: 1С,BOM

# Код реализации

```1c
Процедура ОбрезатьСигнатуру(ИмяФайла)

		Строка64		= Неопределено;
		Данные 			= Неопределено;
		Данные 			= Новый ДвоичныеДанные(ИмяФайла);
		Строка64		= Base64Строка(Данные);
		Строка64		= Прав(Строка64,СтрДлина(Строка64)-4);
		ДанныеНаЗапись 	= Base64Значение(Строка64);
		ДанныеНаЗапись.Записать(ИмяФайла);


КонецПроцедуры
```
Вывод произвольной Таблицы Значений в Табличный Документ
Теги: ТаблицаЗначений,1С,ТабличныйДокумент

Вывод произвольной Таблицы Значений (ТЗ) в Табличный Документ. 8.2

# Код реализации

```1c
Процедура ПоказатьТаблицуЗначений(РезультатТЗ )

	Построитель = Новый ПостроительОтчета;
	Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(РезультатТЗ);
	Построитель.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Асфальт);

	Построитель.Выполнить();
	Построитель.ВыводитьЗаголовокОтчета = Истина;
	Построитель.ТекстЗаголовка = "Данные таблицы значений";

	Для каждого Колонка Из Построитель.ВыбранныеПоля Цикл
	   Колонка.Представление = РезультатТЗ.Колонки[Колонка.Имя].Заголовок;
	КонецЦикла;

	МакетТД = Новый ТабличныйДокумент;
	Построитель.Вывести(МакетТД);
	ОбластьТД = МакетТД.Область();
	ОбластьТД.ШиринаКолонки = 20;
	МакетТД.ТолькоПросмотр = Истина;
	МакетТД.ФиксацияСверху = 4;
	МакетТД.ОтображатьЗаголовки = Истина;
	МакетТД.Показать();

КонецПроцедуры
```
Открыть отчет с пользовательскими настройками
Теги: СКД,УФ,1С,Отчет

# Код реализации

```1c
    Настройки = Новый НастройкиКомпоновкиДанных;
    Элемент = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товар");
    Элемент.ИдентификаторПользовательскойНастройки = "Идентификатор";

    ПараметрыФормы = Новый Структура("Вариант", Настройки);
    ОткрытьФорму("Отчет.ОстаткиТоваровНаСкладах.Форма", ПараметрыФормы);
```
Поиск по ГУИД в COM
Теги: 1С,GUID,COM

# Код реализации

```1c
Функция НайтиСсылкуНаСправочникПоУИД(СсылкаВБазе, ИмяСправочника, Соединение)

	Если НЕ ЗначениеЗаполнено(СсылкаВБазе) Тогда
		Возврат Соединение.Справочники[ИмяСправочника].ПустаяСсылка();
	КонецЕсли;

	УИДСтрокой = Строка(СсылкаВБазе.УникальныйИдентификатор());
	УИД = Соединение.NewObject("УникальныйИдентификатор", УИДСтрокой);

	СсылкаНаСправочник = Соединение.Справочники[ИмяСправочника].ПолучитьСсылку(УИД);
	Если Соединение.ОбщегоНазначения.СсылкаСуществует(СсылкаНаСправочник) = Ложь тогда
		Возврат Неопределено;
	КонецЕсли;

	Возврат СсылкаНаСправочник;

КонецФункции
```
Получить ссылку по типу и гуид
Теги: 1С

# Код реализации

```1c
Тип = Тип(ПоследняяОткрытаяСтрока.ТипЗначенияXML);
УИД = Новый УникальныйИдентификатор(ПоследняяОткрытаяСтрока.ЗначениеXML);
Массив = Новый Массив;
Массив.Добавить(УИД);
Значение = Новый (Тип, Массив);
```
Как выбрать наибольшее значение из ТЗ
Теги: Как выбрать наибольшее значение из ТЗ,1С

Как выбрать наибольшее значение из ТЗ

# Код реализации

```1c
ИстДанных = Новый ОписаниеИсточникаДанных(ТЗ);
ИстДанных.Колонки.Кол.Итог = "Максимум(Кол)" ;
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = ИстДанных;
Результат = ПостроительЗапроса.Результат; // тип РезультатЗапроса

ТЗРез = Результат.Выгрузить();
МаксКол = ТЗРез[0].Кол;
```
Раскрасить даты календаря
Теги: 1С,календарь,Дата

Процкдура раскрашивает даты в календаре

# Код реализации

```1c
Процедура ПроизводственныйКалендарьПриВыводеПериода(Элемент, ОформлениеПериода)
	Попытка
		МассивДат = ПоискДатВРегистреСведениийДатыКурсов ();
		Для Каждого ДатаПериода Из ОформлениеПериода.Даты Цикл
			Если МассивДат.Найти(ДатаПериода.Дата) <> Неопределено Тогда
				ДатаПериода.ЦветФона = webЦвета.БледноЗеленый;
			КонецЕсли;
			Если ДеньНедели(ДатаПериода.Дата)>=6 Тогда
				ДатаПериода.ЦветТекста = webЦвета.Красный;
			КонецЕсли;
		КонецЦикла;
	Исключение
	КонецПопытки;
КонецПроцедуры
```
Программное открытие отчета или обработки из справочника "ВнешниеОбработки"
Теги: ВнешнийОтчет,ВнешняяОбработка,1С

Функция открывает внешний отчет или обработку из справочника "ВнешниеОбработки", нужно передать только имя обработки.

# Код реализации

```1c
Функция ОткрытьВнешнийОтчет(ИмяОтчета) Экспорт

    ПутьКВременномуФайлу=КаталогВременныхФайлов()+
"ВременныйФайл" + формат(ТекущаяДата(),"ДФ=ddMMyyyyhhmmss")+ ".tmp";
    о = Справочники.ВнешниеОбработки.НайтиПоНаименованию(ИмяОтчета);

    Если о=Справочники.ВнешниеОбработки.ПустаяСсылка() Тогда
        Возврат неопределено;
    КонецЕсли;

    Справочники.ВнешниеОбработки.НайтиПоНаименованию(ИмяОтчета).ХранилищеВнешнейОбработки.Получить().Записать(ПутьКВременномуФайлу);

    Если о.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет Тогда
        ВнешниеОтчеты.ПолучитьФорму(ПутьКВременномуФайлу).Открыть();
    КонецЕсли;

    Если о.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Обработка Тогда
        ВнешниеОбработки.ПолучитьФорму(ПутьКВременномуФайлу).Открыть();
    КонецЕсли;

    УдалитьФайлы(ПутьКВременномуФайлу);

    Возврат неопределено;

конецфункции
```

# Примечания

- А есть БСП шная функция?

- (1) romankoav, я такой не знаю. Поиском тоже не нашел.
Добавить отбор в списке, в пользовательских настройках
Теги: СКД,УФ,1С

# Код реализации

```1c
Процедура УстановитьПользовательскийОтбор(КомпоновщикНастроек, Поле, ВидСравнения, Значение) Экспорт

	// Сначала найдем выделенный элемент отбора
	Для каждого ЭлементНастроек из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл

		Если ТипЗнч(ЭлементНастроек) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда

			ТекПоле = "";
			Для каждого ЭлементОтбора из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл

				Если ЭлементНастроек.ИдентификаторПользовательскойНастройки = ЭлементОтбора.ИдентификаторПользовательскойНастройки Тогда
					ТекПоле = ЭлементОтбора.ЛевоеЗначение;
					Прервать;
				КонецЕсли;

			КонецЦикла;

			Если Строка(ТекПоле) = Поле Тогда
				ЭлементНастроек.ВидСравнения   = ВидСравнения;
				ЭлементНастроек.ПравоеЗначение = Значение;
				ЭлементНастроек.Использование  = Истина;
				Возврат;
			КонецЕсли;

		КонецЕсли;

	КонецЦикла;

	// Найдем отбор
	Для каждого ЭлементНастроек из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл

		Если ТипЗнч(ЭлементНастроек) = Тип("ОтборКомпоновкиДанных") Тогда

			ТекОтборП = ТиповыеОтчеты_УправляемыйРежим.УстановитьОтбор(ЭлементНастроек, Поле, ВидСравнения, Значение);
			Прервать;

		КонецЕсли;

	КонецЦикла;

КонецПроцедуры
```
Последняя строка таблицы на одной странице вместе с подвалом
Теги: 1С,ВместеСоСледующим

# Код реализации

```1c
 //После цикла вывода строк

ТабДок.Область(ТабДок.ВысотаТаблицы, ,ТабДок.ВысотаТаблицы,).ВместеСоСледующим = Истина;
```
Удаление строк таблицы по условию
Теги: 1С

Обратный цикл по таблице значений с удалением строк по условию

# Код реализации

```1c
Для Индекс = -ТЗ.Количество()+1 По -1 Цикл
	Стр =ТЗ.Получить(-Индекс);
	Если Найти(Стр.Имя, "ПодстрокаПоиска") > 0 Тогда
		ТЗ.Удалить(Стр);
	КонецЕсли;
КонецЦикла;
```
Поиск кириллицы в строке
Теги: 1С,кириллица

Ищет кириллицу в строке.

# Код реализации

```1c
Функция ПоискКириллицы(Текст) Экспорт;
Для i=1040 по 1103 цикл
	Результат = Найти (Текст, Символ(i));
	Если Результат>0 Тогда
		Возврат Истина;
	КонецЕсли;
КонецЦикла;
Возврат Ложь;

КонецФункции;
```
транслитерация
Теги: транслитерация,1С

# Код реализации

```1c
Функция ЗаменитьСимволы (Источник,Текст,Замена) Экспорт
Результат = Текст;
Для Сч = 1 По СтрДлина(Источник) Цикл
Результат = СтрЗаменить(Результат,Сред(Источник,Сч,1),Сред(Замена,Сч,1));
КонецЦикла;
Возврат Результат;
КонецФункции

Функция Транслитерация(Знач Слово) Экспорт
Слово = НРег(Слово);
Слово=СтрЗаменить(Слово,"ш","sh");
Слово=СтрЗаменить(Слово,"щ","shh");
Слово=СтрЗаменить(Слово,"ж","zh");
Слово=СтрЗаменить(Слово,"ц","ts");
Слово=СтрЗаменить(Слово,"ь","'");
Слово=СтрЗаменить(Слово,"ъ", Символ(34)); //двойная кавычка
Слово=СтрЗаменить(Слово,"ч","ch");
Слово=СтрЗаменить(Слово,"её","yeyo");
Слово=СтрЗаменить(Слово,"ёе","yoye");
Слово=СтрЗаменить(Слово,"я","ya");
Слово=СтрЗаменить(Слово,"ю","yu");
Слово=СтрЗаменить(Слово," - ","-");
Слово=СтрЗаменить(Слово," -","-");
Слово=СтрЗаменить(Слово,"- ","-");
Слово=СтрЗаменить(Слово," ","-");
Слово=ЗаменитьСимволы("абвгдезийклмнопрстуфыэ",Слово,"abvgdezijklmnoprstufye");
Возврат Слово;
КонецФункции
```
Изменение формы справочника в зависимости от папки
Теги: 1С

# Код реализации

```1c
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)

	Если ВидФормы = "ФормаОбъекта" Тогда

		Если Параметры.Свойство("Ключ")
			И ОбщегоНазначенияСервер.ВходитВИерархию(Параметры.Ключ, Справочники.Проекты.ИнвестиционныеПроекты) Тогда

			СтандартнаяОбработка = Ложь;
			ВыбраннаяФорма       = "ФормаЭлементаУправляемая";

		ИначеЕсли Параметры.Свойство("ЗначенияЗаполнения")
			И Параметры.ЗначенияЗаполнения.Свойство("Родитель")
			И ОбщегоНазначенияСервер.ВходитВИерархию(Параметры.ЗначенияЗаполнения.Родитель, Справочники.Проекты.ИнвестиционныеПроекты) Тогда

			СтандартнаяОбработка = Ложь;
			ВыбраннаяФорма       = "ФормаЭлементаУправляемая";

		ИначеЕсли Параметры.Свойство("ЗначениеКопирования")
			И ОбщегоНазначенияСервер.ВходитВИерархию(Параметры.ЗначениеКопирования.Родитель, Справочники.Проекты.ИнвестиционныеПроекты) Тогда

			СтандартнаяОбработка = Ложь;
			ВыбраннаяФорма       = "ФормаЭлементаУправляемая";

		КонецЕсли;

	КонецЕсли;

КонецПроцедуры
```
Дополнительные свойства
Теги: УТ 10.3,1С,8.2,ДопСвойства

Изменение дополнительных свойств

# Код реализации

```1c
СвойствоДляИзменения = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("НаименованиеСвойства");
Если не Свойство.Пустая() Тогда
    Отбор = Новый Структура;
    Отбор.Вставить("Объект", ОбъектСсылка);
    Отбор.Вставить("Свойство", СвойствоДляИзменения);
    СвойствоДляИзменения = РегистрыСведений.ЗначенияСвойствОбъектов.Получить(Отбор).Значение;
    СвойствоДляИзменения = Истина;
КонецЕсли;
```
Создать отбор в скд
Теги: 1С,8.2

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

# Код реализации

```1c
//очистка тек. отбора
КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить();

НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Контрагент.ОсновнойМенеджерПокупателя");
НовыйЭлементОтбора.Использование  = Истина;
НовыйЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
НовыйЭлементОтбора.ПравоеЗначение = глЗначениеПеременной("глТекущийПользователь");

//очистим таб поле
ЭлементыФормы.Результат.Очистить();
//перекомпонуем результат
СкомпоноватьРезультат(ЭлементыФормы.Результат, ДанныеРасшифровки);
```
Запрос с нумерацией строк
Теги: 1С,запрос

хитрый запрос с нумерацией строк

# Код реализации

```1c
ВЫБРАТЬ
	                 |	ШтрихкодыНоменклатуры.Штрихкод,
	                 |	ШтрихкодыНоменклатуры.Номенклатура,
	                 |	ШтрихкодыНоменклатуры.Характеристика,
	                 |	ШтрихкодыНоменклатуры.Упаковка
	                 |ПОМЕСТИТЬ Нач
	                 |ИЗ
	                 |	РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
	                 |;
	                 |
	                 |////////////////////////////////////////////////////////////////////////////////
	                 |ВЫБРАТЬ
	                 |	Нач.Штрихкод,
	                 |	КОЛИЧЕСТВО(Нач1.Штрихкод) КАК ПорядковыйНомер
	                 |ИЗ
	                 |	Нач КАК Нач
	                 |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Нач КАК Нач1
	                 |		ПО Нач.Штрихкод >= Нач1.Штрихкод
	                 |
	                 |СГРУППИРОВАТЬ ПО
	                 |	Нач.Штрихкод
	                 |
	                 |УПОРЯДОЧИТЬ ПО
	                 |	ПорядковыйНомер
```
Значение из буфера обмена
Теги: 1С,8.2

Возвращает текстовое значение буфера обмена

# Код реализации

```1c
Функция ПолучитьТекстИзБуфераОбмена() Экспорт
  #Если Клиент Тогда
    Объект = Новый COMОбъект("htmlfile");
    Возврат Объект.ParentWindow.ClipboardData.Getdata("Text");
  #КонецЕсли
КонецФункции
```
Запрет выгрузки в КД по  дате запрета редактирования
Теги: КД,Дата запрета,1С

ПередКонвертациейОбъекта, глобальное событие

# Код реализации

```1c
// Выгружаем документы только по списку организаций.
МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(Источник));
Если МетаданныеОбъекта <> Неопределено
	И Метаданные.Документы.Содержит(МетаданныеОбъекта) Тогда

	Если МетаданныеОбъекта.Реквизиты.Найти("Организация") <> Неопределено Тогда

		ДатаЗапретаРедактирования = Параметры.ДатыЗапретаРедактирования[Источник.Организация.Код];
		Если ЗначениеЗаполнено(ДатаЗапретаРедактирования) Тогда

			Если Источник.Дата <= ДатаЗапретаРедактирования Тогда
				НеЗамещатьОбъектПриЗагрузке = Истина;
				ТолькоПолучитьУзелСсылки    = Истина;
			КонецЕсли;

		КонецЕсли;

	КонецЕсли;

КонецЕсли;
```
Значение полей в расшифровке СКД
Теги: СКД,расшифровка,1С

Значение полей в расшифровке СКД

# Код реализации

```1c
&НаСервереБезКонтекста
Функция ПолучитьЗначениеПоляРасшифровкиНаСервере(ИдентификаторРасшифровки, АдресДанныхРасшифровки)

    ДанныеРасшифровки = ПолучитьИзВременногоХранилища(АдресДанныхРасшифровки);
	ЭлементРасшифровки = ДанныеРасшифровки.Элементы[ИдентификаторРасшифровки];

	МассивРодителей = Новый Массив;
	МассивРодителей.Добавить(ЭлементРасшифровки.ПолучитьПоля());

	Родители = ЭлементРасшифровки.ПолучитьРодителей();
	ЗаполнитьМассивРодителей(МассивРодителей, Родители);

	Результат = Новый Соответствие;
	Для Счетчик = 1 по МассивРодителей.Количество() Цикл

		// Обойдем в обратном порядке, чтобы поставить условия в порядке группировок
		ПоляКомпоновки = МассивРодителей[МассивРодителей.Количество() - Счетчик];
		Для каждого ПолеКомпоновки из ПоляКомпоновки Цикл

			//Если ПолеКомпоновки.Иерархия Тогда
			//	Продолжить;
			//КонецЕсли;

			Результат.Вставить(ПолеКомпоновки.Поле, ПолеКомпоновки.Значение);

		КонецЦикла;

	КонецЦикла;

	Возврат Результат;

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

&НаСервереБезКонтекста
Процедура ЗаполнитьМассивРодителей(МассивРодителей, Родители)

	Для каждого Родитель из Родители Цикл

		Если ТипЗнч(Родитель) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда
			МассивРодителей.Добавить(Родитель.ПолучитьПоля());

		ИначеЕсли ТипЗнч(Родитель) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") Тогда

		КонецЕсли;

		Родители = Родитель.ПолучитьРодителей();
		Если Родители.Количество() > 0 Тогда
			ЗаполнитьМассивРодителей(МассивРодителей, Родители);
		КонецЕсли;

	КонецЦикла;

КонецПроцедуры
```
Запись в Журнал
Теги: 1С,Проверка

Журнал регистрации

# Код реализации

```1c
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстСообщения = НСтр("ru = 'Ошибка при регистрации компоненты comcntr.'") + Символы.ПС;
ДобавитьСообщениеДляЖурналаРегистрации(НСтр("ru = 'Регистрация компоненты comcntr'"), "Ошибка",
ТекстСообщения + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
ОбщегоНазначения.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации);
Предупреждение(ТекстСообщения + НСтр("ru = 'Подробн ости см. в Журнале регистрации.'"));
```
Установка границы
Теги: Граница,1С

Установка границы

# Код реализации

```1c
ПоследовательностьДляРегистрации = Последовательности.РасчетыПоПриобретениюОрганизации;
ПоследовательностьДляРегистрации.УстановитьГраницу(Новый МоментВремени(НачалоМесяца(НаДату)),Новый Структура("Организация",Организация));
ПоследовательностьДляРегистрации = Последовательности.РасчетыПоРеализацииОрганизации;
ПоследовательностьДляРегистрации.УстановитьГраницу(Новый МоментВремени(НачалоМесяца(НаДату)),Новый Структура("Организация",Организация));
```
Проверка существание ссылки в базе
Теги: 1С

Проверка существование ссылки в базе, объект не найден типовая функция БСП

# Код реализации

```1c
Функция СсылкаСуществует(ЛюбаяСсылка) Экспорт

	ТекстЗапроса = "
	|ВЫБРАТЬ
	|	Ссылка КАК Ссылка
	|ИЗ
	|	[ИмяТаблицы]
	|ГДЕ
	|	Ссылка = &Ссылка
	|";

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяТаблицы]", ЛюбаяСсылка.Метаданные().ПолноеИмя());

	Запрос = Новый Запрос;
	Запрос.Текст = ТекстЗапроса;
	Запрос.УстановитьПараметр("Ссылка", ЛюбаяСсылка);

	УстановитьПривилегированныйРежим(Истина);

	Возврат НЕ Запрос.Выполнить().Пустой();

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

# Примечания

- В типовых кофигурациях на базе БСП есть точно такой-же метод ОбщегоНазначения.СсылкаСуществует();
Изменение событий в отборе СКД
Теги: СКД,1С

Изменение событий в отборе СКД  (обычные формы)

# Код реализации

```1c
ЭлементыФормы.Отбор.Колонки.ПравоеЗначениеДляКраткогоОтображенияЭлемента.ЭлементУправления.УстановитьДействие("НачалоВыбора", Новый Действие("ОтборНачалоВыбора"));

Процедура ОтборНачалоВыбора(Элемент, СтандартнаяОбработка)

	ТекущиеДанные = ЭлементыФормы.Отбор.ТекущиеДанные;
	Если Строка(ТекущиеДанные.ЛевоеЗначение) = "Родитель" Тогда

		СтандартнаяОбработка = Ложь;
		Форма = Справочники.Номенклатура.ПолучитьФормуВыбораГруппы(, Элемент);
		Форма.Открыть();

	КонецЕсли;

КонецПроцедуры
```
Запрос через COM из .NET
Теги: .NET,С,1С,COM

Создает и выполняет запрос 1С через COM соединение

# Код реализации

```1c
class Program
    {
        static void Main(string[] args)
        {
            var v8comConnector = Type.GetTypeFromProgID("V83.ComConnector");
            var v8 = Activator.CreateInstance(v8comConnector);
            Object[] arguments = { @"File=""C:\Users\user\Documents\InfoBase2\"";" };
            var x = v8comConnector.InvokeMember("Connect", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v8, arguments);
            var query = InvokeObjectMethod(v8, x, "NewObject", new Object[] { "Запрос" });
            SetObjectProperty(v8, query, "Текст", new Object[] { "ВЫБРАТЬ Справочник1.Наименование ИЗ Справочник.Справочник1 КАК Справочник1" });
            var result = InvokeObjectMethod(v8, query, "Выполнить", new Object[] { });
            var selection = InvokeObjectMethod(v8, result, "Выбрать", new Object[] { });
            while ((bool)InvokeObjectMethod(v8, selection, "Следующий", new Object[] { }))
            {
                var name = GetObjectProperty(v8, selection, "Наименование");
                Console.WriteLine("Наименование: " + name);
            }
        }

        public static object GetObjectProperty(object v8, object refObject, string propertyName)
        {
            return v8.GetType().InvokeMember(propertyName, BindingFlags.GetProperty, null, refObject, null);
        }

        public static object SetObjectProperty(object v8, object refObject, string propertyName, Object[] value)
        {
            return v8.GetType().InvokeMember(propertyName, BindingFlags.SetProperty, null, refObject, value);
        }

        public static object InvokeObjectMethod(object v8, object refObject, string methodName, Object[] parameters)
        {
            return v8.GetType().InvokeMember(methodName, BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, refObject, parameters);
        }
    }
```
Блокировка
Теги: 1С,Блокировка

Блокировка

# Код реализации

```1c
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрНакопления.Стоимость");
ЭлементБлокировки.ИсточникДанных = РезультатЗапроса;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура","Номенклатура");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
БлокировкаДанных.Заблокировать();
```
глТекущийПользователь
Теги: 1С,глТекущийПользователь

глТекущийПользователь

# Код реализации

```1c
Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация");
ПодразделениеОрганизации = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновноеПодразделениеОрганизации");
ЦФО = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновноеПодразделение");
```

# Примечания

- Ещё можно получать через:
ПараметрыСеанса.ТекущийПользователь
Проверка запроса на пустоту
Теги: РезультатЗапроса,1С,Пустой

проверяю результат запроса на пустату, если есть данные то выполняю. Экономит время сервера.

# Код реализации

```1c
Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	ЕдиницыИзмерения.Коэффициент
		|ИЗ
		|	Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
		|ГДЕ
		|	ЕдиницыИзмерения.Ссылка = &Ссылка";

	Запрос.УстановитьПараметр("Ссылка", ЕдИзм);

	РезультатЗапроса = Запрос.Выполнить();

	Если РезультатЗапроса.Пустой() Тогда
		Возврат 0;
	КонецЕсли;
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); ВыборкаДетальныеЗаписи.Следующий();
	Возврат ВыборкаДетальныеЗаписи.Коэффициент;
```
Преобразование строки в число
Теги: вЧисло,1С

Преобразование строки в число без выбрасывания исключений при  получении числа в виде строи из внешних источников

# Код реализации

```1c
Функция вЧисло(Знач Парам)

	Парам = СтрЗаменить(Парам, Символы.НПП, "");
	Парам = СтрЗаменить(Парам, " ", "");
	Парам = СтрЗаменить(Парам, ",", ".");

	Попытка
		Возврат Число(Парам);
	Исключение
		Возврат 0;
	КонецПопытки;

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