Универсальные процедуры и функции » История » Версия 17
Всеволод Дорофеев, 05.03.2017 19:09
1 | 1 | Всеволод Дорофеев | h1. Универсальные процедуры и функции |
---|---|---|---|
2 | 1 | Всеволод Дорофеев | |
3 | 1 | Всеволод Дорофеев | h3. Проверка битых ссылок |
4 | 1 | Всеволод Дорофеев | |
5 | 1 | Всеволод Дорофеев | <pre> |
6 | 1 | Всеволод Дорофеев | ЭтоБитаяСсылка = не ЗначениеЗаполнено(Ссылка.ВерсияДанных); |
7 | 1 | Всеволод Дорофеев | </pre> |
8 | 1 | Всеволод Дорофеев | |
9 | 1 | Всеволод Дорофеев | h3. Возвращает полное имя объекта метаданных по переданному значению ссылки |
10 | 1 | Всеволод Дорофеев | |
11 | 1 | Всеволод Дорофеев | <pre> |
12 | 1 | Всеволод Дорофеев | // Возвращает полное имя объекта метаданных по переданному значению ссылки |
13 | 1 | Всеволод Дорофеев | // Например, |
14 | 1 | Всеволод Дорофеев | // "Справочник.Номенклатура"; |
15 | 1 | Всеволод Дорофеев | // "Документ.ПриходнаяНакладная" |
16 | 1 | Всеволод Дорофеев | // |
17 | 1 | Всеволод Дорофеев | // Параметры: |
18 | 1 | Всеволод Дорофеев | // Ссылка - ЛюбаяСсылка - значение ссылки, для которого необходимо получить имя таблицы ИБ |
19 | 1 | Всеволод Дорофеев | // |
20 | 1 | Всеволод Дорофеев | // Возвращаемое значение: |
21 | 1 | Всеволод Дорофеев | // Строка - полное имя объекта метаданных для указанного значения ссылки |
22 | 1 | Всеволод Дорофеев | // |
23 | 1 | Всеволод Дорофеев | Функция ИмяТаблицыПоСсылке(Ссылка) Экспорт |
24 | 1 | Всеволод Дорофеев | |
25 | 1 | Всеволод Дорофеев | Возврат Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).ПолноеИмя(); |
26 | 1 | Всеволод Дорофеев | |
27 | 1 | Всеволод Дорофеев | КонецФункции |
28 | 1 | Всеволод Дорофеев | </pre> |
29 | 2 | Всеволод Дорофеев | |
30 | 2 | Всеволод Дорофеев | h3. МенеджерИсторииРаботыПользователя |
31 | 3 | Всеволод Дорофеев | |
32 | 4 | Всеволод Дорофеев | <pre> |
33 | 4 | Всеволод Дорофеев | // Добавить событие в историю работы пользователя |
34 | 4 | Всеволод Дорофеев | ИсторияРаботыПользователя.Добавить(ПолучитьНавигационнуюСсылку(Объект.Ссылка)); |
35 | 4 | Всеволод Дорофеев | </pre> |
36 | 4 | Всеволод Дорофеев | |
37 | 3 | Всеволод Дорофеев | h3. ОтображениеСостояния |
38 | 5 | Всеволод Дорофеев | |
39 | 5 | Всеволод Дорофеев | h3. Очистка окна сообщений |
40 | 5 | Всеволод Дорофеев | |
41 | 5 | Всеволод Дорофеев | Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения. |
42 | 5 | Всеволод Дорофеев | Пример: |
43 | 5 | Всеволод Дорофеев | <pre> |
44 | 5 | Всеволод Дорофеев | ОчиститьСообщения(); |
45 | 5 | Всеволод Дорофеев | </pre> |
46 | 6 | Всеволод Дорофеев | |
47 | 8 | Всеволод Дорофеев | h3. Отбор в таблице значений (табличной части) с помощью построителя запроса |
48 | 6 | Всеволод Дорофеев | |
49 | 6 | Всеволод Дорофеев | <pre> |
50 | 6 | Всеволод Дорофеев | &НаСервере |
51 | 8 | Всеволод Дорофеев | Функция ПолучитьКоличествоПодобраноПоСтрокеНаСервере(ИсходнаяНоменклатура) |
52 | 6 | Всеволод Дорофеев | |
53 | 6 | Всеволод Дорофеев | ПостроительЗапр = Новый ПостроительЗапроса; |
54 | 8 | Всеволод Дорофеев | ПостроительЗапр.ИсточникДанных = Новый ОписаниеИсточникаДанных(Объект.НоваяНоменклатура.Выгрузить()); |
55 | 8 | Всеволод Дорофеев | Отбор = ПостроительЗапр.Отбор.Добавить("ИсходнаяНоменклатура"); |
56 | 8 | Всеволод Дорофеев | Отбор.ВидСравнения = ВидСравнения.Равно; |
57 | 8 | Всеволод Дорофеев | Отбор.Значение = ИсходнаяНоменклатура; |
58 | 8 | Всеволод Дорофеев | Отбор.Использование = Истина; |
59 | 6 | Всеволод Дорофеев | ПостроительЗапр.Выполнить(); |
60 | 8 | Всеволод Дорофеев | ПостроительЗапр.Результат.Выгрузить().Итог("Количество"); |
61 | 6 | Всеволод Дорофеев | |
62 | 8 | Всеволод Дорофеев | КонецФункции |
63 | 6 | Всеволод Дорофеев | </pre> |
64 | 9 | Всеволод Дорофеев | |
65 | 10 | Всеволод Дорофеев | h3. Запись справочника |
66 | 9 | Всеволод Дорофеев | |
67 | 9 | Всеволод Дорофеев | <pre> |
68 | 9 | Всеволод Дорофеев | Функция ЗаписатьСправочник(ТекущийОбъект,Заголовок="",РежимСообщений="Все",РежимЗагрузки=Ложь) Экспорт |
69 | 9 | Всеволод Дорофеев | |
70 | 9 | Всеволод Дорофеев | ДействиеВыполнено = Ложь; |
71 | 9 | Всеволод Дорофеев | |
72 | 9 | Всеволод Дорофеев | ВыводитьОшибки = ?(РежимСообщений="Все" ИЛИ РежимСообщений="Ошибки",Истина,Ложь); |
73 | 9 | Всеволод Дорофеев | ВыводитьИнформацию = ?(РежимСообщений="Все",Истина,Ложь); |
74 | 9 | Всеволод Дорофеев | |
75 | 9 | Всеволод Дорофеев | Попытка |
76 | 9 | Всеволод Дорофеев | Если РежимЗагрузки Тогда |
77 | 9 | Всеволод Дорофеев | ТекущийОбъект.ОбменДанными.Загрузка = Истина; |
78 | 9 | Всеволод Дорофеев | КонецЕсли; |
79 | 9 | Всеволод Дорофеев | ТекущийОбъект.Записать(); |
80 | 9 | Всеволод Дорофеев | ДействиеВыполнено = Истина; |
81 | 9 | Всеволод Дорофеев | Если ВыводитьИнформацию Тогда |
82 | 9 | Всеволод Дорофеев | ТекстСообщения = "Записан справочник """+ТекущийОбъект.Ссылка+""". "; |
83 | 9 | Всеволод Дорофеев | СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Информация); |
84 | 9 | Всеволод Дорофеев | КонецЕсли; |
85 | 9 | Всеволод Дорофеев | Исключение |
86 | 9 | Всеволод Дорофеев | ДействиеВыполнено = Ложь; |
87 | 9 | Всеволод Дорофеев | Если ВыводитьОшибки Тогда |
88 | 9 | Всеволод Дорофеев | ТекстСообщения = "Не удалось записать справочник """+ТекущийОбъект.Ссылка+""". "+ОписаниеОшибки(); |
89 | 9 | Всеволод Дорофеев | СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Важное); |
90 | 9 | Всеволод Дорофеев | КонецЕсли; |
91 | 9 | Всеволод Дорофеев | КонецПопытки; |
92 | 9 | Всеволод Дорофеев | |
93 | 9 | Всеволод Дорофеев | Возврат ДействиеВыполнено; |
94 | 9 | Всеволод Дорофеев | КонецФункции //ЗаписатьПровестиДокумент() |
95 | 9 | Всеволод Дорофеев | </pre> |
96 | 9 | Всеволод Дорофеев | |
97 | 9 | Всеволод Дорофеев | |
98 | 9 | Всеволод Дорофеев | |
99 | 9 | Всеволод Дорофеев | h3. Запись и проведение документа |
100 | 9 | Всеволод Дорофеев | |
101 | 9 | Всеволод Дорофеев | <pre> |
102 | 9 | Всеволод Дорофеев | // Процедура выполняет запись/проведение/отмену проведения документа. |
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 | Всеволод Дорофеев | Исключение |
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 | Всеволод Дорофеев | ДействиеВыполнено = Истина; |
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 | Всеволод Дорофеев | </pre> |
183 | 11 | Всеволод Дорофеев | |
184 | 11 | Всеволод Дорофеев | h3. Проверка на пустую дату |
185 | 11 | Всеволод Дорофеев | |
186 | 11 | Всеволод Дорофеев | Пустая дата |
187 | 11 | Всеволод Дорофеев | <pre> |
188 | 11 | Всеволод Дорофеев | Дата("00010101"); |
189 | 12 | Всеволод Дорофеев | Дата(1, 1, 1); |
190 | 12 | Всеволод Дорофеев | Дата("00010101000000"); |
191 | 12 | Всеволод Дорофеев | Дата("0001-01-01"); |
192 | 11 | Всеволод Дорофеев | </pre> |
193 | 13 | Всеволод Дорофеев | |
194 | 14 | Всеволод Дорофеев | h3. Создание структуры со свойствами, как колонки таблицы, переданной строки |
195 | 13 | Всеволод Дорофеев | |
196 | 13 | Всеволод Дорофеев | <pre> |
197 | 13 | Всеволод Дорофеев | // Функция СтрокаТаблицыЗначенийВСтруктуру создает |
198 | 13 | Всеволод Дорофеев | // структуру со свойствами, как колонки таблицы |
199 | 13 | Всеволод Дорофеев | // значений передаваемой строки |
200 | 13 | Всеволод Дорофеев | // и устанавливает этим свойствам значения |
201 | 13 | Всеволод Дорофеев | // из строки таблицы значений. |
202 | 13 | Всеволод Дорофеев | // |
203 | 13 | Всеволод Дорофеев | // Параметры: |
204 | 13 | Всеволод Дорофеев | // СтрокаТаблицыЗначений - СтрокаТаблицыЗначений. |
205 | 13 | Всеволод Дорофеев | // |
206 | 13 | Всеволод Дорофеев | // ВозвращаемоеЗначение: |
207 | 13 | Всеволод Дорофеев | // Структура |
208 | 13 | Всеволод Дорофеев | // |
209 | 13 | Всеволод Дорофеев | Функция СтрокаТаблицыЗначенийВСтруктуру(СтрокаТаблицыЗначений) Экспорт |
210 | 13 | Всеволод Дорофеев | |
211 | 13 | Всеволод Дорофеев | Структура = Новый Структура; |
212 | 13 | Всеволод Дорофеев | Для каждого Колонка Из СтрокаТаблицыЗначений.Владелец().Колонки Цикл |
213 | 13 | Всеволод Дорофеев | Структура.Вставить(Колонка.Имя, СтрокаТаблицыЗначений[Колонка.Имя]); |
214 | 13 | Всеволод Дорофеев | КонецЦикла; |
215 | 13 | Всеволод Дорофеев | |
216 | 13 | Всеволод Дорофеев | Возврат Структура; |
217 | 13 | Всеволод Дорофеев | |
218 | 13 | Всеволод Дорофеев | КонецФункции |
219 | 13 | Всеволод Дорофеев | |
220 | 13 | Всеволод Дорофеев | </pre> |
221 | 15 | Всеволод Дорофеев | |
222 | 15 | Всеволод Дорофеев | h3. Загрузка таблицы/соответствия из макета с помощью построителя отчета |
223 | 15 | Всеволод Дорофеев | |
224 | 15 | Всеволод Дорофеев | <pre> |
225 | 15 | Всеволод Дорофеев | Функция ЗаполнитьСоответствиеИзМакета(ИмяМакета) |
226 | 15 | Всеволод Дорофеев | |
227 | 15 | Всеволод Дорофеев | Макет = ПолучитьМакет(ИмяМакета); |
228 | 15 | Всеволод Дорофеев | ПостроительЗапроса = Новый ПостроительЗапроса; |
229 | 15 | Всеволод Дорофеев | ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Макет.Область()); |
230 | 15 | Всеволод Дорофеев | ТЗ = ПостроительЗапроса.Результат.Выгрузить(); |
231 | 15 | Всеволод Дорофеев | |
232 | 15 | Всеволод Дорофеев | Результат = Новый Соответствие; |
233 | 15 | Всеволод Дорофеев | Для каждого Стр Из ТЗ Цикл |
234 | 15 | Всеволод Дорофеев | Результат.Вставить(Стр.Колонка1, Стр.Колонка2); |
235 | 15 | Всеволод Дорофеев | КонецЦикла; |
236 | 15 | Всеволод Дорофеев | |
237 | 15 | Всеволод Дорофеев | Возврат Результат; |
238 | 15 | Всеволод Дорофеев | |
239 | 15 | Всеволод Дорофеев | КонецФункции |
240 | 15 | Всеволод Дорофеев | |
241 | 15 | Всеволод Дорофеев | </pre> |
242 | 16 | Всеволод Дорофеев | |
243 | 16 | Всеволод Дорофеев | h3. Варианты преобразования даты из строки (конвертация строки в дату) |
244 | 16 | Всеволод Дорофеев | |
245 | 16 | Всеволод Дорофеев | Проще всего преобразовать строку вида «20151215204222» используя метод «Дата»: |
246 | 16 | Всеволод Дорофеев | |
247 | 16 | Всеволод Дорофеев | Дата(«20151215204222») // 15.12.2015 20:42:22 |
248 | 16 | Всеволод Дорофеев | |
249 | 16 | Всеволод Дорофеев | Со строкой «15.12.2015 20:42:22» также прекрасно справляется типовой метод: |
250 | 16 | Всеволод Дорофеев | |
251 | 16 | Всеволод Дорофеев | Дата(«15.12.2015 20:42:22») //15.12.2015 20:42:22 |
252 | 16 | Всеволод Дорофеев | |
253 | 16 | Всеволод Дорофеев | Второй вариант, если мы знаем отдельные составляющие даты в строковом формате: год, месяц, день и т.д: |
254 | 16 | Всеволод Дорофеев | |
255 | 16 | Всеволод Дорофеев | Дата(«2015″,»12″,»15″,»20″,»42″,»22») // 15.12.2015 20:42:22 |
256 | 16 | Всеволод Дорофеев | |
257 | 16 | Всеволод Дорофеев | Пример преобразования строки вида «2015-12-15 20:42:22»: |
258 | 16 | Всеволод Дорофеев | |
259 | 16 | Всеволод Дорофеев | СтроковаяДата = «2015-12-15 20:42:22»; |
260 | 16 | Всеволод Дорофеев | СтроковаяДата = СтрЗаменить(СтроковаяДата , «-«,»»); |
261 | 16 | Всеволод Дорофеев | СтроковаяДата = СтрЗаменить(СтроковаяДата , «:»,»»); |
262 | 16 | Всеволод Дорофеев | НоваяДата = Дата(СтроковаяДата ); // 15.12.2015 20:42:22 |
263 | 16 | Всеволод Дорофеев | |
264 | 16 | Всеволод Дорофеев | Если дата указан так «20:42:22 2015/12/15» можно преобразовать её следующим образом: |
265 | 16 | Всеволод Дорофеев | |
266 | 16 | Всеволод Дорофеев | СтроковаяДата = «20:42:22 2015/12/15»; |
267 | 16 | Всеволод Дорофеев | СтроковаяДата = СтрЗаменить(СтроковаяДата , «/»,»»); |
268 | 16 | Всеволод Дорофеев | СтроковаяДата = СтрЗаменить(СтроковаяДата , «:»,»»); |
269 | 16 | Всеволод Дорофеев | НоваяДата = Дата(Прав(СтроковаяДата , 8) + Лев(СтроковаяДата ,6)); |
270 | 17 | Всеволод Дорофеев | |
271 | 17 | Всеволод Дорофеев | h3. Генератор случайных чисел |
272 | 17 | Всеволод Дорофеев | |
273 | 17 | Всеволод Дорофеев | <pre> |
274 | 17 | Всеволод Дорофеев | ГСЧ = Новый ГенераторСлучайныхЧисел(); |
275 | 17 | Всеволод Дорофеев | СлучайноеЧисло = ГСЧ.СлучайноеЧисло(0, 100000); |
276 | 17 | Всеволод Дорофеев | </pre> |