Проект

Общее

Профиль

Универсальные процедуры и функции » История » Версия 36

Всеволод Дорофеев, 14.12.2022 16:11

1 1 Всеволод Дорофеев
h1. Универсальные процедуры и функции
2 1 Всеволод Дорофеев
3 29 Всеволод Дорофеев
{{TOC}}
4 29 Всеволод Дорофеев
5 34 Всеволод Дорофеев
6 34 Всеволод Дорофеев
h2. Права и роли
7 34 Всеволод Дорофеев
8 34 Всеволод Дорофеев
<pre>
9 34 Всеволод Дорофеев
УправлениеДоступом.ЕстьРоль(
10 35 Всеволод Дорофеев
ЕстьПраво
11 35 Всеволод Дорофеев
ЧтениеРазрешено
12 35 Всеволод Дорофеев
ИзменениеРазрешено
13 35 Всеволод Дорофеев
14 34 Всеволод Дорофеев
</pre>
15 34 Всеволод Дорофеев
16 34 Всеволод Дорофеев
h2. Прочее
17 34 Всеволод Дорофеев
18 30 Всеволод Дорофеев
{{collapse(h3. Процедуры и функции общего назначения)
19 30 Всеволод Дорофеев
20 23 Всеволод Дорофеев
h3. Процедуры и функции общего назначения
21 23 Всеволод Дорофеев
22 23 Всеволод Дорофеев
<pre>
23 23 Всеволод Дорофеев
	КонтактноеЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователи.ТекущийПользователь(), "ФизическоеЛицо");
24 1 Всеволод Дорофеев
</pre>
25 30 Всеволод Дорофеев
}}
26 34 Всеволод Дорофеев
27 34 Всеволод Дорофеев
28 20 Всеволод Дорофеев
h3. Проверить, что описание типа состоит из единственного типа значения и совпадает с нужным типом.
29 20 Всеволод Дорофеев
30 20 Всеволод Дорофеев
<pre>
31 20 Всеволод Дорофеев
// Проверить, что описание типа состоит из единственного типа значения и 
32 20 Всеволод Дорофеев
// совпадает с нужным типом.
33 20 Всеволод Дорофеев
//
34 20 Всеволод Дорофеев
// Возвращаемое значение:
35 20 Всеволод Дорофеев
//   Булево      - Совпадает или нет
36 20 Всеволод Дорофеев
//
37 20 Всеволод Дорофеев
Функция ОписаниеТипаСостоитИзТипа(ОписаниеТипа, ТипЗначения) Экспорт
38 20 Всеволод Дорофеев
	
39 20 Всеволод Дорофеев
	Если ОписаниеТипа.Типы().Количество() = 1
40 20 Всеволод Дорофеев
	   И ОписаниеТипа.Типы().Получить(0) = ТипЗначения Тогда
41 20 Всеволод Дорофеев
		Возврат Истина;
42 20 Всеволод Дорофеев
	КонецЕсли;
43 20 Всеволод Дорофеев
	
44 20 Всеволод Дорофеев
	Возврат Ложь;
45 20 Всеволод Дорофеев
46 20 Всеволод Дорофеев
КонецФункции
47 20 Всеволод Дорофеев
</pre>
48 21 Всеволод Дорофеев
УТ11:
49 21 Всеволод Дорофеев
<pre>
50 21 Всеволод Дорофеев
	ОписаниеСвойства.Булево = ОбщегоНазначения.ОписаниеТипаСостоитИзТипа(ТипЗначенияСвойства, Тип("Булево"));
51 21 Всеволод Дорофеев
</pre>
52 20 Всеволод Дорофеев
53 22 Всеволод Дорофеев
h3. Функция ЕстьРеквизитОбъекта - проверяет наличие у произвольного объекта реквизита с указанным именем (УТ11.ОбщегоНазначенияУТКлиентСервер)
54 22 Всеволод Дорофеев
55 22 Всеволод Дорофеев
<pre>
56 22 Всеволод Дорофеев
#Область МетодыРаботыСРеквизитамиОбъектов
57 22 Всеволод Дорофеев
58 22 Всеволод Дорофеев
// Проверяет наличие у произвольного объекта реквизита с указанным именем.
59 22 Всеволод Дорофеев
//
60 22 Всеволод Дорофеев
Функция ЕстьРеквизитОбъекта(Объект, ИмяРеквизита) Экспорт
61 22 Всеволод Дорофеев
	
62 22 Всеволод Дорофеев
	КлючУникальности   = Новый УникальныйИдентификатор;
63 22 Всеволод Дорофеев
	СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности);
64 22 Всеволод Дорофеев
65 22 Всеволод Дорофеев
	ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект);
66 22 Всеволод Дорофеев
	
67 22 Всеволод Дорофеев
	Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности;
68 22 Всеволод Дорофеев
	
69 22 Всеволод Дорофеев
КонецФункции
70 22 Всеволод Дорофеев
71 22 Всеволод Дорофеев
#КонецОбласти
72 22 Всеволод Дорофеев
</pre>
73 22 Всеволод Дорофеев
74 1 Всеволод Дорофеев
h3. Проверка битых ссылок
75 1 Всеволод Дорофеев
76 1 Всеволод Дорофеев
<pre>
77 1 Всеволод Дорофеев
ЭтоБитаяСсылка = не ЗначениеЗаполнено(Ссылка.ВерсияДанных);
78 1 Всеволод Дорофеев
</pre>
79 1 Всеволод Дорофеев
80 2 Всеволод Дорофеев
h3. МенеджерИсторииРаботыПользователя
81 3 Всеволод Дорофеев
82 4 Всеволод Дорофеев
<pre>
83 4 Всеволод Дорофеев
// Добавить событие в историю работы пользователя
84 4 Всеволод Дорофеев
ИсторияРаботыПользователя.Добавить(ПолучитьНавигационнуюСсылку(Объект.Ссылка));
85 4 Всеволод Дорофеев
</pre>
86 4 Всеволод Дорофеев
87 3 Всеволод Дорофеев
h3. ОтображениеСостояния
88 5 Всеволод Дорофеев
89 5 Всеволод Дорофеев
h3. Очистка окна сообщений
90 5 Всеволод Дорофеев
91 5 Всеволод Дорофеев
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
92 5 Всеволод Дорофеев
Пример:
93 5 Всеволод Дорофеев
<pre>
94 5 Всеволод Дорофеев
ОчиститьСообщения();
95 5 Всеволод Дорофеев
</pre>
96 6 Всеволод Дорофеев
97 8 Всеволод Дорофеев
h3. Отбор в таблице значений (табличной части) с помощью построителя запроса
98 6 Всеволод Дорофеев
99 6 Всеволод Дорофеев
<pre>
100 6 Всеволод Дорофеев
&НаСервере
101 8 Всеволод Дорофеев
Функция ПолучитьКоличествоПодобраноПоСтрокеНаСервере(ИсходнаяНоменклатура)
102 6 Всеволод Дорофеев
103 6 Всеволод Дорофеев
   ПостроительЗапр = Новый ПостроительЗапроса;
104 8 Всеволод Дорофеев
   ПостроительЗапр.ИсточникДанных = Новый ОписаниеИсточникаДанных(Объект.НоваяНоменклатура.Выгрузить());
105 8 Всеволод Дорофеев
   Отбор = ПостроительЗапр.Отбор.Добавить("ИсходнаяНоменклатура");
106 8 Всеволод Дорофеев
   Отбор.ВидСравнения = ВидСравнения.Равно;
107 8 Всеволод Дорофеев
   Отбор.Значение = ИсходнаяНоменклатура;
108 8 Всеволод Дорофеев
   Отбор.Использование = Истина;
109 6 Всеволод Дорофеев
   ПостроительЗапр.Выполнить();
110 8 Всеволод Дорофеев
   ПостроительЗапр.Результат.Выгрузить().Итог("Количество");
111 6 Всеволод Дорофеев
112 8 Всеволод Дорофеев
КонецФункции
113 6 Всеволод Дорофеев
</pre>
114 9 Всеволод Дорофеев
115 10 Всеволод Дорофеев
h3. Запись справочника
116 9 Всеволод Дорофеев
117 9 Всеволод Дорофеев
<pre>
118 9 Всеволод Дорофеев
Функция ЗаписатьСправочник(ТекущийОбъект,Заголовок="",РежимСообщений="Все",РежимЗагрузки=Ложь) Экспорт
119 9 Всеволод Дорофеев
	
120 9 Всеволод Дорофеев
	ДействиеВыполнено  = Ложь;
121 9 Всеволод Дорофеев
	
122 9 Всеволод Дорофеев
	ВыводитьОшибки     = ?(РежимСообщений="Все" ИЛИ РежимСообщений="Ошибки",Истина,Ложь);
123 9 Всеволод Дорофеев
	ВыводитьИнформацию = ?(РежимСообщений="Все",Истина,Ложь);
124 9 Всеволод Дорофеев
	
125 9 Всеволод Дорофеев
	Попытка
126 9 Всеволод Дорофеев
		Если РежимЗагрузки Тогда
127 9 Всеволод Дорофеев
			ТекущийОбъект.ОбменДанными.Загрузка = Истина;
128 9 Всеволод Дорофеев
		КонецЕсли; 
129 9 Всеволод Дорофеев
		ТекущийОбъект.Записать();
130 9 Всеволод Дорофеев
		ДействиеВыполнено = Истина;
131 9 Всеволод Дорофеев
		Если ВыводитьИнформацию Тогда
132 9 Всеволод Дорофеев
			ТекстСообщения = "Записан справочник """+ТекущийОбъект.Ссылка+""". ";
133 9 Всеволод Дорофеев
			СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Информация);
134 9 Всеволод Дорофеев
		КонецЕсли; 
135 9 Всеволод Дорофеев
	Исключение
136 9 Всеволод Дорофеев
		ДействиеВыполнено = Ложь;						
137 9 Всеволод Дорофеев
		Если ВыводитьОшибки Тогда
138 9 Всеволод Дорофеев
			ТекстСообщения = "Не удалось записать справочник """+ТекущийОбъект.Ссылка+""". "+ОписаниеОшибки();
139 9 Всеволод Дорофеев
			СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Важное);
140 9 Всеволод Дорофеев
		КонецЕсли; 
141 9 Всеволод Дорофеев
	КонецПопытки;
142 9 Всеволод Дорофеев
	
143 9 Всеволод Дорофеев
	Возврат ДействиеВыполнено;
144 9 Всеволод Дорофеев
КонецФункции //ЗаписатьПровестиДокумент()
145 9 Всеволод Дорофеев
</pre>
146 9 Всеволод Дорофеев
147 9 Всеволод Дорофеев
148 9 Всеволод Дорофеев
149 9 Всеволод Дорофеев
h3. Запись и проведение документа
150 9 Всеволод Дорофеев
151 9 Всеволод Дорофеев
<pre>
152 9 Всеволод Дорофеев
// Процедура выполняет запись/проведение/отмену проведения документа.
153 9 Всеволод Дорофеев
//
154 9 Всеволод Дорофеев
// Параметры:
155 9 Всеволод Дорофеев
//  ТекущийОбъект  – ДокументОбъект,СправочникОбъект.
156 9 Всеволод Дорофеев
//  РежимЗаписи    - РежимЗаписиДокумента.
157 9 Всеволод Дорофеев
//  Заголовок      - Строка.
158 9 Всеволод Дорофеев
//  РежимСообщений - Строка: "Нет","Все","Ошибки".
159 9 Всеволод Дорофеев
//
160 9 Всеволод Дорофеев
// Возвращаемое значение:
161 9 Всеволод Дорофеев
//   ДействиеВыполнено   – Булево.
162 9 Всеволод Дорофеев
//
163 9 Всеволод Дорофеев
Функция ЗаписатьПровестиДокумент(ТекущийОбъект,РежимЗаписи,Заголовок="",РежимСообщений="Все") Экспорт
164 9 Всеволод Дорофеев
	
165 9 Всеволод Дорофеев
	ДействиеВыполнено  = Ложь;
166 9 Всеволод Дорофеев
	
167 9 Всеволод Дорофеев
	ВыводитьОшибки     = ?(РежимСообщений="Все" ИЛИ РежимСообщений="Ошибки",Истина,Ложь);
168 9 Всеволод Дорофеев
	ВыводитьИнформацию = ?(РежимСообщений="Все",Истина,Ложь);
169 9 Всеволод Дорофеев
	
170 9 Всеволод Дорофеев
	Если РежимЗаписи = РежимЗаписиДокумента.Запись ИЛИ РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
171 9 Всеволод Дорофеев
		
172 9 Всеволод Дорофеев
		Попытка
173 9 Всеволод Дорофеев
			
174 9 Всеволод Дорофеев
			ТекущийОбъект.Записать(РежимЗаписиДокумента.Запись);
175 9 Всеволод Дорофеев
			ДействиеВыполнено = Истина;
176 9 Всеволод Дорофеев
			Если ВыводитьИнформацию Тогда
177 9 Всеволод Дорофеев
				ТекстСообщения = "Записан документ """+ТекущийОбъект.Ссылка+""". ";
178 9 Всеволод Дорофеев
				СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Информация);
179 9 Всеволод Дорофеев
			КонецЕсли; 
180 9 Всеволод Дорофеев
		Исключение
181 9 Всеволод Дорофеев
			ДействиеВыполнено = Ложь;						
182 9 Всеволод Дорофеев
			Если ВыводитьОшибки Тогда
183 9 Всеволод Дорофеев
				ТекстСообщения = "Не удалось записать документ """+ТекущийОбъект.Ссылка+""". "+ОписаниеОшибки();
184 9 Всеволод Дорофеев
				СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Важное);
185 9 Всеволод Дорофеев
			КонецЕсли; 
186 9 Всеволод Дорофеев
		КонецПопытки;
187 9 Всеволод Дорофеев
		
188 9 Всеволод Дорофеев
	КонецЕсли; 
189 9 Всеволод Дорофеев
	
190 9 Всеволод Дорофеев
	Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
191 9 Всеволод Дорофеев
		
192 9 Всеволод Дорофеев
		Попытка
193 9 Всеволод Дорофеев
			
194 9 Всеволод Дорофеев
			ТекущийОбъект.Записать(РежимЗаписиДокумента.Проведение);
195 9 Всеволод Дорофеев
			ДействиеВыполнено = Истина;
196 9 Всеволод Дорофеев
			Если ВыводитьИнформацию Тогда
197 9 Всеволод Дорофеев
				ТекстСообщения = "Проведен документ """+ТекущийОбъект.Ссылка+""". ";
198 9 Всеволод Дорофеев
				СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Информация);
199 9 Всеволод Дорофеев
			КонецЕсли; 			
200 9 Всеволод Дорофеев
		Исключение
201 9 Всеволод Дорофеев
			ДействиеВыполнено = Ложь;						
202 9 Всеволод Дорофеев
			Если ВыводитьОшибки Тогда
203 9 Всеволод Дорофеев
				ТекстСообщения = "Не удалось провести документ """+ТекущийОбъект.Ссылка+""". "+ОписаниеОшибки();
204 9 Всеволод Дорофеев
				СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Важное);
205 9 Всеволод Дорофеев
			КонецЕсли; 
206 9 Всеволод Дорофеев
		КонецПопытки;
207 9 Всеволод Дорофеев
		
208 9 Всеволод Дорофеев
	КонецЕсли; 
209 9 Всеволод Дорофеев
	
210 9 Всеволод Дорофеев
	Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
211 9 Всеволод Дорофеев
		
212 9 Всеволод Дорофеев
		Попытка
213 9 Всеволод Дорофеев
			ТекущийОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
214 9 Всеволод Дорофеев
			ДействиеВыполнено = Истина;
215 9 Всеволод Дорофеев
			Если ВыводитьИнформацию Тогда
216 9 Всеволод Дорофеев
				ТекстСообщения = "Отменено проведение документа """+ТекущийОбъект.Ссылка+""". ";
217 9 Всеволод Дорофеев
				СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Информация);
218 9 Всеволод Дорофеев
			КонецЕсли; 			
219 9 Всеволод Дорофеев
		Исключение
220 9 Всеволод Дорофеев
			ДействиеВыполнено = Ложь;						
221 9 Всеволод Дорофеев
			Если ВыводитьОшибки Тогда
222 9 Всеволод Дорофеев
				ТекстСообщения = "Не удалось отменить проведение документа """+ТекущийОбъект.Ссылка+""". "+ОписаниеОшибки();
223 9 Всеволод Дорофеев
				СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Важное);
224 9 Всеволод Дорофеев
			КонецЕсли; 
225 9 Всеволод Дорофеев
		КонецПопытки;
226 9 Всеволод Дорофеев
		
227 9 Всеволод Дорофеев
	КонецЕсли; 
228 9 Всеволод Дорофеев
	
229 9 Всеволод Дорофеев
	Возврат ДействиеВыполнено;
230 9 Всеволод Дорофеев
КонецФункции // ЗаписатьПровестиДокумент()
231 9 Всеволод Дорофеев
232 9 Всеволод Дорофеев
</pre>
233 11 Всеволод Дорофеев
234 11 Всеволод Дорофеев
h3. Проверка на пустую дату
235 11 Всеволод Дорофеев
236 11 Всеволод Дорофеев
Пустая дата
237 11 Всеволод Дорофеев
<pre>
238 11 Всеволод Дорофеев
Дата("00010101");
239 12 Всеволод Дорофеев
Дата(1, 1, 1);
240 12 Всеволод Дорофеев
Дата("00010101000000");
241 12 Всеволод Дорофеев
Дата("0001-01-01");
242 11 Всеволод Дорофеев
</pre>
243 13 Всеволод Дорофеев
244 28 Всеволод Дорофеев
245 28 Всеволод Дорофеев
h3.  Создание пустой таблицы значение на основании табличной части Документа
246 28 Всеволод Дорофеев
247 28 Всеволод Дорофеев
<pre>
248 28 Всеволод Дорофеев
	Товары = Документы.ПоступлениеТоваровУслуг.ПустаяСсылка().Товары.ВыгрузитьКолонки();
249 28 Всеволод Дорофеев
</pre>
250 28 Всеволод Дорофеев
251 14 Всеволод Дорофеев
h3.  Создание структуры со свойствами, как колонки таблицы, переданной строки
252 13 Всеволод Дорофеев
253 13 Всеволод Дорофеев
<pre>
254 36 Всеволод Дорофеев
СтруктураРез = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтрокаДанных);
255 36 Всеволод Дорофеев
</pre>
256 36 Всеволод Дорофеев
257 36 Всеволод Дорофеев
<pre>
258 13 Всеволод Дорофеев
// Функция СтрокаТаблицыЗначенийВСтруктуру создает
259 13 Всеволод Дорофеев
// структуру со свойствами, как колонки таблицы
260 13 Всеволод Дорофеев
// значений передаваемой строки
261 13 Всеволод Дорофеев
// и устанавливает этим свойствам значения
262 13 Всеволод Дорофеев
// из строки таблицы значений.
263 13 Всеволод Дорофеев
// 
264 13 Всеволод Дорофеев
// Параметры:
265 13 Всеволод Дорофеев
//  СтрокаТаблицыЗначений - СтрокаТаблицыЗначений.
266 13 Всеволод Дорофеев
//
267 13 Всеволод Дорофеев
// ВозвращаемоеЗначение:
268 13 Всеволод Дорофеев
//  Структура
269 13 Всеволод Дорофеев
//
270 13 Всеволод Дорофеев
Функция СтрокаТаблицыЗначенийВСтруктуру(СтрокаТаблицыЗначений) Экспорт
271 13 Всеволод Дорофеев
	
272 13 Всеволод Дорофеев
	Структура = Новый Структура;
273 13 Всеволод Дорофеев
	Для каждого Колонка Из СтрокаТаблицыЗначений.Владелец().Колонки Цикл
274 13 Всеволод Дорофеев
		Структура.Вставить(Колонка.Имя, СтрокаТаблицыЗначений[Колонка.Имя]);
275 13 Всеволод Дорофеев
	КонецЦикла;
276 13 Всеволод Дорофеев
	
277 13 Всеволод Дорофеев
	Возврат Структура;
278 13 Всеволод Дорофеев
	
279 13 Всеволод Дорофеев
КонецФункции
280 13 Всеволод Дорофеев
281 13 Всеволод Дорофеев
</pre>
282 15 Всеволод Дорофеев
283 15 Всеволод Дорофеев
h3. Загрузка таблицы/соответствия из макета с помощью построителя отчета
284 15 Всеволод Дорофеев
285 15 Всеволод Дорофеев
<pre>
286 15 Всеволод Дорофеев
Функция ЗаполнитьСоответствиеИзМакета(ИмяМакета)
287 15 Всеволод Дорофеев
	
288 15 Всеволод Дорофеев
	Макет = ПолучитьМакет(ИмяМакета);
289 15 Всеволод Дорофеев
	ПостроительЗапроса = Новый ПостроительЗапроса;
290 15 Всеволод Дорофеев
	ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Макет.Область());
291 15 Всеволод Дорофеев
	ТЗ = ПостроительЗапроса.Результат.Выгрузить();
292 15 Всеволод Дорофеев
293 15 Всеволод Дорофеев
	Результат = Новый Соответствие;
294 15 Всеволод Дорофеев
	Для каждого Стр Из ТЗ Цикл
295 15 Всеволод Дорофеев
		Результат.Вставить(Стр.Колонка1, Стр.Колонка2);
296 15 Всеволод Дорофеев
	КонецЦикла;
297 15 Всеволод Дорофеев
 
298 15 Всеволод Дорофеев
	Возврат Результат;
299 15 Всеволод Дорофеев
	
300 15 Всеволод Дорофеев
КонецФункции
301 15 Всеволод Дорофеев
302 15 Всеволод Дорофеев
</pre>
303 16 Всеволод Дорофеев
304 26 Всеволод Дорофеев
h3. Получение прописью месяца в родительном падеже
305 26 Всеволод Дорофеев
306 26 Всеволод Дорофеев
<pre>
307 26 Всеволод Дорофеев
ОбластьТела.Параметры.ДатаУдостоверенияМесяц = Сред(Формат(ДатаУдостоверения, "ДФ=ddMMMM"),3);
308 26 Всеволод Дорофеев
</pre> 
309 26 Всеволод Дорофеев
310 27 Всеволод Дорофеев
311 27 Всеволод Дорофеев
h3. Число прописью
312 27 Всеволод Дорофеев
313 27 Всеволод Дорофеев
<pre>
314 27 Всеволод Дорофеев
//
315 27 Всеволод Дорофеев
ЧислоПрописью(СтруктураОснований.Сумма, "Л=ru_RU;ДП=Истина", "рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2");
316 27 Всеволод Дорофеев
317 27 Всеволод Дорофеев
//без дробной части
318 27 Всеволод Дорофеев
Числопрописью = ЧислоПрописью(ДанныеПечати.МассаБрутто, "Л=ru_RU; НП=Ложь",",,,,,,,,0")
319 27 Всеволод Дорофеев
</pre>
320 27 Всеволод Дорофеев
321 27 Всеволод Дорофеев
h3. Склонения по падежам
322 27 Всеволод Дорофеев
323 27 Всеволод Дорофеев
https://spb.koderline.ru/expert/programming/article-sklonenie-v-1s/#jakor6
324 27 Всеволод Дорофеев
325 27 Всеволод Дорофеев
<pre>
326 27 Всеволод Дорофеев
//Возвращает массив
327 27 Всеволод Дорофеев
Массив = ПолучитьСклоненияСтрокиПоЧислу("место", ДанныеПечати.ссылка.г_КоличествоМестТН, "", "ЧС=Количественное", "ПД=Именительный")
328 27 Всеволод Дорофеев
</pre>
329 27 Всеволод Дорофеев
330 16 Всеволод Дорофеев
h3. Варианты преобразования даты из строки (конвертация строки в дату)
331 16 Всеволод Дорофеев
332 16 Всеволод Дорофеев
Проще всего преобразовать строку вида «20151215204222» используя метод «Дата»:
333 16 Всеволод Дорофеев
334 16 Всеволод Дорофеев
    Дата(«20151215204222»)  // 15.12.2015 20:42:22
335 16 Всеволод Дорофеев
336 16 Всеволод Дорофеев
Со строкой «15.12.2015 20:42:22» также прекрасно справляется типовой метод:
337 16 Всеволод Дорофеев
338 16 Всеволод Дорофеев
    Дата(«15.12.2015 20:42:22»)  //15.12.2015 20:42:22
339 16 Всеволод Дорофеев
340 16 Всеволод Дорофеев
Второй вариант, если мы знаем отдельные составляющие даты в строковом формате: год, месяц, день и т.д:
341 16 Всеволод Дорофеев
342 16 Всеволод Дорофеев
    Дата(«2015″,»12″,»15″,»20″,»42″,»22»)  // 15.12.2015 20:42:22
343 16 Всеволод Дорофеев
344 16 Всеволод Дорофеев
Пример преобразования строки вида «2015-12-15 20:42:22»:
345 16 Всеволод Дорофеев
346 16 Всеволод Дорофеев
    СтроковаяДата = «2015-12-15 20:42:22»;
347 16 Всеволод Дорофеев
    СтроковаяДата = СтрЗаменить(СтроковаяДата , «-«,»»);
348 16 Всеволод Дорофеев
    СтроковаяДата = СтрЗаменить(СтроковаяДата , «:»,»»);
349 16 Всеволод Дорофеев
    НоваяДата = Дата(СтроковаяДата ); // 15.12.2015 20:42:22
350 16 Всеволод Дорофеев
351 16 Всеволод Дорофеев
Если дата указан так «20:42:22 2015/12/15» можно преобразовать её следующим образом:
352 16 Всеволод Дорофеев
353 16 Всеволод Дорофеев
    СтроковаяДата = «20:42:22 2015/12/15»;
354 16 Всеволод Дорофеев
    СтроковаяДата = СтрЗаменить(СтроковаяДата , «/»,»»);
355 16 Всеволод Дорофеев
    СтроковаяДата = СтрЗаменить(СтроковаяДата , «:»,»»);
356 16 Всеволод Дорофеев
    НоваяДата = Дата(Прав(СтроковаяДата , 8) + Лев(СтроковаяДата ,6));
357 17 Всеволод Дорофеев
358 17 Всеволод Дорофеев
h3. Генератор случайных чисел
359 17 Всеволод Дорофеев
360 17 Всеволод Дорофеев
<pre>
361 17 Всеволод Дорофеев
		ГСЧ = Новый ГенераторСлучайныхЧисел();
362 17 Всеволод Дорофеев
		СлучайноеЧисло = ГСЧ.СлучайноеЧисло(0, 100000);
363 17 Всеволод Дорофеев
</pre>
364 18 Всеволод Дорофеев
365 18 Всеволод Дорофеев
h3. Пересохранение книги в Эксель (Excel) с отображением листов
366 18 Всеволод Дорофеев
367 18 Всеволод Дорофеев
http://infostart.ru/public/323606/
368 18 Всеволод Дорофеев
Код:
369 18 Всеволод Дорофеев
370 18 Всеволод Дорофеев
Для v8:
371 18 Всеволод Дорофеев
372 18 Всеволод Дорофеев
<pre>
373 18 Всеволод Дорофеев
ТабДокумент.Записать(ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS);
374 18 Всеволод Дорофеев
375 18 Всеволод Дорофеев
Excel = Новый COMОбъект("Excel.Application");
376 18 Всеволод Дорофеев
Excel.WorkBooks.Open(ПолноеИмяФайла); 
377 18 Всеволод Дорофеев
Excel.Visible = 0;
378 18 Всеволод Дорофеев
379 18 Всеволод Дорофеев
Excel.ActiveWindow.DisplayWorkbookTabs = 1; 
380 18 Всеволод Дорофеев
Excel.ActiveWindow.TabRatio = 0.6;         
381 18 Всеволод Дорофеев
382 18 Всеволод Дорофеев
FullName = Excel.ActiveWorkbook.FullName;            
383 18 Всеволод Дорофеев
Excel.DisplayAlerts = false;
384 18 Всеволод Дорофеев
Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013
385 18 Всеволод Дорофеев
386 18 Всеволод Дорофеев
//Excel.Visible = 1;       // если нужно поработать дальше с книгой
387 18 Всеволод Дорофеев
//Excel.Application.Quit() // если просто выходим
388 18 Всеволод Дорофеев
</pre> 
389 18 Всеволод Дорофеев
390 18 Всеволод Дорофеев
Для v7.7:
391 18 Всеволод Дорофеев
392 18 Всеволод Дорофеев
<pre>
393 18 Всеволод Дорофеев
394 18 Всеволод Дорофеев
ТабДокумент.Записать(ПолноеИмяФайла, "XLS");
395 18 Всеволод Дорофеев
396 18 Всеволод Дорофеев
Excel = СоздатьОбъект("Excel.Application");
397 18 Всеволод Дорофеев
Excel.WorkBooks.Open(ПолноеИмяФайла); 
398 18 Всеволод Дорофеев
Excel.Visible = 0; 
399 18 Всеволод Дорофеев
400 18 Всеволод Дорофеев
Excel.ActiveWindow.DisplayWorkbookTabs = 1; 
401 18 Всеволод Дорофеев
Excel.ActiveWindow.TabRatio = 0.6;
402 18 Всеволод Дорофеев
403 18 Всеволод Дорофеев
FullName = Excel.ActiveWorkbook.FullName;            
404 18 Всеволод Дорофеев
Excel.DisplayAlerts = false;
405 18 Всеволод Дорофеев
Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013
406 18 Всеволод Дорофеев
407 18 Всеволод Дорофеев
//Excel.Visible = 1;       // если нужно поработать дальше с книгой
408 18 Всеволод Дорофеев
//Excel.Application.Quit() // если просто выходим
409 18 Всеволод Дорофеев
</pre>
410 24 Всеволод Дорофеев
411 24 Всеволод Дорофеев
h3. Функция ВернутьТолькоЦифры
412 24 Всеволод Дорофеев
413 24 Всеволод Дорофеев
<pre>
414 24 Всеволод Дорофеев
Функция ВернутьТолькоЦифры(прСтрока)
415 24 Всеволод Дорофеев
	
416 25 Всеволод Дорофеев
	Рез = "";
417 24 Всеволод Дорофеев
	Для п = 1 По СтрДлина(прСтрока) Цикл
418 24 Всеволод Дорофеев
		Симв = Сред(прСтрока, п, 1);
419 24 Всеволод Дорофеев
		Если Симв>="0" И Симв<="9" Тогда
420 25 Всеволод Дорофеев
			Рез = Рез + Симв;
421 24 Всеволод Дорофеев
		КонецЕсли;
422 24 Всеволод Дорофеев
	КонецЦикла;
423 24 Всеволод Дорофеев
	
424 25 Всеволод Дорофеев
	Возврат Рез;
425 24 Всеволод Дорофеев
	
426 24 Всеволод Дорофеев
КонецФункции
427 24 Всеволод Дорофеев
</pre>
428 31 Всеволод Дорофеев
429 31 Всеволод Дорофеев
h3. Установить новую ссылку для еще не записанного объекта.
430 31 Всеволод Дорофеев
431 31 Всеволод Дорофеев
Например, в модуле объекта
432 31 Всеволод Дорофеев
433 31 Всеволод Дорофеев
<pre>
434 31 Всеволод Дорофеев
435 31 Всеволод Дорофеев
	Если ЭтоНовый() Тогда
436 31 Всеволод Дорофеев
437 31 Всеволод Дорофеев
		СсылкаНаОбъект = ПолучитьСсылкуНового();
438 31 Всеволод Дорофеев
439 31 Всеволод Дорофеев
		Если Не ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
440 31 Всеволод Дорофеев
441 31 Всеволод Дорофеев
			СсылкаНаОбъект = Документы.ЗаданиеНаПеревозку.ПолучитьСсылку();
442 31 Всеволод Дорофеев
			УстановитьСсылкуНового(СсылкаНаОбъект);
443 31 Всеволод Дорофеев
444 31 Всеволод Дорофеев
		КонецЕсли;
445 31 Всеволод Дорофеев
446 31 Всеволод Дорофеев
	Иначе
447 31 Всеволод Дорофеев
448 31 Всеволод Дорофеев
		СсылкаНаОбъект = Ссылка;
449 31 Всеволод Дорофеев
450 31 Всеволод Дорофеев
	КонецЕсли; 	
451 31 Всеволод Дорофеев
452 31 Всеволод Дорофеев
</pre>
453 32 Всеволод Дорофеев
454 32 Всеволод Дорофеев
h3. Получение документа (паспорт) физического лица
455 32 Всеволод Дорофеев
456 33 Всеволод Дорофеев
#Паспорт #УТ11 ФизЛицо #РегистрСведений.ДокументыФизическихЛиц #Паспорт #Удостоверение
457 32 Всеволод Дорофеев
458 32 Всеволод Дорофеев
459 32 Всеволод Дорофеев
<pre>
460 32 Всеволод Дорофеев
	ПаспортныеДанные = ?(ЗначениеЗаполнено(РезультатШапкаДокументов.Ссылка.Водитель), 
461 32 Всеволод Дорофеев
			ФизическиеЛицаУТ.ПолучитьДокументФизическогоЛицаПоУмолчанию(РезультатШапкаДокументов.Ссылка.Водитель,Справочники.ВидыДокументовФизическихЛиц.ПаспортРФ, РезультатШапкаДокументов.Дата),
462 32 Всеволод Дорофеев
			"");
463 32 Всеволод Дорофеев
464 32 Всеволод Дорофеев
</pre>