Конвертация данных. Небольшой тюнинг конфигурации



Мелкие исправления конфигурации КД2, которые облегчают жизнь

Что доработано

  1. Изменена надпись в заголовке окна. В типовых решениях есть возможность указать заголовок программы. На этот заголовок удобно ориентироваться, когда у вас открыто несколько баз 1С;
  2. Отключено автоматическое создание ПКС для всех объектов, кроме перечислений. Это исключает ситуацию, когда случайно не сняв галку вы рекурсивно создаете ПКО для всей конфигурации;
  3. Исправлена ошибка из-за которой автоматически не проставляются ПКО в обработке Автонастройка правил конвертации свойств.

Изменение заголовка окна базы

В модуле обычного приложения делается вставка в процедуру ПриНачалеРаботыСистемы()

Процедура ПриНачалеРаботыСистемы()

АвторизацияТекущегоПользователя();
ВыполнитьОбновлениеИнформационнойБазы();

ПервыйЗапуск = (Константы.НомерВерсииКонфигурации.Получить()="");

// Открытие Панели функций
ОткрытьПанельФункций = УправлениеПользователями.ПолучитьБулевоЗначениеПоУмолчанию(глТекущийПользователь, "ОткрыватьПриЗапускеПанельФункций", Истина);
Если ОткрытьПанельФункций И (НЕ ПервыйЗапуск) Тогда
Обработки.ПанельФункций.ПолучитьФорму().Открыть();
КонецЕсли;

// Открытие формы настройки правил регистрации
ОткрытьПравилаРегистрации = УправлениеПользователями.ПолучитьБулевоЗначениеПоУмолчанию(глТекущийПользователь, "ОткрыватьПравилаРегистрации", Ложь);
Если ОткрытьПравилаРегистрации Тогда
ОткрытьПравилаРегистрации();
КонецЕсли;

// Открытие формы настройки правил обмена
ОткрытьПравилаОбмена = УправлениеПользователями.ПолучитьБулевоЗначениеПоУмолчанию(глТекущийПользователь, "ОткрыватьПравилаОбмена", Ложь);
Если ОткрытьПравилаОбмена Тогда
ОткрытьПравилаОбмена();
КонецЕсли;

// Моя вставка, Крынецкий, 30.03.2024. Установим заголовок приложения, чтобы не путать его в командной панели Windows
УстановитьЗаголовокПриложения(Метаданные.Синоним + "(" + Метаданные.Версия + ")");
// Конец моей вставки

КонецПроцедуры // ПриНачалеРаботыСистемы()

Отключение автосоздания ПКС

Вставка в процедуре общего модуля ОбщегоНазначения:

Процедура РекурсивноеСозданиеПКО(Объект, ЗадаватьВопросПользователю = Истина,
СписокСозданныхПКО = Неопределено, ДляПодчиненныхОбъектовСоздаватьПКСТолькоДляПолейПоиска = Истина) Экспорт

// если нет источника, то и создавать автоматически ничего не получится
Если Объект.ЭтоГруппа
ИЛИ НЕ ЗначениеЗаполнено(Объект.Источник) Тогда

Возврат;

КонецЕсли;

// Моя вставка, Крынецкий 2024-04-12. Отключим автоматическое создание правил конвертации свойств для всех, кроме перечислений
Если Лев(Объект.ТипИсточника, 18) = "ПеречислениеСсылка" И
Лев(Объект.ТипПриемника, 18) = "ПеречислениеСсылка" Тогда

Если СписокСозданныхПКО = Неопределено Тогда
СписокСозданныхПКО = Новый СписокЗначений;
КонецЕсли;

АвтоматическиСоздатьПКСПКЗПоПравилу(Объект, Истина, СписокСозданныхПКО, Ложь, ДляПодчиненныхОбъектовСоздаватьПКСТолькоДляПолейПоиска);
СписокСозданныхПКО.Добавить(Объект.Ссылка);

Возврат
Иначе

Возврат

КонецЕсли;

Если ЗадаватьВопросПользователю Тогда

#Если Клиент Тогда
// пользователю нужно задать вопрос о рекурсивном автоматическом создании ПКС, ПКЗ
ОтветПользователя = Вопрос("Создать автоматически правила конвертации свойств, значений и подчиненных объектов?",
РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да);

Если ОтветПользователя <> КодВозвратаДиалога.Да Тогда

Возврат;

КонецЕсли;
#КонецЕсли

КонецЕсли;

Если СписокСозданныхПКО = Неопределено Тогда
СписокСозданныхПКО = Новый СписокЗначений;
КонецЕсли;

АвтоматическиСоздатьПКСПКЗПоПравилу(Объект, Истина, СписокСозданныхПКО, Ложь, ДляПодчиненныхОбъектовСоздаватьПКСТолькоДляПолейПоиска);
СписокСозданныхПКО.Добавить(Объект.Ссылка);

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

Автоматически проставить ПКО в обработке Автонастройка правил конвертации свойств

Исправление формальных параметров в процедуре Обработка.АвтонастройкаПравилКонвертацииСвойств.МодульОбъекта

// Моя вставка Крынецкий 13.12.18. Поменяем местами формальные параметры
//Функция ОпределитьПоТипамНаличиеПКО(ТипПриемника, ТипИсточника) Экспорт
Функция ОпределитьПоТипамНаличиеПКО(ТипИсточника, ТипПриемника) Экспорт
// Конец моей вставки

СтрокиТаблицы = мТаблицаНайденныхПКО.НайтиСтроки(Новый Структура("Источник, Приемник", ТипИсточника, ТипПриемника));

Если СтрокиТаблицы.Количество() <> 0 Тогда
НайденноеПравилоКО = СтрокиТаблицы[0].СсылкаНаПКО;
Иначе
НайденноеПравилоКО = Неопределено;
КонецЕсли;

Возврат НайденноеПравилоКО;

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

Полезные инструменты для конвертации данных

Правила обмена — как на ладони!

Замена конфигурации в правилах переноса данных

Конвертация данных 2: удалить неиспользуемые ПКО

Все изменения тестировались на платформе 8.3.13.1513.

8 Comments

  1. acanta

    Добрый день.

    Если Лев(Объект.ТипИсточника, 18) = «ПеречислениеСсылка» И
    Лев(Объект.ТипИсточника, 18) = «ПеречислениеСсылка» Тогда

    Здесь сравнивается тип источника и приемника с перечислением?

    Reply
  2. echo77

    (1) Да, сравнивается строка, и да, похоже, что здесь ошибка. Поправлю. Спасибо

    Reply
  3. acanta

    Можно еще план видов характеристик так же?

    Reply
  4. Поручик

    Полезно. Надо втащить себе.

    Reply
  5. swimdog

    В полезных инструментах 1 и 3 ссылки одинаковые

    Reply
  6. echo77

    (5) Спасибо! Поправил.

    Reply
  7. foxey

    (2) Что-то я не понял… Сказали, что поправите, а в тексте перед глазами те же две строки мутного содержания

    Если Лев(Объект.ТипИсточника, 18) = «ПеречислениеСсылка» И
    Лев(Объект.ТипИсточника, 18) = «ПеречислениеСсылка» Тогда

    Или Вы только в коде конфигурации в файле загрузки поправили? Надо бы и в тексте статьи тоже…

    Reply
  8. echo77

    (7) Спасибо. Поправил и в тексте и в приложенном файле

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *