Продвинутая сортировка ПКО, ПКС, ПКГС и ПКЗ

14.10.19

Разработка - Инструментарий разработчика

Поможет упорядочить правила конвертации (ПКО, ПКС, ПКГС и ПКЗ) для конфигурации 1С:Конвертация данных, ред. 2.1. Сортировка по классам, типам, значимости, порядку следования в дереве метаданных и именам приемников.

Скачать файлы

Наименование Файл Версия Размер
Продвинутая сортировка ПКО, ПКС, ПКГС и ПКЗ:
.epf 17,79Kb
7
.epf 1.3 17,79Kb 7 Скачать

Работа с правилами

Правила обмена состоят из правил выгрузки данных, конвертации объектов, свойств и значений, правил очистки данных, алгоритмов и запросов. При этом большое время работы программисты обычно уделяют работе с ПКО и ПКС.

Как создаются правила? Обычно так — пишется и согласовывается ТЗ (иногда в очень примитивном виде), разрабатывается и отлаживается костяк правил, а потом, по мере усложнения обмена, развития конфигураций и появления пожеланий пользователей, в него добавляются новые правила.

Что происходит с конвертацией при этом? Разработчик определяет методику переноса одного объекта в другой (если их вообще можно сопоставить) или разрабатывает алгоритм более сложной трансформации. Результат — новые ПКО, ПКС, ПКГС, ПКЗ. Новые правила добавляются снизу к уже существующим. Важные правила — по которым идет поиск, правила передачи параметров, свойства движений могут располагаться где угодно, и очень велик риск их пропустить или не заметить.

День, когда правила стали большими

Когда приходится заглядывать в Конфигуратор конфигурации-приемника, метаданные располагаются далеко не в том порядке, в которых они описаны в правилах. А хотелось бы, например, чтобы в правилах переноса набора записей сначала шли свойства (период, активность, период действия, период регистрации, вид расчета), затем — измерения и ресурсы, и, наконец — реквизиты. Чтобы правила конвертации свойств, по которым может выполняться поиск стояли на первом месте. Чтобы при сортировке учитывалось имя  объекта и порядок следования в дереве метаданных. Чтобы правило можно было найти среди сотен других, зная только имя и не прибегая к волшебному сочетанию клавиш «Ctrl+F».

Обработка «Продвинутая сортировка ПКО, ПКС, ПКГС и ПКЗ» поможет упорядочить правила обмена. Предназначена она для работы в первую очередь со сложными правилами обмена, но может быть использована и для относительно простых. Обработка проанализирует состав правил и предложит варианты сортировки:

  • ПКО — по классу и имени приемника.
  • ПКС — по важности, признаку поиска, порядку следования в метаданных конфигурации-приемника и имени приемника.
  • ПКЗ — по порядку в метаданных.

Например, при определении порядка следования реквизитов документа предложенный будет таким: сперва ПКС параметров и полей поиска, далее — номер и дата, затем — вид операции, организация и подразделение, период регистрации (месяц начисления или месяц), потом — контрагент и договор. Потом — основной массив ПКС, отсортированный по имени и порядку следования в дереве метаданных. И в последнюю очередь — сумма документа и комментарий.

После нажатия кнопки «Выполнить» обработка обновит значение реквизита «Порядок» для выбранных ПКО, ПКС, ПКГС и ПКЗ. В результате вы получаете оптимально упорядоченные правила, работать с ними гораздо легче и проще.

Все и сразу

Обработка «Продвинутая сортировка ПКО, ПКС, ПКГС и ПКЗ» может работать как с одной конвертацией, так и сразу несколькими — для этого просто выберите группу. Открытый код и простота доработки.

Этот инструмент активно используется мной при разработке собственных правил. Обычно обрабатывается сразу пакет правил обмена (релиз, включает 21 конвертацию, около сотни ПКО и несколько тысяч ПКС в каждой).

Скачайте обработку и приведите свои правила в порядок.

Протестировано на релизе 2.1.8.2 конфигурации 1С:Конвертация данных, ред. 2.1

Небольшая подборка моих инструментов для 1С:Конвертация данных, ред. 2.1:

P.S. Если в процессе работы вы заметите ошибки или появятся пожелания, которые были бы полезны другим — пишите в комментариях, постараюсь учесть их в новых версиях.

конвертация правила сортировка упорядочивание

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122268    673    389    

715

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7323    22    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3567    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177771    1074    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99364    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18128    6    8    

40

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28115    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23605    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. fr18 23.04.19 12:16 Сейчас в теме
Судя по видео - зачетная штука.
2. tomvlad 3860 23.04.19 12:17 Сейчас в теме
(1) Да, мне тоже нравится :)
3. Antoska 17 15.12.20 20:43 Сейчас в теме
А может эта обработка отсортировать ПВД по ПКО?
4. Antoska 17 16.12.20 14:29 Сейчас в теме
(3)Можно. Доработал конфигурацию КД 2.1.8.2. В Модуле обработки СозданиеПравилВыгрузкиДанных исправил код запроса в функции ВыполнитьСинхронизацию:
Функция ВыполнитьСинхронизацию(Конвертация) Экспорт

	Запрос = Новый Запрос;

	НедопустимыеТипы = Новый СписокЗначений();
	НедопустимыеТипы.Добавить(Перечисления.ТипыОбъектов.Дата);
	НедопустимыеТипы.Добавить(Перечисления.ТипыОбъектов.Перечисление);
	НедопустимыеТипы.Добавить(Перечисления.ТипыОбъектов.Строка);
	НедопустимыеТипы.Добавить(Перечисления.ТипыОбъектов.ХранилищеЗначения);
	НедопустимыеТипы.Добавить(Перечисления.ТипыОбъектов.УникальныйИдентификатор);
	НедопустимыеТипы.Добавить(Перечисления.ТипыОбъектов.Число);
	НедопустимыеТипы.Добавить(Перечисления.ТипыОбъектов.Булево);
	НедопустимыеТипы.Добавить(Перечисления.ТипыОбъектов.ТочкаМаршрутаБизнесПроцесса);
	НедопустимыеТипы.Добавить(Перечисления.ТипыОбъектов.РегистрБухгалтерии);
	НедопустимыеТипы.Добавить(Перечисления.ТипыОбъектов.РегистрНакопления);
	НедопустимыеТипы.Добавить(Перечисления.ТипыОбъектов.РегистрРасчета);
			
	Запрос.УстановитьПараметр("Конвертация",  Конвертация);
	Запрос.УстановитьПараметр("НедопустимыеТипы", НедопустимыеТипы);
	Запрос.УстановитьПараметр("ПустойОбъект", Справочники.Объекты.ПустаяСсылка());
	Запрос.УстановитьПараметр("ПустаяСтрока", "");
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ПравилаКонвертацииОбъектов.Ссылка КАК ПКО,
	|	ВЫБОР
	|		КОГДА ПравилаКонвертацииОбъектов.ЭтоГруппа
	|			ТОГДА """"
	|		ИНАЧЕ ВЫБОР
	|				КОГДА ПравилаВыгрузкиДанных.Ссылка ЕСТЬ NULL
	|					ТОГДА ВЫБОР
	|							КОГДА ПравилаКонвертацииОбъектов.Источник = &ПустойОбъект
	|								ТОГДА ПравилаКонвертацииОбъектов.Код
	|							ИНАЧЕ ПравилаКонвертацииОбъектов.Источник.Имя
	|						КОНЕЦ
	|				ИНАЧЕ ПравилаВыгрузкиДанных.Ссылка
	|			КОНЕЦ
	|	КОНЕЦ КАК ПВД,
	|	ВЫБОР
	|		КОГДА ПравилаКонвертацииОбъектов.ЭтоГруппа
	|			ТОГДА 0
	|		ИНАЧЕ ВЫБОР
	|				КОГДА ПравилаВыгрузкиДанных.Ссылка ЕСТЬ NULL
	|					ТОГДА 1
	|				ИНАЧЕ 0
	|			КОНЕЦ
	|	КОНЕЦ КАК Пометка
	|ИЗ
	|	Справочник.ПравилаВыгрузкиДанных КАК ПравилаВыгрузкиДанных
	|		ПОЛНОЕ СОЕДИНЕНИЕ Справочник.ПравилаКонвертацииОбъектов КАК ПравилаКонвертацииОбъектов
	|		ПО ПравилаВыгрузкиДанных.ПравилоКонвертации = ПравилаКонвертацииОбъектов.Ссылка
	|			И (ПравилаКонвертацииОбъектов.Владелец = &Конвертация)
	|			И (ПравилаВыгрузкиДанных.Владелец = &Конвертация)
	|ГДЕ
	|	(ПравилаКонвертацииОбъектов.Владелец = &Конвертация
	|			ИЛИ ПравилаВыгрузкиДанных.Владелец = &Конвертация)
	|	И НЕ ПравилаКонвертацииОбъектов.ЭтоГруппа
	|	И НЕ ПравилаКонвертацииОбъектов.Источник.Тип В (&НедопустимыеТипы)
	|	И ПравилаКонвертацииОбъектов.ПометкаУдаления = ЛОЖЬ
	|
	|УПОРЯДОЧИТЬ ПО
	//|	ПКО ИЕРАРХИЯ,//- Дилев А.Ю. 15122020
	|	ПравилаКонвертацииОбъектов.Порядок"//+ Дилев А.Ю. 15122020
	;

	РезЗапроса = Запрос.Выполнить();

	Возврат РезЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
	
КонецФункции
Показать


И в модуле формы процедуру ПриОткрытии:
Процедура ПриОткрытии()

	ТаблицаРезультат = ВыполнитьСинхронизацию(Конвертация);

	ЭлементыФормы.ТаблицаРезультата.Данные = "ТаблицаРезультат";
	ЭлементыФормы.ТаблицаРезультата.СоздатьКолонки();

	МассивТипов = Новый Массив;
	МассивТипов.Добавить(Тип("Булево"));
	ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);

	ТаблицаРезультат.Колонки.Добавить("Предупреждение", ОписаниеТипов);

	ТабКолонки = ЭлементыФормы.ТаблицаРезультата.Колонки;

	Если ТабКолонки.Количество() Тогда

		ТабКолонки["ПКО"].КартинкиСтрок       = БиблиотекаКартинок.ГруппаИЭлемент;
		ТабКолонки["ПКО"].РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
		ТабКолонки["ПКО"].ДанныеФлажка        = "Пометка";
        ТабКолонки["ПКО"].ТекстШапки          = " Правило конвертации объекта";
        ТабКолонки["ПКО"].ИзменятьВидимость   = Ложь;
		ТабКолонки["ПКО"].Ширина   = 60;
		
		ТабКолонки["Пометка"].Видимость         = Ложь;
		ТабКолонки["Пометка"].ИзменятьВидимость = Ложь;

		ТабКолонки["ПВД"].ТекстШапки        = " Правило выгрузки данных/Имя нового правила выгрузки данных";
		ТабКолонки["ПВД"].ИзменятьВидимость = Ложь;

		Для каждого Строка из ТаблицаРезультат.Строки Цикл
            Строка.Пометка = Истина;
			глУстановитьПометки(Строка, мТекстАлгоритма);
		КонецЦикла;
		
	КонецЕсли;
	
	//ТаблицаРезультат.Строки.Сортировать("Пометка Убыв", Истина);//- Дилев А.Ю. 15122020
	
КонецПроцедуры // ПриОткрытии()
Показать


Теперь при создании ПВД, они будут отсортированы по порядку ПКО.
sergiobargio1; arven-bina; +2 Ответить
Оставьте свое сообщение