Skip to content

Commit

Permalink
Merge branch 'release/1.12'
Browse files Browse the repository at this point in the history
  • Loading branch information
alkoleft committed Mar 15, 2018
2 parents 723ed70 + c778218 commit 65ed98d
Show file tree
Hide file tree
Showing 20 changed files with 4,983 additions and 4,022 deletions.
Binary file modified CodeConsole83.epf
Binary file not shown.
1,891 changes: 1,312 additions & 579 deletions src/CodeConsole83/Form/Форма/Форма.bsl

Large diffs are not rendered by default.

388 changes: 388 additions & 0 deletions src/CodeConsole83/Form/ФормаSQL/Форма.bsl

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ОписаниеДанных = Параметры.ОписаниеДанных;

МассивРеквизитов = Новый Массив;

Для Каждого Колонка из ОписаниеДанных Цикл

РеквизитФормы = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(Колонка.Тип));
//РеквизитФормы = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(Колонка.ТипЗначения, , "NULL"), ИмяТаблицы);
МассивРеквизитов.Добавить(РеквизитФормы);

КонецЦикла;

ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов);

Обработка = ПолучитьОбработку();

Для Каждого Реквизит Из ОписаниеДанных Цикл

ОписаниеЭлемента = Новый Структура;

ОписаниеЭлемента.Вставить("Вид", ВидПоляФормы.ПолеВвода);

Обработка.ДополнитьСтруктуру(ОписаниеЭлемента, Реквизит);

Если Реквизит.Свойство("Вид") И ТипЗнч(Реквизит.Вид) = Тип("Строка") Тогда
ОписаниеЭлемента.Вставить("Вид", Вычислить("ВидПоляФормы." + Реквизит.Вид));
КонецЕсли;
Если Реквизит.Свойство("ВидПереключателя") И ТипЗнч(Реквизит.ВидПереключателя) = Тип("Строка") Тогда
ОписаниеЭлемента.Вставить("ВидПереключателя", Вычислить(Реквизит.ВидПереключателя));
КонецЕсли;

ОписаниеЭлемента.Вставить("Имя", Реквизит.Имя);
ОписаниеЭлемента.Вставить("Тип", Тип("ПолеФормы"));
ОписаниеЭлемента.Вставить("ПутьКДанным", Реквизит.Имя);

Обработка.СоздатьЭлементыУправления(ЭтаФорма, , ОписаниеЭлемента, Элементы.ГруппаРеквизиты);

Если Реквизит.Свойство("Значение") Тогда
ЭтаФорма[Реквизит.Имя] = Реквизит.Значение;
КонецЕсли;

КонецЦикла;

Если Параметры.Свойство("Заголовок") Тогда
Заголовок = Параметры.Заголовок;
КонецЕсли;

КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьОбработку(Знач СостояниеАдрес = Неопределено)

Обработка = ВнешниеОбработки.Создать("CodeConsole83");

Если СостояниеАдрес <> Неопределено Тогда
Обработка.ВосстановитьСостояние(СостояниеАдрес);
КонецЕсли;

Возврат Обработка;

КонецФункции // ПолучитьОбработку()

&НаКлиенте
Процедура Сохранить(Команда)

Успешно = Истина;

Результат = Новый Структура;
Для Каждого Реквизит Из Параметры.ОписаниеДанных Цикл
Если НЕ ЗначениеЗаполнено(ЭтаФорма[Реквизит.Имя]) И Реквизит.Обязательное Тогда

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон("Не заполнено обязательное поле ""%1""", Реквизит.Имя);
Сообщение.Поле = Реквизит.Имя;
Сообщение.УстановитьДанные(ЭтаФорма);
Сообщение.Сообщить();
Успешно = Ложь;

КонецЕсли;

Результат.Вставить(Реквизит.Имя, ЭтаФорма[Реквизит.Имя]);

КонецЦикла;

Если НЕ Успешно Тогда
Возврат;
КонецЕсли;
Закрыть(Результат);

КонецПроцедуры

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@
Процедура СохранитьТаблицу(Команда)

СохранитьДанныеТаблицыНаСервере();
Закрыть(Истина);
Закрыть(АдресДанныхТЗ);

КонецПроцедуры

Expand All @@ -110,5 +110,6 @@
ПоместитьВоВременноеХранилище(РеквизитФормыВЗначение("ТаблицаДанных"), АдресДанныхТЗ);

КонецПроцедуры

#КонецОбласти //Команды

180 changes: 142 additions & 38 deletions src/CodeConsole83/ObjectModule.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -152,82 +152,90 @@
МассивРеквизитов = Новый Массив;

Для Каждого Колонка из Колонки Цикл
Если Колонка.Имя = "_Служебная" Тогда
Продолжить;
КонецЕсли;


РеквизитФормы = Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, ИмяТаблицы);
//РеквизитФормы = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(Колонка.ТипЗначения, , "NULL"), ИмяТаблицы);
МассивРеквизитов.Добавить(РеквизитФормы);

КонецЦикла;

Форма.ИзменитьРеквизиты(МассивРеквизитов);

ЭлементТаблица = Форма.Элементы[ИмяТаблицы];

НовыеЭлементы = Новый Массив;

Для Каждого Колонка из Колонки цикл

Если Колонка.Имя = "_Служебная" Тогда

Продолжить;

ОписаниеЭлемента = Новый Структура;
ОписаниеЭлемента.Вставить("Имя", Колонка.Имя);
ОписаниеЭлемента.Вставить("Тип", Тип("ПолеФормы"));
ОписаниеЭлемента.Вставить("ПутьКДанным", СтрШаблон("%1.%2", ИмяТаблицы, Колонка.Имя));
Если Колонка.ТипЗначения.СодержитТип(Тип("Булево")) И Колонка.ТипЗначения.Типы().Количество() = 1 Тогда
ОписаниеЭлемента.Вставить("Вид", ВидПоляФормы.ПолеФлажка);
ОписаниеЭлемента.Вставить("ВидФлажка", ВидФлажка.Флажок);
Иначе
ОписаниеЭлемента.Вставить("Вид", ВидПоляФормы.ПолеВвода);
КонецЕсли;

ИмяКолонки = ИмяТаблицы + Колонка.Имя;
Элемент = Форма.Элементы.Найти(ИмяКолонки);

Если Элемент = Неопределено Тогда

Элемент = Форма.Элементы.Добавить(ИмяКолонки, Тип("ПолеФормы"), ЭлементТаблица);

Элемент.ПутьКДанным = СтрШаблон("%1.%2", ИмяТаблицы, Колонка.Имя);

Если ЕстьСвойство(Колонка, "Заголовок") Тогда
ОписаниеЭлемента.Вставить("Заголовок", Колонка.Заголовок);
КонецЕсли;

Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.Заголовок = Колонка.Имя;
СоздатьЭлементыУправления(Форма, ИмяТаблицы, ОписаниеЭлемента);

КонецЦикла;

Если Форма.Элементы.Найти(ИмяТаблицы + "_Служебная") <> Неопределено Тогда

Форма.Элементы[ИмяТаблицы + "_Служебная"].Видимость = Ложь;

КонецЕсли;

КонецПроцедуры

Процедура УдалитьКолонкиТЗ(Форма, ИмяТаблицы, Колонки) Экспорт

МассивУдаляемыхРеквизитов = Новый Массив;

Для Каждого Колонка из Колонки цикл
Если Колонка.Имя = "_Служебная" Тогда
Продолжить;
КонецЕсли;

МассивУдаляемыхРеквизитов.Добавить(СтрШаблон("%1.%2", ИмяТаблицы, Колонка.Имя));
КонецЦикла;

Форма.ИзменитьРеквизиты(, МассивУдаляемыхРеквизитов);

Для Каждого Колонка из Колонки цикл

Если Колонка.Имя = "_Служебная" Тогда
Продолжить;
КонецЕсли;

ИмяКолонки = ИмяТаблицы + Колонка.Имя;
ИмяКолонки = ИмяТаблицы + "_" + Колонка.Имя;
Элемент = Форма.Элементы.Найти(ИмяКолонки);
Форма.Элементы.Удалить(Элемент);

КонецЦикла;

КонецПроцедуры

Процедура ОбновитьКолонкиТЗ(Форма, ИмяТаблицы, СтарыеКолонки, НовыеКолонки) Экспорт
Процедура ОбновитьКолонкиТЗ(Знач Форма, Знач ИмяТаблицы, Знач СтарыеКолонки, Знач НовыеКолонки) Экспорт

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

ЕстьРазличия = СтарыеКолонки.Количество() <> НовыеКолонки.Количество();

Если НЕ ЕстьРазличия Тогда

Для Инд = 0 По СтарыеКолонки.Количество() - 1 Цикл

Если СтарыеКолонки[Инд].Имя <> НовыеКолонки[Инд].Имя ИЛИ СтарыеКолонки[Инд].ТипЗначения <> НовыеКолонки[Инд].ТипЗначения Тогда

ЕстьРазличия = Истина;
Прервать;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Если ЕстьРазличия Тогда
УдалитьКолонкиТЗ(Форма, ИмяТаблицы, СтарыеКолонки);
СоздатьКолонкиТЗ(Форма, ИмяТаблицы, НовыеКолонки);
КонецЕсли;

Возврат;

Expand Down Expand Up @@ -289,6 +297,93 @@

КонецПроцедуры

Функция СоздатьЭлементыУправления(Форма, Знач ИмяРодительскогоЭлементУправления = Неопределено, ПараметрыЭлементаУправления, Знач РодительскийЭлементУправления = Неопределено) Экспорт

Если ИмяРодительскогоЭлементУправления = Неопределено И РодительскийЭлементУправления = Неопределено Тогда
ВызватьИсключение "Не указан родитель";
КонецЕсли;

Если ИмяРодительскогоЭлементУправления = Неопределено Тогда
ИмяРодительскогоЭлементУправления = РодительскийЭлементУправления.Имя;
КонецЕсли;

ИмяЭлемента = ИмяРодительскогоЭлементУправления + "_" + ПараметрыЭлементаУправления.Имя;

Элемент = Форма.Элементы.Найти(ИмяЭлемента);

Если Элемент = Неопределено Тогда

Если РодительскийЭлементУправления = Неопределено Тогда
РодительскийЭлементУправления = Форма.Элементы.Найти(ИмяРодительскогоЭлементУправления);
КонецЕсли;
Элемент = Форма.Элементы.Добавить(ИмяЭлемента, ПараметрыЭлементаУправления.Тип, РодительскийЭлементУправления);

КонецЕсли;

ЗаполнитьЗначенияСвойств(Элемент, ПараметрыЭлементаУправления, , "Имя");
ЗаполнитьЗначенияСвойств(Элемент, ПараметрыЭлементаУправления, , "Имя" + ?(ЕстьСвойство(ПараметрыЭлементаУправления, "ПутьКДанным"), ", ПутьКДанным", ""));

Если ПараметрыЭлементаУправления.Свойство("СписокВыбора") Тогда
Скопировать(ПараметрыЭлементаУправления.СписокВыбора, Элемент.СписокВыбора);
КонецЕсли;

Если ПараметрыЭлементаУправления.Вид = ВидПоляФормы.ПолеВвода И ПараметрыЭлементаУправления.Свойство("СписокВыбора") Тогда
Скопировать(ПараметрыЭлементаУправления.СписокВыбора, Элемент.СписокВыбора);
Элемент.РежимВыбораИзСписка = ПараметрыЭлементаУправления.Свойство("РежимВыбораИзСписка") И ПараметрыЭлементаУправления.РежимВыбораИзСписка;
КонецЕсли;

Возврат Элемент;

КонецФункции

Процедура СоздатьКнопки(Форма, Элемент, КомандыЭлемента, СоздатьКоманды = Ложь) Экспорт

ИмяРодитель = Элемент.Имя;

ВидКнопки = Неопределено;

Если ТипЗнч(Элемент) = Тип("КоманднаяПанельФормы") Тогда
ВидКнопки = ВидКнопкиФормы.КнопкаКоманднойПанели;
Иначе
ВидКнопки = ВидКнопкиФормы.ОбычнаяКнопка;
КонецЕсли;

Для Каждого Команда Из КомандыЭлемента Цикл

Если ТипЗнч(Команда) = Тип("Структура") Тогда
ИмяКоманды = Команда.ИмяКоманды;
Иначе
ИмяКоманды = Команда;
КонецЕсли;

Если СоздатьКоманды Тогда

Если Форма.Команды.Найти(ИмяКоманды) = Неопределено Тогда
КомандаФормы = Форма.Команды.Добавить(ИмяКоманды);

Если ТипЗнч(Команда) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(КомандаФормы, Команда, , "Имя");
Иначе
КомандаФормы.Действие = ИмяКоманды;
КонецЕсли;
КонецЕсли;

КонецЕсли;

ОписаниеЭлемента = Новый Структура("Имя", ИмяКоманды);
ОписаниеЭлемента.Вставить("Тип", Тип("КнопкаФормы"));
ОписаниеЭлемента.Вставить("Вид", ВидКнопки);
ОписаниеЭлемента.Вставить("ИмяКоманды", ИмяКоманды);

Если ТипЗнч(Команда) = Тип("Структура") Тогда
ДополнитьСтруктуру(ОписаниеЭлемента, Команда);
КонецЕсли;

СоздатьЭлементыУправления(Форма, ИмяРодитель, ОписаниеЭлемента, Элемент);
КонецЦикла;

КонецПроцедуры

#КонецОбласти //Работа_с_формой

#Область Плагины
Expand Down Expand Up @@ -843,6 +938,15 @@

КонецФункции

Функция ЕстьСвойство(Элемент, ИмяСвойства)

Проверка = Новый Структура(ИмяСвойства, "%$%#^$%^$%#$&*&(*&)(");
ЗаполнитьЗначенияСвойств(Проверка, Элемент);

Возврат НЕ Проверка[ИмяСвойства] = "%$%#^$%^$%#$&*&(*&)(";

КонецФункции

#КонецОбласти //Универсальные_коллекции

#Область Прочее
Expand Down Expand Up @@ -894,6 +998,6 @@
БазовыеОперации = Новый Структура;
БазовыеОперации.Вставить("Сохранить", "Сохранить");
БазовыеОперации.Вставить("Загрузить", "Загрузить");
БазовыеОперации.Вставить("ВыполнениеСкрипта", "ВыполнениеСкрипта");

#КонецОбласти // БазовыеОперации

Loading

0 comments on commit 65ed98d

Please sign in to comment.