Проект

Общее

Профиль

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

Всеволод Дорофеев, 24.09.2021 09:41

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