наполнение
This commit is contained in:
parent
4e4946c392
commit
684daa47a4
@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
## Через константу
|
||||||
|
```bsl
|
||||||
|
Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
|
||||||
|
```
|
||||||
|
|
||||||
|
> Далее - функции служебного программного интерфейса
|
||||||
|
## На клиенте
|
||||||
|
```bsl
|
||||||
|
Валюта = ЗначениеНастроекВызовСервера.ВалютаРегламентированногоУчетаОрганизации(Организация);
|
||||||
|
```
|
||||||
|
|
||||||
|
## На сервере
|
||||||
|
```bsl
|
||||||
|
Валюта = ЗначениеНастроекКлиентСерверПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
|
||||||
|
```
|
@ -0,0 +1,40 @@
|
|||||||
|
```bsl
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура КорзинаНоменклатурыРазбитьСтроку(Команда)
|
||||||
|
|
||||||
|
ОписаниеОповещения = Новый ОписаниеОповещения("КорзинаНоменклатурыРазбитьСтрокуЗавершение", ЭтотОбъект);
|
||||||
|
|
||||||
|
ПараметрыРазбиения = РаботаСТабличнымиЧастямиКлиент.ПараметрыРазбиенияСтроки();
|
||||||
|
ПараметрыРазбиения.ИмяПоляКоличество = "Количество";
|
||||||
|
ПараметрыРазбиения.Заголовок = "Введите количество для новой строки";
|
||||||
|
ПараметрыРазбиения.РазрешитьНулевоеКоличество = Ложь;
|
||||||
|
ПараметрыРазбиения.Количество = Неопределено;
|
||||||
|
|
||||||
|
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(
|
||||||
|
ТаблицаКорзинаНоменклатуры,
|
||||||
|
Элементы.ТаблицаКорзинаНоменклатуры,
|
||||||
|
ОписаниеОповещения,
|
||||||
|
ПараметрыРазбиения);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура КорзинаНоменклатурыРазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
|
||||||
|
|
||||||
|
ТекДанн = Элементы.ТаблицаКорзинаНоменклатуры.ТекущиеДанные;
|
||||||
|
|
||||||
|
// обработка новой и старой строк при необходимости
|
||||||
|
Если НоваяСтрока <> Неопределено Тогда
|
||||||
|
|
||||||
|
СтруктураДействий = Новый Структура;
|
||||||
|
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
|
||||||
|
ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекДанн, СтруктураДействий, КэшированныеЗначения);
|
||||||
|
ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
|
||||||
|
|
||||||
|
Элементы.ТаблицаКорзинаНоменклатуры.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
```
|
@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
title: ВТ «Плановые начисления» сотрудников на дату
|
||||||
|
---
|
||||||
|
Сначала необходимо создать временную таблицу отборов, в которой будет 2 поля `Сотрудник` и `Дата`. Эти поля заполняем списком сотрудников, по которым необходимо получить начисления и дату актуальности. В примере ниже создается временная таблица `ВТСотрудникиПериоды`, в которую из формы через таблицу значений передаются сотрудники.
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
|
||||||
|
|
||||||
|
ТЗ = РеквизитФормыВЗначение("Сотрудники", Тип("ТаблицаЗначений"));
|
||||||
|
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ
|
||||||
|
| Сотрудники.Сотрудник КАК Сотрудник,
|
||||||
|
| &Дата КАК Период
|
||||||
|
|ПОМЕСТИТЬ ВТСотрудникиПериоды
|
||||||
|
|ИЗ
|
||||||
|
| &ТЗ КАК Сотрудники";
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("ТЗ", ТЗ);
|
||||||
|
Запрос.УстановитьПараметр("Дата", ТекущаяДатаСеанса());
|
||||||
|
Запрос.Выполнить();
|
||||||
|
```
|
||||||
|
|
||||||
|
Далее вызываем функцию общего модуля `КадровыйУчетРасширенный.ЗапросВТПлановыеНачисленияСотрудников`, которая вернет текст запроса для получения начислений:
|
||||||
|
```bsl
|
||||||
|
ЗапросНачисления = КадровыйУчетРасширенный.ЗапросВТПлановыеНачисленияСотрудников(
|
||||||
|
, Истина // Только разрешенные
|
||||||
|
, "ВТНачисления" // Имя создаваемой ВТ
|
||||||
|
, "ВТСотрудникиПериоды" // Имя ВТ-отбора (создали выше)
|
||||||
|
, "Сотрудник, Период"); // Имя полей таблицы ВТ-отбора
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь полученный текст запроса необходимо передать в сам запрос. В менеджере временных таблиц такого запроса должна быть таблица отборов, которая была указана в качестве аргумента функции `ЗапросВТПлановыеНачисленияСотрудников` (в нашем случае `ВТСотрудникиПериоды`). Проще всего передать текст в уже имеющийся запрос:
|
||||||
|
```bsl
|
||||||
|
Запрос.Текст = ЗапросНачисления.Текст;
|
||||||
|
Запрос.Выполнить();
|
||||||
|
```
|
||||||
|
В результате - Временная таблица со всеми начислениями сотрудников
|
@ -0,0 +1,7 @@
|
|||||||
|
Для того, чтобы нумерация документов была "Типовой", длину кода нужно установить **11 символов**, а в модуле объекта документа прописать.
|
||||||
|
```bsl
|
||||||
|
Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
|
||||||
|
ПрефиксацияОбъектовСобытия.УстановитьПрефиксИнформационнойБазыИОрганизации(ЭтотОбъект, СтандартнаяОбработка, Префикс);
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
Для того, чтобы этот код работал, нужно, чтобы в реквизитах документа обязательно была `Организация`
|
@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
title: Как вывести произвольный табличный документ в общую форму печати
|
||||||
|
---
|
||||||
|
```bsl
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ВывестиНаПечать(Команда)
|
||||||
|
|
||||||
|
Если Не ПроверитьЗаполнение(); Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ТабДок = СформироватьТабличныйДокумент();
|
||||||
|
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("ИмяКоллекцииПечатныхФорм");
|
||||||
|
|
||||||
|
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДок;
|
||||||
|
КоллекцияПечатныхФорм[0].Экземпляров = 1;
|
||||||
|
КоллекцияПечатныхФорм[0].СинонимМакета = "Синоним макета;
|
||||||
|
|
||||||
|
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, Неопределено, ЭтотОбъект);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
@ -0,0 +1,19 @@
|
|||||||
|
```bsl
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Процедура ОтправитьСообщенияПоСписку(ТекстСообщения, Отправитель, СписокПолучатеелей)
|
||||||
|
|
||||||
|
Сообщение = Обсуждения.ОписаниеСообщения(ТекстСообщения);
|
||||||
|
|
||||||
|
Для Каждого Пользователь Из СписокПользователей Цикл
|
||||||
|
|
||||||
|
ПолучательВМассиве = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Пользователь);
|
||||||
|
Попытка
|
||||||
|
Обсуждения.ОтправитьСообщение(Отправитель, ПолучательВМассиве, Сообщение, Неопределено);
|
||||||
|
Исключение
|
||||||
|
ЗаписьЖурналаРегистрации(...);
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
@ -0,0 +1,25 @@
|
|||||||
|
```bsl
|
||||||
|
// Функция - Адрес электронной почты пользователя
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Пользователь - СправочникСсылка.Пользователи -
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка - Проверенный адрес электронной почты. Если данные контактной информации не отвечают трвебованиям к адресу ЭП,
|
||||||
|
// возвращается пустая строка
|
||||||
|
//
|
||||||
|
Функция АдресЭлектроннойПочтыПользователя(Пользователь) Экспорт
|
||||||
|
|
||||||
|
АдресЭлектроннойПочты = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Пользователь,
|
||||||
|
Справочники.ВидыКонтактнойИнформации.EmailПользователя);
|
||||||
|
|
||||||
|
Результат = "";
|
||||||
|
|
||||||
|
Если ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(АдресЭлектроннойПочты, Ложь) Тогда
|
||||||
|
Результат = АдресЭлектроннойПочты;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Результат;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
@ -0,0 +1,30 @@
|
|||||||
|
```bsl
|
||||||
|
|
||||||
|
Процедура ОтправитьПисьмо(АдресЭлектроннойПочты, ТекстСообщения, ТемаСообщения) Экспорт
|
||||||
|
|
||||||
|
Если Не ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(АдресЭлектроннойПочты, Ложь) Тогда
|
||||||
|
ЗаписьЖурналаРегистрации("Рассылка уведомлений на электронную почту",
|
||||||
|
УровеньЖурналаРегистрации.Ошибка,,,
|
||||||
|
СтрШаблон("Ошибка отправки сообщения. Адрес ""%1"" не валиден", АдресЭлектроннойПочты));
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
УчетнаяЗапись = РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись();
|
||||||
|
|
||||||
|
ПараметрыПисьма = Новый Структура;
|
||||||
|
ПараметрыПисьма.Вставить("Кому", АдресЭлектроннойПочты);
|
||||||
|
ПараметрыПисьма.Вставить("Тема", ТемаСообщения);
|
||||||
|
ПараметрыПисьма.Вставить("Тело", ТекстСообщения);
|
||||||
|
|
||||||
|
Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(УчетнаяЗапись, ПараметрыПисьма);
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
РаботаСПочтовымиСообщениями.ОтправитьПисьмо(УчетнаяЗапись, Письмо);
|
||||||
|
Исключение
|
||||||
|
ЗаписьЖурналаРегистрации("Рассылка уведомлений на электронную почту",
|
||||||
|
УровеньЖурналаРегистрации.Ошибка,,,
|
||||||
|
СтрШаблон("Ошибка отправки сообщения. Описание ошибки %1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
@ -0,0 +1,13 @@
|
|||||||
|
```bsl
|
||||||
|
// QRСтрока - Строка - данные, которые необходимо разместить в QR-коде.
|
||||||
|
//
|
||||||
|
// УровеньКоррекции - Число - уровень погрешности изображения, при котором данный QR-код все еще возможно 100%
|
||||||
|
// распознать.
|
||||||
|
// Параметр должен иметь тип целого и принимать одно из 4 допустимых значений:
|
||||||
|
// 0 (7 % погрешности), 1 (15 % погрешности), 2 (25 % погрешности), 3 (35 % погрешности).
|
||||||
|
//
|
||||||
|
// Размер - Число - определяет длину стороны выходного изображения в пикселях.
|
||||||
|
// Если минимально возможный размер изображения больше этого параметра - код сформирован не будет.
|
||||||
|
//
|
||||||
|
КартинкаQR = ГенерацияШтрихкода.ДанныеQRКода(QRСтрока, УровеньКоррекции, Размер)
|
||||||
|
```
|
@ -0,0 +1,55 @@
|
|||||||
|
```bsl
|
||||||
|
// Структура:
|
||||||
|
// * Ширина - Число - ширина изображения штрих кода.
|
||||||
|
// * Высота - Число - высота изображения штрих кода.
|
||||||
|
// * ТипКода - Число - штрихкода.
|
||||||
|
// Возможные значение:
|
||||||
|
// 99 - Авто выбор
|
||||||
|
// 0 - EAN8
|
||||||
|
// 1 - EAN13
|
||||||
|
// 2 - EAN128
|
||||||
|
// 3 - Code39
|
||||||
|
// 4 - Code128
|
||||||
|
// 5 - Code16k
|
||||||
|
// 6 - PDF417
|
||||||
|
// 7 - Standart (Industrial) 2 of 5
|
||||||
|
// 8 - Interleaved 2 of 5
|
||||||
|
// 9 - Code39 Расширение
|
||||||
|
// 10 - Code93
|
||||||
|
// 11 - ITF14
|
||||||
|
// 12 - RSS14
|
||||||
|
// 14 - EAN13AddOn2
|
||||||
|
// 15 - EAN13AddOn5
|
||||||
|
// 16 - QR
|
||||||
|
// 17 - GS1DataBarExpandedStacked
|
||||||
|
// 18 - Datamatrix ASCII
|
||||||
|
// 19 - Datamatrix BASE256
|
||||||
|
// 20 - Datamatrix TEXT
|
||||||
|
// 21 - Datamatrix C40
|
||||||
|
// 22 - Datamatrix X12
|
||||||
|
// 23 - Datamatrix EDIFACT
|
||||||
|
// 24 - Datamatrix GS1ASCII
|
||||||
|
// 25 - Aztec
|
||||||
|
// * ОтображатьТекст - Булево - отображать HRI теста для штрихкода.
|
||||||
|
// * РазмерШрифта - Число - размер шрифта HRI теста для штрихкода.
|
||||||
|
// * УголПоворота - Число - угол поворота.
|
||||||
|
// Возможные значения: 0, 90, 180, 270.
|
||||||
|
// * Штрихкод - Строка - значение штрихкод в виде строки или Base64.
|
||||||
|
// * ТипВходныхДанных - Число - тип входных данных
|
||||||
|
// Возможные значения: 0 - Строка, 1 - Base64
|
||||||
|
// * ПрозрачныйФон - Булево - прозрачный фон изображения штрихкода.
|
||||||
|
// * УровеньКоррекцииQR - Число - уровень коррекции штрихкода QR.
|
||||||
|
// Возможные значения: 0 - L, 1 - M, 2 - Q, 3 - H.
|
||||||
|
// * Масштабировать - Булево - масштабировать изображение штрихкода.
|
||||||
|
// * СохранятьПропорции - Булево - сохранять пропорции изображения штрихкода.
|
||||||
|
// * ВертикальноеВыравнивание - Число - вертикальное выравнивание штрихкода.
|
||||||
|
// Возможные значения: 1 - По верхнему краю, 2 - По центру, 3 - По нижнему краю
|
||||||
|
// * GS1DatabarКоличествоСтрок - Число - количество строк в штрихкоде GS1Databar.
|
||||||
|
// * УбратьЛишнийФон - Булево
|
||||||
|
// * ЛоготипКартинка - Строка - строка с base64 представлением png картинки логотипа.
|
||||||
|
// * ЛоготипРазмерПроцентОтШК - Число - процент от генерированного QR для вписывания логотипа.
|
||||||
|
//
|
||||||
|
Параметры = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
|
||||||
|
|
||||||
|
ИзображениеШтрихкода = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
|
||||||
|
```
|
@ -0,0 +1,6 @@
|
|||||||
|
```bsl
|
||||||
|
ЭлементОтбора = СписокДокументов.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
|
||||||
|
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
|
||||||
|
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
|
||||||
|
ЭлементОтбора.ПравоеЗначение = ДатаНачала;
|
||||||
|
```
|
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
```bsl
|
||||||
|
Элементы.СписокДокументов.Период.Вариант = ВариантСтандартногоПериода.ПроизвольныйПериод;
|
||||||
|
Элементы.СписокДокументов.Период.ДатаНачала = ДатаНачала;
|
||||||
|
Элементы.СписокДокументов.Период.ДатаОкончания = ДатаОкончания;
|
||||||
|
Элементы.СписокДокументов.Обновить();
|
||||||
|
```
|
@ -0,0 +1,106 @@
|
|||||||
|
---
|
||||||
|
title: ОбработкаПолученияДанныхВыбора
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📌 Назначение
|
||||||
|
Обработчик `ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)` позволяет:
|
||||||
|
- Влиять на формирование списка выбора.
|
||||||
|
- Модифицировать параметры отбора.
|
||||||
|
- Полностью формировать список выбора вручную.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Параметры обработчика
|
||||||
|
|
||||||
|
- `ДанныеВыбора`: переменная для возврата кастомного списка.
|
||||||
|
- `Параметры`: структура параметров, включая отборы и строку поиска.
|
||||||
|
- `СтандартнаяОбработка`:
|
||||||
|
- `Истина`: платформа формирует список выбора.
|
||||||
|
- `Ложь`: список задаётся вручную через `ДанныеВыбора`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔹 Пример 1: Модификация параметров отбора
|
||||||
|
|
||||||
|
**Задача:** Выводить товары только от указанного поставщика и не услуги.
|
||||||
|
|
||||||
|
### Решение:
|
||||||
|
1. В `Параметры.Отбор` добавить:
|
||||||
|
```1C
|
||||||
|
Параметры.Отбор.Вставить("ВидТовара", Перечисления.ВидыТоваров.Товар);
|
||||||
|
```
|
||||||
|
2. Оставить `СтандартнаяОбработка = Истина`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔹 Пример 2: Полное переопределение — простой список
|
||||||
|
|
||||||
|
**Задача:** Предлагать склады, не являющиеся розничными.
|
||||||
|
|
||||||
|
### Пример кода:
|
||||||
|
```1C
|
||||||
|
СтандартнаяОбработка = Ложь;
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст = "ВЫБРАТЬ Склады.Ссылка ИЗ Справочник.Склады КАК Склады
|
||||||
|
ГДЕ Склады.Розничный = ЛОЖЬ
|
||||||
|
И Склады.Наименование ПОДОБНО &СтрокаПоиска";
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%");
|
||||||
|
|
||||||
|
Результат = Запрос.Выполнить();
|
||||||
|
Список = Новый СписокЗначений;
|
||||||
|
|
||||||
|
Пока Результат.Выбрать().Следующий() Цикл
|
||||||
|
Список.Добавить(Выборка.Ссылка);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ДанныеВыбора = Список;
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔹 Пример 3: Полное переопределение — сложный список
|
||||||
|
|
||||||
|
**Задача:** Выводить поставщиков с пометкой удаления и предупреждением о ненадёжности.
|
||||||
|
|
||||||
|
### Пример кода:
|
||||||
|
```1C
|
||||||
|
СтандартнаяОбработка = Ложь;
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст = "ВЫБРАТЬ Поставщики.Ссылка, Поставщики.ПометкаУдаления, Поставщики.Ненадежный
|
||||||
|
ИЗ Справочник.Поставщики КАК Поставщики
|
||||||
|
ГДЕ Поставщики.Наименование ПОДОБНО &СтрокаПоиска";
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%");
|
||||||
|
|
||||||
|
Результат = Запрос.Выполнить();
|
||||||
|
Список = Новый СписокЗначений;
|
||||||
|
|
||||||
|
Пока Результат.Выбрать().Следующий() Цикл
|
||||||
|
Структура = Новый Структура;
|
||||||
|
Структура.Вставить("Значение", Выборка.Ссылка);
|
||||||
|
Структура.Вставить("ПометкаУдаления", Выборка.ПометкаУдаления);
|
||||||
|
|
||||||
|
Если Выборка.Ненадежный Тогда
|
||||||
|
Структура.Вставить("Предупреждение", "Это ненадежный поставщик...");
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Список.Добавить(Структура);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ДанныеВыбора = Список;
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Особенности производительности
|
||||||
|
|
||||||
|
Обработчик вызывается:
|
||||||
|
- При автоподборе.
|
||||||
|
- При потере фокуса поля ввода.
|
||||||
|
- При быстром выборе.
|
||||||
|
|
||||||
|
**Рекомендация:** тщательно оптимизировать запросы и код обработчика.
|
||||||
|
|
@ -0,0 +1,9 @@
|
|||||||
|
1. Установите EDT
|
||||||
|
|
||||||
|
2. После установки EDT для того, чтобы файлы проектов хранились в произвольном расположении, создайте папку в удобном месте, например `D:\EDT`
|
||||||
|
|
||||||
|
3. Внесите корректировки в файл настроек EDT (по умолчанию расположен `C:\Program Files\1C\1CE\components\1c-edt-2023.2.4+6-x86_64\1cedt.ini`)
|
||||||
|
|
||||||
|
4. Для того, чтобы EDT выделяла больше оперативной памяти, необходимо откорректировать строку `-Xmx4096m`, где вместо 4096 указать произвольный объем оперативной памяти в мегабайтах
|
||||||
|
|
||||||
|
5. В продолжение п.5, для того, чтобы проекты сохранялись в произвольном месте, нужно добавить строку `-Djava.io.tmpdir=D:\EDT`, где можно указать любой удобный путь.
|
@ -1,7 +1,3 @@
|
|||||||
---
|
|
||||||
title: Разрешенное имя переменной из любой строки
|
|
||||||
slug: knowledge-base/snippety/razreshennoe-imya-peremennoy-iz-lyuboy-stroki
|
|
||||||
---
|
|
||||||
```bsl
|
```bsl
|
||||||
// Функция - Разрешенное имя переменной из наименования
|
// Функция - Разрешенное имя переменной из наименования
|
||||||
//
|
//
|
||||||
@ -21,7 +17,7 @@ slug: knowledge-base/snippety/razreshennoe-imya-peremennoy-iz-lyuboy-stroki
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Наименование = СтрЗаменить(Наименование, Символы.ВК + Символы.ВТаб + Символы.НПП + Символы.ПС + Символы.ПФ + Символы.Таб, " ");
|
Наименование = СтрЗаменить(Наименование, Символы.ВК + Символы.ВТаб + Символы.НПП + Символы.ПС + Символы.ПФ + Символы.Таб, " ");
|
||||||
|
|
||||||
Наименование = СтрЗаменитьПоРегулярномуВыражению(Наименование, "[^а-яА-ЯёЁa-zA-Z0-9 ]", "", Истина, Ложь);
|
Наименование = СтрЗаменитьПоРегулярномуВыражению(Наименование, "[^а-яА-ЯёЁa-zA-Z0-9 ]", "", Истина, Ложь);
|
||||||
|
|
||||||
МассивПодстрок = СтрРазделить(Наименование, " ", Ложь);
|
МассивПодстрок = СтрРазделить(Наименование, " ", Ложь);
|
@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
```bsl
|
||||||
|
Функция ФайлЗаблокирован(ПолноеИмяФайла) Экспорт
|
||||||
|
|
||||||
|
ЕстьБлокировка = Ложь;
|
||||||
|
|
||||||
|
Файл = Новый Файл(ПолноеИмяФайла);
|
||||||
|
Если Файл.Существует() Тогда
|
||||||
|
Попытка
|
||||||
|
ЗаписьТекста = Новый ЗаписьТекста(ПолноеИмяФайла, , , Истина);
|
||||||
|
Исключение
|
||||||
|
ЕстьБлокировка = Истина;
|
||||||
|
КонецПопытки;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат ЕстьБлокировка;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
```bsl
|
||||||
|
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
Настройки = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки();
|
||||||
|
Дата = Настройки.ПараметрыДанных.Элементы.Найти("Дата").Значение.Дата;
|
||||||
|
Сотрудник = Настройки.ПараметрыДанных.Элементы.Найти("Сотрудник").Значение;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
@ -0,0 +1,43 @@
|
|||||||
|
|
||||||
|
## Сохранение настроек
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Процедура СохранитьНастройкиФормы(ВидПечати)
|
||||||
|
|
||||||
|
КлючОбъектаНастроек = "Расш1_ФормаНастроекПечатиЭтикеток";
|
||||||
|
КлючНастроек = "Расш1_ВидПечати";
|
||||||
|
|
||||||
|
ИмяТекущегоПользователя = ИмяПользователя();
|
||||||
|
Настройки = Новый Структура("ВидПечати", ВидПечати); // Структура с произвольными значениями
|
||||||
|
ХранилищеОбщихНастроек.Сохранить(КлючОбъектаНастроек, КлючНастроек, Настройки, , ИмяТекущегоПользователя);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
## Восстановление настроек
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Функция СохраненныеНастройкиФормы()
|
||||||
|
|
||||||
|
КлючОбъектаНастроек = "Расш1_ФормаНастроекПечатиЭтикеток";
|
||||||
|
КлючНастроек = "Расш1_ВидПечати";
|
||||||
|
|
||||||
|
ИмяТекущегоПользователя = ИмяПользователя();
|
||||||
|
|
||||||
|
ОшибкаПолученияНастроек = Ложь;
|
||||||
|
Попытка
|
||||||
|
Настройки = ХранилищеОбщихНастроек.Загрузить(КлючОбъектаНастроек, КлючНастроек, , ИмяТекущегоПользователя);
|
||||||
|
Исключение
|
||||||
|
ОшибкаПолученияНастроек = Истина;
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
Если ОшибкаПолученияНастроек Тогда
|
||||||
|
Настройки = Новый Структура("ВидПечати", 0);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Настройки;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
```
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,53 @@
|
|||||||
|
|
||||||
|
### Обычная группа без отображения
|
||||||
|
```bsl
|
||||||
|
ГруппаДатаНомер = Элементы.Добавить("ГруппаОбычная", Тип("ГруппаФормы"),ЭтаФорма);
|
||||||
|
ГруппаДатаНомер.Вид = ВидГруппыФормы.ОбычнаяГруппа;
|
||||||
|
ГруппаДатаНомер.Отображение = ОтображениеОбычнойГруппы.Нет;
|
||||||
|
ГруппаДатаНомер.ОтображатьЗаголовок = ЛОЖЬ;
|
||||||
|
ГруппаДатаНомер.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Обычная группа
|
||||||
|
```bsl
|
||||||
|
//Пример создания обычной группы
|
||||||
|
ГруппаШапка = Элементы.Добавить("ГруппаШапка", Тип("ГруппаФормы"), ЭтотОбъект);
|
||||||
|
ГруппаШапка.Вид = ВидГруппыФормы.ОбычнаяГруппа;
|
||||||
|
ГруппаШапка.Заголовок = "Основные реквизиты";
|
||||||
|
ГруппаШапка.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение;
|
||||||
|
ГруппаШапка.ОтображатьЗаголовок = ИСТИНА;
|
||||||
|
ГруппаШапка.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
|
||||||
|
ГруппаШапка.РастягиватьПоГоризонтали = ИСТИНА;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Свертываемая группа
|
||||||
|
```bsl
|
||||||
|
ГруппаХарактеристики = Элементы.Добавить("СвертываемаяГруппа", Тип("ГруппаФормы"), Элементы.СтраницаКонтейнер);
|
||||||
|
ГруппаХарактеристики.Заголовок = "СвертываемаяГруппа";
|
||||||
|
ГруппаХарактеристики.Вид = ВидГруппыФормы.ОбычнаяГруппа;
|
||||||
|
ГруппаХарактеристики.Поведение = ПоведениеОбычнойГруппы.Свертываемая;
|
||||||
|
ГруппаХарактеристики.ОтображатьОтступСлева = Истина;
|
||||||
|
ГруппаХарактеристики.ОтображениеУправления = ОтображениеУправленияОбычнойГруппы.Картинка;
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Группа страниц
|
||||||
|
```bsl
|
||||||
|
//Пример создания группы страниц
|
||||||
|
ГруппаСтраниц = Элементы.Добавить("ГруппаСтраницы", Тип("ГруппаФормы"), ЭтотОбъект);
|
||||||
|
ГруппаСтраниц.Вид = ВидГруппыФормы.Страницы;
|
||||||
|
ГруппаСтраниц.ОтображениеСтраниц = ОтображениеСтраницФормы.ЗакладкиСверху;
|
||||||
|
ГруппаСтраниц.РастягиватьПоГоризонтали = ИСТИНА;
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Страницы
|
||||||
|
```bsl
|
||||||
|
СтраницаТовары = Элементы.Добавить("СтраницаТовары", Тип("ГруппаФормы"), ГруппаСтраниц);
|
||||||
|
СтраницаТовары.Вид = ВидГруппыФормы.Страница;
|
||||||
|
СтраницаТовары.Заголовок = "Товары";
|
||||||
|
|
||||||
|
СтраницаДополнительно = Элементы.Добавить("СтраницаДополнительно", Тип("ГруппаФормы"), ГруппаСтраниц);
|
||||||
|
СтраницаДополнительно.Вид = ВидГруппыФормы.Страница;
|
||||||
|
СтраницаДополнительно.Заголовок = "Дополнительно";
|
||||||
|
```
|
@ -0,0 +1,15 @@
|
|||||||
|
### Декорация "Надпись"
|
||||||
|
```bsl
|
||||||
|
НовыйЭлемент = Элементы.Добавить("ЗаголовокТовара", Тип("ДекорацияФормы"),СтраницаТовары);
|
||||||
|
НовыйЭлемент.Вид = ВидДекорацииФормы.Надпись;
|
||||||
|
НовыйЭлемент.Заголовок = "Глобус";
|
||||||
|
```
|
||||||
|
### Декорация "Картинка"
|
||||||
|
```bsl
|
||||||
|
НовыйЭлемент = Элементы.Добавить("КартинкаТовара", Тип("ДекорацияФормы"),СтраницаТовары);
|
||||||
|
НовыйЭлемент.Вид = ВидДекорацииФормы.Картинка;
|
||||||
|
НовыйЭлемент.Картинка = БиблиотекаКартинок.ГеографическаяСхема;
|
||||||
|
НовыйЭлемент.РазмерКартинки = РазмерКартинки.Растянуть;
|
||||||
|
НовыйЭлемент.Ширина = 20;
|
||||||
|
НовыйЭлемент.Высота = 8;
|
||||||
|
```
|
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
Для работы кнопок, необходимо наличие команды. Если на форме нет определенной команды, то её необходимо создать программно.
|
||||||
|
### Создаем команду
|
||||||
|
```bsl
|
||||||
|
НоваяКоманда = Команды.Добавить("ОбщаяКоманда");
|
||||||
|
НоваяКоманда.Заголовок = "Общая команда";
|
||||||
|
НоваяКоманда.Действие = "ОбщееДействие"; //указываем только имя процедуры
|
||||||
|
```
|
||||||
|
### Создаем кнопку
|
||||||
|
```bsl
|
||||||
|
НовыйЭлемент = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"),СтраницаТовары);
|
||||||
|
НовыйЭлемент.Заголовок = "Привет мир!";
|
||||||
|
НовыйЭлемент.ИмяКоманды = "ОбщаяКоманда";
|
||||||
|
```
|
@ -0,0 +1,23 @@
|
|||||||
|
```bsl
|
||||||
|
//Создание полей
|
||||||
|
|
||||||
|
НовыйЭлемент = Элементы.Добавить("Номер", Тип("ПолеФормы"),ГруппаДатаНомер);
|
||||||
|
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
|
||||||
|
НовыйЭлемент.ПутьКДанным = "Номер";
|
||||||
|
|
||||||
|
НовыйЭлемент = Элементы.Добавить("Дата", Тип("ПолеФормы"),ГруппаДатаНомер);
|
||||||
|
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
|
||||||
|
НовыйЭлемент.ПутьКДанным = "Дата";
|
||||||
|
|
||||||
|
НовыйЭлемент = Элементы.Добавить("Наименование", Тип("ПолеФормы"),ГруппаШапка);
|
||||||
|
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
|
||||||
|
НовыйЭлемент.ПутьКДанным = "Наименование";
|
||||||
|
|
||||||
|
НовыйЭлемент = Элементы.Добавить("Комментарий", Тип("ПолеФормы"),СтраницаДополнительно);
|
||||||
|
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
|
||||||
|
НовыйЭлемент.ПутьКДанным = "Комментарий";
|
||||||
|
|
||||||
|
НовыйЭлемент = Элементы.Добавить("ПометкаУдаления", Тип("ПолеФормы"),СтраницаДополнительно);
|
||||||
|
НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
|
||||||
|
НовыйЭлемент.ПутьКДанным = "ПометкаУдаления";
|
||||||
|
```
|
@ -0,0 +1,61 @@
|
|||||||
|
|
||||||
|
## Пример добавления
|
||||||
|
|
||||||
|
```1c
|
||||||
|
ДобавляемыеРеквизиты = Новый Массив; // Определяем массив добавляемых реквизитов
|
||||||
|
|
||||||
|
НовыйРеквизит = Новый РеквизитФормы(
|
||||||
|
"Комментарий",
|
||||||
|
Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(500))
|
||||||
|
);
|
||||||
|
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
|
||||||
|
|
||||||
|
НовыйРеквизит = Новый РеквизитФормы(
|
||||||
|
"Номер",
|
||||||
|
Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0))
|
||||||
|
);
|
||||||
|
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
|
||||||
|
|
||||||
|
НовыйРеквизит = Новый РеквизитФормы(
|
||||||
|
"Дата",
|
||||||
|
Новый ОписаниеТипов("Дата", , , Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя))
|
||||||
|
);
|
||||||
|
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
|
||||||
|
|
||||||
|
НовыйРеквизит = Новый РеквизитФормы(
|
||||||
|
"Наименование",
|
||||||
|
Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(150))
|
||||||
|
);
|
||||||
|
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
|
||||||
|
|
||||||
|
НовыйРеквизит = Новый РеквизитФормы(
|
||||||
|
"ПометкаУдаления",
|
||||||
|
Новый ОписаниеТипов("Булево")
|
||||||
|
);
|
||||||
|
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
|
||||||
|
|
||||||
|
ЭтотОбъект.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Синтаксис
|
||||||
|
|
||||||
|
#### **`ИзменитьРеквизиты(<ДобавляемыеРеквизиты>, <УдаляемыеРеквизиты>)`**
|
||||||
|
|
||||||
|
### Параметры
|
||||||
|
|
||||||
|
#### `<ДобавляемыеРеквизиты>` (необязательный)
|
||||||
|
|
||||||
|
- **Тип:** `Массив`
|
||||||
|
- **Описание:** Массив, содержащий объекты типа `РеквизитФормы`.
|
||||||
|
|
||||||
|
Добавлять можно реквизиты верхнего уровня и вложенные реквизиты, являющиеся колонками.
|
||||||
|
К добавленным реквизитам верхнего уровня из модуля можно обращаться только с помощью конструкции:
|
||||||
|
|
||||||
|
```1c
|
||||||
|
ЭтотОбъект.<Имя реквизита>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `<УдаляемыеРеквизиты>` (необязательный)
|
||||||
|
|
||||||
|
- **Тип:** `Массив`
|
||||||
|
- **Описание:** Массив, содержащий строки, описывающие пути к удаляемым реквизитам.
|
@ -0,0 +1,20 @@
|
|||||||
|
Для работы таблицы формы необходимо наличие реквизита **`Таблица значений`** или **`Динамический список`**. Не забывайти про путь, если таблица находиться в объекте, тогда указываем полный путь, пример: **`Объект.Товары`** и так же для колонок **`Объект.Товары.Номенклатура`**.
|
||||||
|
|
||||||
|
### Создаем таблицу
|
||||||
|
```bsl
|
||||||
|
ТаблицаФормы = Элементы.Добавить("МояТаблицаТоваров", Тип("ТаблицаФормы"),ЭтотОбъект);
|
||||||
|
ТаблицаФормы.ПутьКДанным = "Объект.Товары";
|
||||||
|
```
|
||||||
|
|
||||||
|
### Создаем колонки
|
||||||
|
```bsl
|
||||||
|
//Создаем колонку для выбора и ввода
|
||||||
|
НовыйЭлемент = Форма.Элементы.Добавить("МояТаблицаТоваровНоменклатура",Тип("ПолеФормы"),ТаблицаФормы);
|
||||||
|
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
|
||||||
|
НовыйЭлемент.ПутьКДанным = "Объект.Товары.Номенклатура";
|
||||||
|
|
||||||
|
//Создаем колонку для булево
|
||||||
|
НовыйЭлемент = Форма.Элементы.Добавить("МояТаблицаТоваровПроведен",Тип("ПолеФормы"),ТаблицаФормы);
|
||||||
|
НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
|
||||||
|
НовыйЭлемент.ПутьКДанным = "Объект.Товары.Используется";
|
||||||
|
```
|
@ -17,7 +17,8 @@
|
|||||||
НовыйЭлемент = УсловноеОформление.Элементы.Добавить();
|
НовыйЭлемент = УсловноеОформление.Элементы.Добавить();
|
||||||
НовыйЭлемент.Использование = Истина;
|
НовыйЭлемент.Использование = Истина;
|
||||||
|
|
||||||
// Настраиваем оформление. Варианты параметров можно посмотреть в форме настройки условного оформления на форме
|
// Настраиваем оформление. Варианты параметров можно посмотреть в форме настройки условного оформления на форме
|
||||||
|
//(цвет фона, цвет текста, видимость, доступность и пр.)
|
||||||
НовыйЭлемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветВажного);
|
НовыйЭлемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветВажного);
|
||||||
НовыйЭлемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ЦветФонаГруппировкиОтчета1);
|
НовыйЭлемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ЦветФонаГруппировкиОтчета1);
|
||||||
|
|
@ -0,0 +1,156 @@
|
|||||||
|
## 📝 Описание
|
||||||
|
|
||||||
|
Стандартные формы выбора даты не предполагают выбор времени — его нужно вводить вручную в поле ввода. Для удобства можно создать собственную форму и вызывать её при выборе даты в поле ввода.
|
||||||
|
|
||||||
|
## 🛠 Создание формы, параметров, реквизитов
|
||||||
|
|
||||||
|
1. Создаём новую форму с реквизитами:
|
||||||
|
- `День` (тип: Дата)
|
||||||
|
- `Часы` (тип: Число)
|
||||||
|
- `Минуты` (тип: Число)
|
||||||
|
|
||||||
|
2. Размещаем реквизиты на форме и объединяем их в группу с горизонтальной группировкой.
|
||||||
|
|
||||||
|
3. Создаём ключевой параметр `Дата` (тип: Дата, состав: Дата и время), в который будем передавать исходную дату в форму извне.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
4. Для реквизитов `Часы` и `Минуты` устанавливаем вид как «Поле переключателя» с видом переключателя «Тумблер».
|
||||||
|
|
||||||
|
5. Для `Часы` определяем список выбора и устанавливаем количество колонок = 2.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
6. Для `Минуты` делаем аналогично, но количество колонок = 1 и список выбора немного другой.
|
||||||
|
|
||||||
|
7. Добавляем команду `Выбрать` и размещаем её на командной панели.
|
||||||
|
|
||||||
|
8. Добавляем декорацию `Представление времени`, настраиваем шрифт, цвет и прочее. Эта декорация будет показывать выбранные значения.
|
||||||
|
|
||||||
|
## 🧩 Модуль формы
|
||||||
|
|
||||||
|
### Обработчики событий формы
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&НаСервере
|
||||||
|
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||||
|
Если ЗначениеЗаполнено(Параметры.Дата) Тогда
|
||||||
|
СтруктураДаты = СтруктураДаты(Параметры.Дата);
|
||||||
|
День = Параметры.Дата;
|
||||||
|
Часы = СтруктураДаты.Час;
|
||||||
|
Минуты = СтруктураДаты.Минута;
|
||||||
|
Иначе
|
||||||
|
День = ТекущаяДатаСеанса();
|
||||||
|
Часы = 8;
|
||||||
|
Минуты = 0;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ПриОткрытии(Отказ)
|
||||||
|
ОбновитьДекорациюВыбранноеВремя();
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
### Обработчики событий элементов шапки формы
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ДеньВыбор(Элемент, ВыбраннаяДата)
|
||||||
|
ВыбратьДатуВремя();
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ДеньПриИзменении(Элемент)
|
||||||
|
ОбновитьДекорациюВыбранноеВремя();
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ЧасыПриИзменении(Элемент)
|
||||||
|
ОбновитьДекорациюВыбранноеВремя();
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура МинутыПриИзменении(Элемент)
|
||||||
|
ОбновитьДекорациюВыбранноеВремя();
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
### Обработчики команд формы
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура Выбрать(Команда)
|
||||||
|
ВыбратьДатуВремя();
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
||||||
|
|
||||||
|
### Служебные процедуры и функции
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ВыбратьДатуВремя()
|
||||||
|
СтруктураДаты = СтруктураДаты(День);
|
||||||
|
ВыбраннаяДатаВремя = Дата(СтруктураДаты.Год, СтруктураДаты.Месяц, СтруктураДаты.День, Часы, Минуты, 0);
|
||||||
|
ОповеститьОВыборе(ВыбраннаяДатаВремя);
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ОбновитьДекорациюВыбранноеВремя()
|
||||||
|
ВыбранноеВремя = СтрШаблон("Выбрано: %1 %2 ч. %3 мин.",
|
||||||
|
Формат(День, "ДФ='дд ММММ гггг "г."'"),
|
||||||
|
Формат(Часы, "ЧЦ=2; ЧН=00; ЧВН="),
|
||||||
|
Формат(Минуты, "ЧЦ=2; ЧН=00; ЧВН="));
|
||||||
|
Элементы.ПредставлениеВремени.Заголовок = ВыбранноеВремя;
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция СтруктураДаты(Дата) Экспорт
|
||||||
|
Структура = Новый Структура;
|
||||||
|
Структура.Вставить("Год", 1);
|
||||||
|
Структура.Вставить("Месяц", 1);
|
||||||
|
Структура.Вставить("День", 1);
|
||||||
|
Структура.Вставить("Час", 0);
|
||||||
|
Структура.Вставить("Минута", 0);
|
||||||
|
Структура.Вставить("Секунда", 0);
|
||||||
|
Если ТипЗнч(Дата) = Тип("Дата") Тогда
|
||||||
|
Структура.Год = Год(Дата);
|
||||||
|
Структура.Месяц = Месяц(Дата);
|
||||||
|
Структура.День = День(Дата);
|
||||||
|
Структура.Час = Час(Дата);
|
||||||
|
Структура.Минута = Минута(Дата);
|
||||||
|
Структура.Секунда = Секунда(Дата);
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат Структура;
|
||||||
|
КонецФункции
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚀 Вызов формы
|
||||||
|
|
||||||
|
Определяем два обработчика событий произвольного реквизита формы с типом дата — `НачалоВыбора` и `ОбработкаВыбора`.
|
||||||
|
|
||||||
|
В обработчике `НачалоВыбора` вызываем нашу форму. При вызове владельцем нужно указать элемент формы, который инициировал выбор.
|
||||||
|
|
||||||
|
```bsl
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ДатаВремяУбытияНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
|
||||||
|
|
||||||
|
СтандартнаяОбработка = Ложь;
|
||||||
|
|
||||||
|
ПараметрыФормы = Новый Структура;
|
||||||
|
ПараметрыФормы.Вставить("Дата", Объект.ДатаВремяУбытия);
|
||||||
|
|
||||||
|
ОткрытьФорму("ОбщаяФорма.УТЗ_ПЛ_ВыборСтантартногоПериодаСоВременем", ПараметрыФормы,
|
||||||
|
Элементы.ДатаВремяУбытия, УникальныйИдентификатор);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ДатаВремяУбытияОбработкаВыбора(Элемент, ВыбранноеЗначение, ДополнительныеДанные, СтандартнаяОбработка)
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
|
||||||
|
Объект.ДатаВремяУбытия = ВыбранноеЗначение;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
```
|
Loading…
x
Reference in New Issue
Block a user