# Документация программиста



# Генератор пароля в форме

1\. Генератор пароля в форме элемента справочника по нажатию кнопки.

```
Функция ГенерацияСлучайногоПароля(Длина) 
	ГСЧ = Новый ГенераторСлучайныхЧисел();    
	СлучайнаяСтрока = "";
	Для Счет = 1 по Длина Цикл        
		Набор = ГСЧ.СлучайноеЧисло(1,3);    
		Если Набор = 1 Тогда           
			СлучайныйСимвол = Символ(ГСЧ.СлучайноеЧисло(48,57));
		ИначеЕсли Набор = 2 Тогда
			СлучайныйСимвол = Символ(ГСЧ.СлучайноеЧисло(65,90));
		ИначеЕсли Набор = 3 Тогда
			СлучайныйСимвол = Символ(ГСЧ.СлучайноеЧисло(97,122));
		КонецЕсли;			
		СлучайнаяСтрока = СлучайнаяСтрока + СлучайныйСимвол;
	КонецЦикла;      
	Возврат(СлучайнаяСтрока);
КонецФункции
```

2\. Обработка нажатия кнопки.

```
&НаКлиенте
Процедура ГенераторПароля(Команда)  
	Объект.Пароль = ГенерацияСлучайногоПароля(12);    
КонецПроцедуры
```

# Объединение конфигураций

1\. Откройте Конфигуратор.

Запустите 1С в режиме Конфигуратора.

2\. Используйте режим сравнения.

В меню "Конфигурация" выберите "Сравнить, объединить конфигурации с файлом".

3\. Загрузите файл.

<p class="callout info">Если основная конфигурация чистая, то конфигуратор предложит выполнить полную загрузку конфигурации.</p>

Если вы сравниваете с файлом, выберите нужный файл конфигурации .cf.

4\. Настройте правила сравнения.

В открывшемся окне "Сравнение конфигураций" настройте правила объединения.

5\. Проведите объединение.

После настройки правил, нажмите кнопку "Объединить".

# Пример интеграции 1С с API WireCRM

1\. Получение актов.

<div id="bkmrk-%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F-%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B5%D0%A7%D1%82%D0%B5%D0%BD%D0%B8">Функция ПростоеЧтениеJSON(Данные)</div><div id="bkmrk-%C2%A0-%C2%A0-%D0%A7%D1%82%D0%B5%D0%BD%D0%B8%D0%B5json-%3D-%D0%9D%D0%BE%D0%B2"> ЧтениеJSON = Новый ЧтениеJSON;</div><div id="bkmrk-%C2%A0-%C2%A0-%D0%A7%D1%82%D0%B5%D0%BD%D0%B8%D0%B5json.%D0%A3%D1%81%D1%82%D0%B0%D0%BD"> ЧтениеJSON.УстановитьСтроку(Данные); </div><div id="bkmrk-%C2%A0-%C2%A0-%D0%92%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%82-%D0%9F%D1%80%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D1%82"> Возврат ПрочитатьJSON(ЧтениеJSON);</div><div id="bkmrk-%D0%9A%D0%BE%D0%BD%D0%B5%D1%86%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8">КонецФункции</div><div id="bkmrk-">  
</div><div id="bkmrk-%26%D0%9D%D0%B0%D0%9A%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%B5">&amp;НаКлиенте</div><div id="bkmrk-%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D0%B0-%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81%28%D0%9A%D0%BE%D0%BC">Процедура Запрос(Команда)</div><div id="bkmrk--1">  
</div><div id="bkmrk-%C2%A0-%C2%A0-%2F%2F-%D0%A2%D0%B0%D0%BA-%D0%BA%D0%B0%D0%BA-%D0%B4%D0%BB%D1%8F-%D0%B4"> // Так как для доступа к ней используется защищенный</div><div id="bkmrk-%C2%A0-%C2%A0-%2F%2F-%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB-http"> // протокол https - нам нужно заполнить последний</div><div id="bkmrk-%C2%A0-%C2%A0-%2F%2F-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-%D0%BF%D1%80%D0%B8-"> // параметр при соединении с сервером.</div><div id="bkmrk--2">  
</div><div id="bkmrk-%C2%A0-%C2%A0-%D0%97%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%B8-%3D-%D0%9D%D0%BE%D0%B2%D1%8B"> Заголовки = Новый Соответствие;</div><div id="bkmrk-%C2%A0-%C2%A0-%D0%97%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%B8.%D0%92%D1%81%D1%82%D0%B0%D0%B2%D0%B8"> Заголовки.Вставить("X-API-KEY", "Ключ");</div><div id="bkmrk--3">  
</div><div id="bkmrk--4">  
</div><div id="bkmrk-%C2%A0-%C2%A0-%D0%A1%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%3D-%D0%9D%D0%BE%D0%B2"> Соединение = Новый HTTPСоединение(</div><div id="bkmrk-%C2%A0-%C2%A0-%C2%A0-%C2%A0-%22wirecrm.com"> "wirecrm.com", // сервер (хост)</div><div id="bkmrk-%C2%A0-%C2%A0-%C2%A0-%C2%A0-443%2C-%2F%2F-%D0%BF%D0%BE%D1%80%D1%82"> 443, // порт, по умолчанию для http используется 80, для https 443</div><div id="bkmrk-%C2%A0-%C2%A0-%C2%A0-%C2%A0-%2C-%2F%2F-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2"> , // пользователь для доступа к серверу (если он есть)</div><div id="bkmrk-%C2%A0-%C2%A0-%C2%A0-%C2%A0-%2C-%2F%2F-%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8C-"> , // пароль для доступа к серверу (если он есть)</div><div id="bkmrk-%C2%A0-%C2%A0-%C2%A0-%C2%A0-%2C-%2F%2F-%D0%B7%D0%B4%D0%B5%D1%81%D1%8C-%D1%83"> , // здесь указывается прокси, если он есть</div><div id="bkmrk-%C2%A0-%C2%A0-%C2%A0-%C2%A0-%2C-%2F%2F-%D1%82%D0%B0%D0%B9%D0%BC%D0%B0%D1%83%D1%82"> , // таймаут в секундах, 0 или пусто - не устанавливать</div><div id="bkmrk-%C2%A0-%C2%A0-%C2%A0-%C2%A0-%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9-%D0%97%D0%B0%D1%89%D0%B8%D1%89%D0%B5"> Новый ЗащищенноеСоединениеOpenSSL()</div><div id="bkmrk-%C2%A0-%C2%A0-%29%3B"> );</div><div id="bkmrk--5">  
</div><div id="bkmrk-%C2%A0-%C2%A0-%2F%2F-%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B0%D0%B5%D0%BC-%D1%82%D0%B5%D0%BA%D1%81"> // Получаем текст корневой страницы через GET-запрос.</div><div id="bkmrk-%C2%A0-%C2%A0-%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81-%3D-%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9-h"> Запрос = Новый HTTPЗапрос("/api/v1/acts", Заголовки);</div><div id="bkmrk-%C2%A0-%C2%A0-%2F%2F-%D0%95%D1%81%D0%BB%D0%B8-%D0%B1%D1%8B-%D0%BD%D1%83%D0%B6%D0%BD%D0%B0"> // Если бы нужна была другая страница, мы бы указали,</div><div id="bkmrk-%C2%A0-%C2%A0-%2F%2F-%D0%BD%D0%B0%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%2C-%22%2Fa"> // например, "/about" или "/news".</div><div id="bkmrk--6">  
</div><div id="bkmrk-%C2%A0-%C2%A0-%D0%A0%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82-%3D-%D0%A1%D0%BE%D0%B5%D0%B4"> Результат = Соединение.Получить(Запрос); </div><div id="bkmrk--7">  
</div><div id="bkmrk-%C2%A0-%C2%A0-%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B8%D1%82%D1%8C%28%D0%A0%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82"> Сообщить(Результат.КодСостояния);</div><div id="bkmrk-%C2%A0-%C2%A0-%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B8%D1%82%D1%8C%28%D0%A0%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82-1"> Сообщить(Результат.ПолучитьТелоКакСтроку());</div><div id="bkmrk--8">  
</div><div id="bkmrk-%C2%A0-%C2%A0-%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81-%3D-%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9-h-1"> Запрос = Новый HTTPЗапрос("/api/v1/acts/positions?act=103028", Заголовки); </div><div id="bkmrk-%C2%A0-%C2%A0-%D0%A0%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82-%3D-%D0%A1%D0%BE%D0%B5%D0%B4-1"> Результат = Соединение.Получить(Запрос);</div><div id="bkmrk--9">  
</div><div id="bkmrk-%C2%A0-%C2%A0-%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B8%D1%82%D1%8C%28%D0%A0%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82-2"> Сообщить(Результат.КодСостояния);</div><div id="bkmrk-%C2%A0-%C2%A0-%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B8%D1%82%D1%8C%28%D0%A0%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82-3"> Сообщить(Результат.ПолучитьТелоКакСтроку());</div><div id="bkmrk--10">  
</div><div id="bkmrk-%D0%9A%D0%BE%D0%BD%D0%B5%D1%86%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D1%8B">КонецПроцедуры</div>

# Уникальное поле в справочнике

1\. Уникальное поле в справочнике

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