# 1С Программирование

# Табличный документ



# Напечатать штрихкод 1С

В интернете очень много вариантов вывода с подключением каких-то компонент. Указанный метод работает на чистой БП 3.0.140.29 без установки чего-либо.

## Вывод в документ

Располагаем пустой рисунок на печатной форме, даём имя:[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/aYEimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/aYEimage.png)

```
РисунокШК = ОбластьМакета.Рисунки.ШтрихКод;
ШтрихКод = ДанныеЗаявки.КоносаментПоЗаявке;
РисунокШК.Картинка = ПолучитьШтрихкод(РисунокШК.Ширина,РисунокШК.Высота, Штрихкод);
РисунокШК.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
ТД.Вывести(ОбластьМакета);
```

## ПолучитьШтрихкод

```
Функция ПолучитьШтрихкод(ШиринаШтрихкода, ВысотаШтрихкода, Штрихкод)
    
    ПараметрыШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
    ПараметрыШтрихкода.GS1DatabarКоличествоСтрок = 2;
    ПараметрыШтрихкода.Ширина  = ШиринаШтрихкода;
    ПараметрыШтрихкода.Высота  = ВысотаШтрихкода;
    ПараметрыШтрихкода.ТипКода = 99;
    ПараметрыШтрихкода.ОтображатьТекст = Ложь;
    ПараметрыШтрихкода.РазмерШрифта   = 0;
    ПараметрыШтрихкода.УголПоворота   = 0;
    ПараметрыШтрихкода.Штрихкод       = Штрихкод;
    ПараметрыШтрихкода.ПрозрачныйФон  = Ложь;
    ПараметрыШтрихкода.Масштабировать = Истина;
    
    РезультатОперации = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
    Возврат РезультатОперации.Картинка;
    
КонецФункции
```

Взято [тут](https://forum.mista.ru/topic.php?id=860075)

# Печать УПД из БП с факсимиле

```
Функция ПечатьУПДСФаксимиле(Документ,СПечатью=Ложь)   
	МассивДок = Новый Массив;
	МассивДок.Добавить(Документ);
	
	ОбъектыПечати = Новый СписокЗначений;	
	ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
	ПФДок = УчетНДС.ПечатьКомплектаУПД(УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("УниверсальныйПередаточныйДокументКомплект"), МассивДок, ОбъектыПечати, Неопределено, Новый Структура, ПараметрыВывода);
	Если СПечатью Тогда
		УправлениеПечатью.ДобавитьПодписьИПечать(ПФДок,УправлениеПечатью.ПодписиИПечатиОбластей(ОбъектыПечати, ПараметрыВывода));
	Иначе
		УправлениеПечатью.УбратьПодписьИПечать(ПФДок);
	КонецЕсли;

	Возврат ПФДок;
КонецФункции

```

# Заготовка обработки с сохранением параметров

## [Скачать](https://cloud.accounter.org/index.php/f/206574)

## Заменить названием и идентификатором своей обработки  
[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/GUDimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/GUDimage.png)

## Добавить свои параметры в обработку  
[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/JcBimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/JcBimage.png)  


## Отразить на форме  


[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/IY5image.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/IY5image.png)

# Общего назначения

## Числа

### ПолучитьСклоненияСтрокиПоЧислу

```
"Будет отправлено "+ПолучитьСклоненияСтрокиПоЧислуНаСервере("письмо",ПисьмаНаОтправку.Количество(),"ПД=Винительный")+". Продолжить?"
```

```
&НаСервереБезКонтекста
Функция ПолучитьСклоненияСтрокиПоЧислуНаСервере(Слово,Количество,Формат)
	Склонения = ПолучитьСклоненияСтрокиПоЧислу(Слово,Количество,,,Формат);
	Если НЕ ЗначениеЗаполнено(Склонения) Тогда
		Возврат Строка(Количество)+" "+Слово;
	КонецЕсли;
	Возврат Склонения[0];
КонецФункции // ПолучитьСклоненияСтрокиПоЧислуНаСервере()
```

## Регулярные выражения

[лучший конструктор регулярных выражений](https://bablosoft.github.io/RegexpConstructor/)

```
// Убрать номер авто
РезультатПоиска = СтрНайтиПоРегулярномуВыражению(Рез.Услуга, "([АВЕКМНОРСТУХ]\d{3,3}[АВЕКМНОРСТУХ]{2,2})"); 	
Если РезультатПоиска.НачальнаяПозиция <> 0 Тогда 
	СтрокаРезультат = СРед(Рез.Услуга, РезультатПоиска.НачальнаяПозиция, РезультатПоиска.Длина); 
	Рез.Услуга = СтрЗаменить(Рез.Услуга,СтрокаРезультат,"");
КонецЕсли;	
// Убрать номер авто
```

или так

```
Рез.Услуга = СтрЗаменитьПоРегулярномуВыражению(Рез.Услуга, "([АВЕКМНОРСТУХ]\d{3,3}[АВЕКМНОРСТУХ]{2,2})","");
```

```
СтрНайтиПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>, <ИгнорироватьРегистр>, <МногострочныйПоиск>)
СтрНайтиВсеПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>, <ИгнорироватьРегистр>, <МногострочныйПоиск>)
СтрПодобнаПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>, <ИгнорироватьРегистр>, <МногострочныйПоиск>)
СтрЗаменитьПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>, <ПодстрокаЗамены>, <ИгнорироватьРегистр>, <МногострочныйПоиск>)
```

<div id="bkmrk--2"></div><div id="bkmrk--3"></div>