Faj Oleg

12
Рейтинг

MADCAT



  •   Регистрация: 11.11.2009 (14 лет назад)

  •   Был(а) на сайте: 12.04.2024

Друзья
  • Кудерков Александр
Подписчики 2

Рейтинг 12

Формирование строки большой длины

Статья Программист Платформа 1С v8.3 Бесплатно (free) Нет файла Механизмы платформы 1С

Для опытных программистов в этой статье не будет ничего нового, но, возможно, кому-то статья сэкономит немного времени. Появилась у меня задача пройтись регулярными выражениями по наименованиям справочников. При подготовке строки в которой будут содержаться все наименования объектов справочника с соответствующими им ГУИДами, сразу обнаружил, что не все способы формирования строки одинаково быстро работают.

19.04.2020    2619    MADCAT    13       

8

Изгнание лишних глобальных общих модулей из конфигурации

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m) Внешняя обработка (ert,epf) Корректировка данных

Досталась мне очень древняя база УПП, в которой было штук 20 типовых общих модулей, которые были глобальными. Процедуры и функции в этих модулях были или сильно переписаны, или не актуальны, но на них работала половина базы.

1 стартмани

23.03.2018    11346    1    MADCAT    1       

4

Комментарии

DevОтображение окна запуска конфигуратора при запуске в пакетном режиме#4 23.12.20 13:15
Как оказалось всё проще некуда. Запуск с ключами "/DisableStartupDialogs /DisableStartupMessages" отключает отображение окна запуска, а так же создаёт базу "EmptyIB" без лишних вопросов.
DevОтображение окна запуска конфигуратора при запуске в пакетном режиме#3 23.10.20 9:55
(2), да, винда везде 64-х. Да, на одном компе 1с 64 битная, а на другом 32.
DevОтображение окна запуска конфигуратора при запуске в пакетном режиме#1 23.10.20 6:46
Осуществляю разборку внешних обработок с помощью команды "/DumpExternalDataProcessorOrReportToFiles".

На одном компьютере, где установлена одна платформа "8.3.14.1976" выполнение команды через "ЗапуститьПриложение" осуществляется без отображения окна запуска конфигуратора 1с.
Код
   СтрокаПодключения = """C:\Program Files\1cv8\8.3.14.1976\bin\1cv8.exe"" DESIGNER /DumpExternalDataProcessorOrReportToFiles ""D:\1c\test\ТестоваяОбработка"" ""D:\1c\Обработки\ТестоваяОбработка.epf""";
   ЗапуститьПриложение(СтрокаПодключения,, Истина);


На другом компьютере установлено две платформы: "8.2.19.130" и "8.3.18.1128". И когда я выполняю почти аналогичный код, появляется окно запуска конфигуратора и сбивается активное окно программы.
Код
   СтрокаПодключения = """C:\Program Files (x86)\1cv8\8.3.18.1128\bin\1cv8.exe"" DESIGNER /DumpExternalDataProcessorOrReportToFiles ""D:\1c\test\ТестоваяОбработка"" ""D:\1c\Обработки\ТестоваяОбработка.epf""";
   ЗапуститьПриложение(СтрокаПодключения,, Истина);


Как я понял, при выполнении подобных команд осуществляется запуск пустой базы 1с EmptyIB. На первом компьютере эта база создаётся по пути "%userprofile%\AppData\Roaming\1C\1cv8\EmptyIB", и создаётся полностью автоматически. На втором компьютере она создаётся по пути "%userprofile%\AppData\Roaming\1C\1Cv82\EmptyIB", а при создании интерактивно запрашивает разрешение на своё создание.

Как осуществить выполнение команды на втором компьютере так же как и на первом?

Пробовал запускать выполнение кода и с платформы "8.3.18.1128" и с "8.2.19.130" - результат одинаковый. Пробовал воспользоваться
Код
WshShell = Новый COMОбъект("WScript.Shell");
WshShell.Run(ТекстСкрипта, 0, 1);

но и это не помогло - окно запуска отображается.
DevФормирование строки большой длины#12 27.04.20 13:17
(11) Неужели распределение в памяти единственный фактор влияющий на время выполнения процедуры? Тогда почему разные способы решения одной и той же задачи показывают примерно одинаковое соотношение времени выполнения на разных ПК? Мне просто очень везёт что время выполнения стабильно отличается в 3 раза?
DevФормирование строки большой длины#10 27.04.20 11:12
(9) Добавил вариант с "ЗаписьXML". Отличный вариант.
Статья была, но там нет кода, нет варианта СтрСоединить и утверждается что методы "ЗаписьXML" и "ЗначениеВСтрокуВнутр" одинаковые по производительности.
DevФормирование строки большой длины#8 20.04.20 9:41
(5) Протестировал и добавил.
DevФормирование строки большой длины#4 20.04.20 8:38
(3) Совершенно упустил для себя эту функцию. Пусть эта статья будет напоминанием моей невнимательности. Ну и возможно поможет кому то такому же невнимательному.
DevФормирование строки большой длины#2 20.04.20 6:22
(1) , этот вариант даже быстрее, спасибо. Добавлю в публикацию.

А 8.3.10 так как ПолучитьСтрокуИзДвоичныхДанных появилось именно в этом релизе.
DevФормирование строки большой длины#0 18.04.20 9:32
Для опытных программистов в этой статье не будет ничего нового, но, возможно, кому-то статья сэкономит немного времени.
Появилась у меня задача пройтись регулярными выражениями по наименованиям справочников. При подготовке строки в которой будут содержаться все наименования объектов справочника с соответствующими им ГУИДами, сразу обнаружил, что не все способы формирования строки одинаково быстро работают.
DevRLS для нового вида документа скрывает все записи#4 08.11.19 14:09
Нашёл проблему. По непонятной причине не заполнился регистр "ТаблицыГруппДоступа" данными о новых документах.
Данные дозаполнились после вызова функции "РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра()".
После это механизм стал работать корректно.