Initial commit of 1C configuration from DT-021 - 18.06.2026 13:57:56,21

This commit is contained in:
70 changed files with 15878 additions and 0 deletions
@@ -0,0 +1,211 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область ПодготовкаКЗагрузкеДанных
&ИзменениеИКонтроль("ИнформациюПоКолонкамИзРеквизитовСправочника")
Процедура РК_ИнформациюПоКолонкамИзРеквизитовСправочника(ПараметрыЗагрузки, ИнформацияПоКолонкам)
ИнформацияПоКолонкам.Очистить();
Позиция = 1;
МетаданныеСправочника= ОбщегоНазначения.ОбъектМетаданныхПоПолномуИмени(ПараметрыЗагрузки.ПолноеИмяОбъекта); // ОбъектМетаданныхСправочник, ОбъектМетаданныхДокумент
#Удаление
Если НЕ МетаданныеСправочника.Автонумерация И МетаданныеСправочника.ДлинаКода > 0 Тогда
СоздатьКолонкуСтандартныеРеквизиты(ИнформацияПоКолонкам, МетаданныеСправочника, "Код", Позиция);
Позиция = Позиция + 1;
КонецЕсли;
#КонецУдаления
#Вставка
// ============================================================================================
// РК: НАЧАЛО ВСТАВКИ - Убрана проверка на Автонумерацию для возможности загрузки по коду справочников с автонумерацией
// ============================================================================================
// РК: Убрана проверка на Автонумерацию для возможности загрузки по коду справочников с автонумерацией
Если МетаданныеСправочника.ДлинаКода > 0 Тогда
СоздатьКолонкуСтандартныеРеквизиты(ИнформацияПоКолонкам, МетаданныеСправочника, "Код", Позиция);
Позиция = Позиция + 1;
КонецЕсли;
// ============================================================================================
// РК: КОНЕЦ ВСТАВКИ
// ============================================================================================
#КонецВставки
Если МетаданныеСправочника.ДлинаНаименования > 0 Тогда
СоздатьКолонкуСтандартныеРеквизиты(ИнформацияПоКолонкам, МетаданныеСправочника, "Наименование", Позиция);
Позиция = Позиция + 1;
КонецЕсли;
Если МетаданныеСправочника.Иерархический Тогда
СоздатьКолонкуСтандартныеРеквизиты(ИнформацияПоКолонкам, МетаданныеСправочника, "Родитель", Позиция);
Позиция = Позиция + 1;
КонецЕсли;
Если МетаданныеСправочника.Владельцы.Количество() > 0 Тогда
СоздатьКолонкуСтандартныеРеквизиты(ИнформацияПоКолонкам, МетаданныеСправочника, "Владелец", Позиция);
Позиция = Позиция + 1;
КонецЕсли;
Для каждого Реквизит Из МетаданныеСправочника.Реквизиты Цикл
Если Реквизит.Имя = "Идентификатор" Тогда
Продолжить;
КонецЕсли;
Если Реквизит.Тип.СодержитТип(Тип("ХранилищеЗначения")) Тогда
Продолжить;
КонецЕсли;
ОписаниеТипаКолонки = "";
Если Реквизит.Тип.СодержитТип(Тип("Булево")) Тогда
ОписаниеТипаКолонки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Флаг, %1 или 1 / Нет или 0'"), ЗагрузкаДанныхИзФайла.ПредставлениеТекстаДаДляБулево());
ИначеЕсли Реквизит.Тип.СодержитТип(Тип("Число")) Тогда
ОписаниеТипаКолонки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Число, Длина: %1, Точность: %2'"),
Строка(Реквизит.Тип.КвалификаторыЧисла.Разрядность),
Строка(Реквизит.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти));
ИначеЕсли Реквизит.Тип.СодержитТип(Тип("Строка")) Тогда
Если Реквизит.Тип.КвалификаторыСтроки.Длина > 0 Тогда
ДлинаСтроки = Строка(Реквизит.Тип.КвалификаторыСтроки.Длина);
ОписаниеТипаКолонки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Строка, макс. количество символов: %1'"), ДлинаСтроки);
Иначе
ОписаниеТипаКолонки = НСтр("ru = 'Строка неограниченной длины'");
КонецЕсли;
ИначеЕсли Реквизит.Тип.СодержитТип(Тип("Дата")) Тогда
ОписаниеТипаКолонки = Строка(Реквизит.Тип.КвалификаторыДаты.ЧастиДаты);
ИначеЕсли Реквизит.Тип.СодержитТип(Тип("УникальныйИдентификатор")) Тогда
ОписаниеТипаКолонки = НСтр("ru = 'Уникальный идентификатор'");
КонецЕсли;
ШиринаКолонки = ШиринаКолонкиПоТипу(Реквизит.Тип);
Подсказка = ?(ЗначениеЗаполнено(Реквизит.Подсказка), Реквизит.Подсказка, Реквизит.Представление()) + Символы.ПС + ОписаниеТипаКолонки;
ОбязательноеПоле = ?(Реквизит.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку, Истина, Ложь);
СтрокаИнфоПроКолонки = ИнформацияПоКолонкам.Добавить();
СтрокаИнфоПроКолонки.ИмяКолонки = Реквизит.Имя;
СтрокаИнфоПроКолонки.ПредставлениеКолонки = Реквизит.Представление();
СтрокаИнфоПроКолонки.ТипКолонки = Реквизит.Тип;
СтрокаИнфоПроКолонки.ОбязательнаДляЗаполнения = ОбязательноеПоле;
СтрокаИнфоПроКолонки.Позиция = Позиция;
СтрокаИнфоПроКолонки.Группа = МетаданныеСправочника.Представление();
СтрокаИнфоПроКолонки.Видимость = Истина;
СтрокаИнфоПроКолонки.Примечание = Подсказка;
СтрокаИнфоПроКолонки.Ширина = ШиринаКолонки;
Позиция = Позиция + 1;
КонецЦикла;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией");
МодульУправлениеКонтактнойИнформацией.КолонкиДляЗагрузкиДанных(МетаданныеСправочника, ИнформацияПоКолонкам);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствамиСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствамиСлужебный");
МодульУправлениеСвойствамиСлужебный.КолонкиДляЗагрузкиДанных(МетаданныеСправочника, ИнформацияПоКолонкам);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&ИзменениеИКонтроль("ЗначениеЯчейки")
Функция РК_ЗначениеЯчейки(Колонка, ЗначениеЯчейки)
ДанныеЯчейки = "";
Для каждого ТипДанных Из Колонка.ТипКолонки.Типы() Цикл
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипДанных);
Если ОбъектМетаданных = Неопределено Тогда
Продолжить;
КонецЕсли;
ОписаниеОбъекта = РазложитьПолноеИмяОбъекта(ОбъектМетаданных.ПолноеИмя());
Если ОписаниеОбъекта.ТипОбъекта = "Справочник" Тогда
#Удаление
Если Не ОбъектМетаданных.Автонумерация
И ОбъектМетаданных.ДлинаКода > 0 Тогда
ДанныеЯчейки = Справочники[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоКоду(ЗначениеЯчейки, Истина);
КонецЕсли;
#КонецУдаления
#Вставка
// ============================================================================================
// РК: НАЧАЛО ВСТАВКИ - Убрана проверка на Автонумерацию для возможности поиска по коду справочников с автонумерацией
// ============================================================================================
// РК: Убрана проверка на Автонумерацию для возможности поиска по коду справочников с автонумерацией
Если ОбъектМетаданных.ДлинаКода > 0 Тогда
ДанныеЯчейки = Справочники[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоКоду(ЗначениеЯчейки, Истина);
КонецЕсли;
// ============================================================================================
// РК: КОНЕЦ ВСТАВКИ
// ============================================================================================
#КонецВставки
Если Не ЗначениеЗаполнено(ДанныеЯчейки)
И ЗначениеЗаполнено(ЗначениеЯчейки)
И ОбъектМетаданных.ДлинаНаименования > 0 Тогда
//@skip-check query-in-loop - штучные запросы разнородных данных.
ДанныеЯчейки = НайтиПоНаименованию(ЗначениеЯчейки, ОбъектМетаданных, Колонка);
КонецЕсли;
Если Не ЗначениеЗаполнено(ДанныеЯчейки)
И ОбъектМетаданных.ДлинаКода > 0 Тогда
Если ОбъектМетаданных.СерииКодов = Метаданные.СвойстваОбъектов.СерииКодовСправочника.ВоВсемСправочнике Тогда
ДанныеЯчейки = Справочники[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоКоду(ЗначениеЯчейки);
Иначе
ДанныеЯчейки = Справочники[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоКоду(ЗначениеЯчейки, Истина);
КонецЕсли;
КонецЕсли;
ИначеЕсли ОписаниеОбъекта.ТипОбъекта = "Перечисление" Тогда
Для каждого ЗначениеПеречисления Из Перечисления[ОписаниеОбъекта.НазваниеОбъекта] Цикл
Если Строка(ЗначениеПеречисления) = СокрЛП(ЗначениеЯчейки) Тогда
ДанныеЯчейки = ЗначениеПеречисления;
КонецЕсли;
КонецЦикла;
ИначеЕсли ОписаниеОбъекта.ТипОбъекта = "ПланСчетов" Тогда
ДанныеЯчейки = ПланыСчетов[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоКоду(ЗначениеЯчейки);
Если ДанныеЯчейки.Пустая() Тогда
ДанныеЯчейки = ПланыСчетов[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоНаименованию(ЗначениеЯчейки, Истина);
КонецЕсли;
ИначеЕсли ОписаниеОбъекта.ТипОбъекта = "ПланВидовХарактеристик" Тогда
#Удаление
Если Не ОбъектМетаданных.Автонумерация И ОбъектМетаданных.ДлинаКода > 0 Тогда
ДанныеЯчейки = ПланыВидовХарактеристик[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоКоду(ЗначениеЯчейки);
КонецЕсли;
#КонецУдаления
#Вставка
// ============================================================================================
// РК: НАЧАЛО ВСТАВКИ - Убрана проверка на Автонумерацию для возможности поиска по коду планов видов характеристик с автонумерацией
// ============================================================================================
// РК: Убрана проверка на Автонумерацию для возможности поиска по коду планов видов характеристик с автонумерацией
Если ОбъектМетаданных.ДлинаКода > 0 Тогда
ДанныеЯчейки = ПланыВидовХарактеристик[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоКоду(ЗначениеЯчейки);
КонецЕсли;
// ============================================================================================
// РК: КОНЕЦ ВСТАВКИ
// ============================================================================================
#КонецВставки
Если Не ЗначениеЗаполнено(ДанныеЯчейки) Тогда
ДанныеЯчейки = ПланыВидовХарактеристик[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоНаименованию(ЗначениеЯчейки, Истина);
КонецЕсли;
Иначе
ДанныеЯчейки = Строка(ЗначениеЯчейки);
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеЯчейки) Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Возврат ДанныеЯчейки;
КонецФункции
#КонецОбласти
#КонецЕсли