Построение дерева вызовов процедур и функций

11.10.19

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

Количество уровней вложенности вызовов процедур и функций в типовых конфигурациях на управляемых формах сильно возросло и анализ работы отдельных программных механизмов порой превращается в головоломку. Чтобы облегчить этот процесс, мной была разработана подсистема построения дерева вызовов процедур и функций. Порядок ее использования довольно прост: после несложных подготовительных действий по встраиванию служебных механизмов в исследуемую конфигурацию, открываем обработку построения дерева, нажимаем "Начать", затем выполняем действия, алгоритм которых необходимо изучить и, вернувшись в окно обработки, нажимаем кнопку завершения. Дерево вызовов появится на форме - см. видео.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Построение дерева вызовов
.cf 39,78Kb ver:2.0.3
90
90 Скачать (1 SM) Купить за 1 850 руб.

Построение дерева вызовов проведения реализации в демо-базе "Бухгалтерия предприятия, редакция 3.0 (3.0.70.39)"



 

Порядок подготовки конфигурации к исследованиям

1. Выгрузите файлы исследуемой конфигурации;

2. Вставьте в программные модули исследуемой конфигурации служебные механизмы построения дерева вызовов, для этого запустите базу Построение дерева вызовов в пользовательском режиме, меню Построение дерева вызовов - Вставить процедуры построения дерева вызовов, укажите каталог с выгруженными файлами конфигурации и нажмите Вставить процедуры дерева вызовов;

3. Загрузите обработанные файлы в исследуемую конфигурацию;

4. Вставьте объекты подсистемы "Построение дерева вызовов" в исследуемую конфигурацию;

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

Решение может быть полезным для

  • Изучения новых механизмов конфигураций
  • Выявления "узких" мест, которые можно найти при анализе продолжительности вызовов - продолжительность вызова в микросекундах выводится в колонке "Время" дерева (при этом следует учитывать, что это время включает и затраченное на само построение дерева)
  • В образовательных целях - для изучения порядка следования стандартных процедур
  • Общего повышения производительности труда программиста благодаря эффекту визуализации сложных алгоритмов


Как это работает

Принцип построения дерева предельно прост. В каждую процедуру и функцию, в начало и конец, а так же в точки возможных возвратов из них вставляются строки с вызовами процедур подсистемы построения дерева, используя возможности выгрузки / загрузки файлов конфигурации. Результаты между вызовами хранятся в параметрах сеанса.

Дополнительные возможности и особенности

Если необходимо построить дерево вызовов процесса начала работы с базой, установите константу "Строить дерево вызовов", перезайдите в базу, запустите обработку построения дерева вызовов и нажмите "Закончить".

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

Для того чтобы выполняемые по расписанию алгоритмы не оказывали влияния на исследуемый процесс, вклиниваясь в него в произвольных местах, программный код, выполняемый в фоновых заданиях не учитывается (соответствующие вызовы не попадают в формируемое дерево). В случае необходимости, изменить это поведение можно в функции ЭтоФоновоеЗадание.

Для того, чтобы избежать выполнения исследуемых алгоритмов типовых конфигураций в фоновых заданиях, запускайте базу в режиме отладки (запуск с параметром \РежимОтладки).

В связи с недопустимостью серверных вызовов при завершении работы системы, построение дерева вызовов процесса завершения работы не предусмотрено.

Отдельная обработка циклов и условий пока не поддерживается.


О возможных ошибках

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

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

Тестирование проводилось на версии платформы 8.3.14.1565.

построение дерева вызовов процедур и функций

См. также

SALE! 15%

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

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

10000 руб.

02.09.2020    159627    875    399    

862

SALE! 15%

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7847    58    23    

69

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

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23481    68    45    

117

SALE! 15%

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

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

10000 8500 руб.

10.11.2023    10457    36    25    

61

SALE! 15%

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

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

22200 19980 руб.

06.10.2023    15421    35    7    

70

SALE! 35%

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

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

4800 3120 руб.

14.01.2013    188035    1140    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17315    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7714    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ssa 16.10.13 10:32 Сейчас в теме
Судя по описанию, полезная штука. Надо будет попробовать. Спасибо.
2. pumbaE 16.10.13 11:41 Сейчас в теме
3. TSSV 1151 16.10.13 12:18 Сейчас в теме
(2) pumbaE, вещь похожая, но есть различия в деталях. В предлагаемом мной варианте есть время вызовов, разработана для УФ, обозначенная в вашей ссылке проблема ; решена изначально, так же есть возможность анализа циклов и условий (об этом в описании не написано, но скачав можно увидеть и такую возможность) и т.д. А вообще о существовании этой разработки я честно говоря не знал... Вобщем предлагаю свой вариант решения данной задачи.
cleaner_it; +1 Ответить
4. Alever 4 16.10.13 13:13 Сейчас в теме
5. MarSeN 987 17.10.13 10:07 Сейчас в теме
Штука клевая, однозначно +
как мысль по развитию.... (я правда не качал, но думаю что на первой итерации такое не делается :) )
Надо бы обрабатывать команды Выполнить и Вычислить. Оснобенно это важно для новой УТ11...
6. TSSV 1151 17.10.13 19:41 Сейчас в теме
(5) MarSeN,спасибо! Наличие конструкуции Выполнить не является проблемой, так как строится дерево реально отработавших процедур/функций. Если в Выполнить будет вызов процедуры или функции, то он отобразится в дереве как потомок вызова, в котором находится сама конструкция Выполнить. При этом делать сами конструкции Выполнить потомками процедуры/функции, в которой они находятся с текстом кода инструкции не составит никаких проблем и это хорошая мысль, так что спасибо еще раз!
7. MarSeN 987 18.10.13 09:07 Сейчас в теме
(6)
Да, об этом я не подумал... Действительно, текст модулей не парсится на предмет вызова процедур-функций. И это здорово! Данный метод действительно покрывает 100% всех вызовов, в отличии способа при котором частично выгружаются модули и обрабатываются (вариант, который реализован в статье комментария №2).
Сергей, на видео видно что все вызовы выстраиваются в дерево.
А как обрабатываются (отображаются в дереве) рекурсивные вызовы (рекурсивные процедуры/функции)? Не происходит зацикливания при построении дерева?
8. TSSV 1151 18.10.13 10:24 Сейчас в теме
(7) MarSeN, Рекурсивные вызовы отрабатываются корректно (ведь количество этих вызовов конечно). В формируемом дереве рекурсивный вызов будет иметь множество одинаковых подчиненных веток - по числу вызовов рекурсивной функции и при просмотре Вы будете видеть сначала первый вызов, потом, раскрыв его - второй и так далее. И Вы правы, задав этот вопрос - спасибо! Я тоже думал о том, чтобы анализировать код функции на предмет ее рекурсивности и ограничиваться выводом одной "внешней" ветки, а пока, встретив слишком "длинную" рекурсию, можно убрать из нее служебные строчки подсистемы.
9. MarSeN 987 18.10.13 11:00 Сейчас в теме
(8)
Спасибо!
Класная штука. Однозначно время потрачено не зря!
10. identificator 13 18.10.13 14:17 Сейчас в теме
В УТ 11.1 не показывается дерево.
11. TSSV 1151 18.10.13 14:22 Сейчас в теме
(10) identificator, можно более подробно - что происходит при этом и что Вы проделали?
12. TSSV 1151 18.10.13 14:42 Сейчас в теме
(10) identificator, сделаю предположение - я тоже в УТ 11.1 проводил тестирование. Возможно дело в том, что процесс построения зашел в рекурсию и там он может находиться довольно долго. Чтобы понять, где находится процесс в отладчике Отладка - Остановить, потом в стеке вызовов посмотреть где находится процесс. Если он действительно в рекурсивной функции, то просто уберите из нее вызовы процедур подсистемы.
15. identificator 13 18.10.13 23:57 Сейчас в теме
(12) я 5-ый пункт забыл выполнить! Невнимателен был! По три раза считывал модули в каталоге, и теперь конфигурация умерла..
17. identificator 13 21.10.13 10:19 Сейчас в теме
(12) сделайте защиту "от дурака". Чтобы при повторном считывании выгруженных модулей возникало сообщение, что уже модули были считаны. Или возможность удалить строки из уже прочитанных модулей. Особенно полезно для больших конфигураций.
18. TSSV 1151 21.10.13 11:34 Сейчас в теме
(17) identificator, спасибо, тоже думл об этом - возможность удалить вставки и не обрабатывать файлы где уже есть вставки. Сделаю.
20. identificator 13 21.10.13 16:43 Сейчас в теме
(18) Сергей, не подскажите, как возвратить конфигурацию к первоначальному виду с возможностью корректного запуска? Исходную конфигурацию (в которой добавились строки ";ПостроениеДереваВызовов.") объединил с родительской конфигурацией и закомментировал все строки вида ";ПостроениеДереваВызовов.**". В том числе и в модуле сеанса. Но конфигурация не запускается все равно в режиме предприятия.
21. TSSV 1151 21.10.13 17:52 Сейчас в теме
(20) identificator, В конфигураторе, меню Конфигурация - Загрузить конфигурацию из файла - указать исходный файл конфигурации. Произойдет полная замена конфигурации. Не забудьте сделать бэкап перед этим, чтобы не потерять данные если что то пойдет не так.
22. identificator 13 22.10.13 09:22 Сейчас в теме
(21) такой способ не подходит, так как в моей конфигурации было сделано много правок относительно функционала. А бэкапа не осталось.
23. TSSV 1151 22.10.13 10:11 Сейчас в теме
(22) identificator,случай тяжелый. Лучше конечно обратиться к специалисту за помощью. Нужно сделать следующее - найдите конфигурацию, которую дорабатывали (изначальный релиз УТ), объедините ее с той что у Вас получилась в части свойств конфигурации (имя, синоним, модуль управляемого приложения и пр.) и если у Вас там были доработки, то их придется восстанавливать по памяти - писать заново. Далее, через меню Правка - Глобальная замена - замените во всех модулях строку ";ПостроениеДереваВызовов." на "//;ПостроениеДереваВызовов." (без кавычек естественно). Получите результат максимально близкий к оригиналу из возможных в такой ситуации. Но все таки лучше Вам обратиться к специалисту.
24. identificator 13 22.10.13 14:39 Сейчас в теме
(23) Сергей, я и есть специалист.
25. MarSeN 987 22.10.13 15:47 Сейчас в теме
(24) identificator,
Если Вам нужно избавиться от вставок текста, которые сделаны подсистемой автора, попробуйте выгрузить все файлы модулей и воспользоваться какой-нить утилитой для поиска и замены текста в файлах.
26. MarSeN 987 22.10.13 15:51 Сейчас в теме
(25) MarSeN, (24) identificator,
сори, ступил ) есть же глобальная замена. Об этом автор уже написал.
27. MarSeN 987 22.10.13 15:57 Сейчас в теме
(22) identificator,
Если у Вас конфа не обновилась, то Вы можете вернуться к конфигурации БД. (Хотя если Вы пишите, что являетесь специалистом, значит проблема в чем-то другом)
в посте 16 Вы пишете
6) После загрузки обновляю конфигурацию и захожу в ИБ. Начинается процесс обновления ИБ, который никак не доходит до конца и постоянно вылетает с какой-нибудь ошибкой.

т.е. ИБ у Вас не обновлена, следовательно содержит предыдущий cf.
PS: и не забываем про бекапы
28. TSSV 1151 22.10.13 16:58 Сейчас в теме
(27) MarSeN,
6) После загрузки обновляю конфигурацию и захожу в ИБ. Начинается процесс обновления ИБ, который никак не доходит до конца и постоянно вылетает с какой-нибудь ошибкой.

речь скорей всего идет об обновлении ИБ в связи со сменой версии, так как были затерты свойства исходной конфигурации при добавлении подсистемы, то есть, при сравнении - объединении не был установлен отбор по подсистеме файла "Построение дерева вызовов".
29. MarSeN 987 22.10.13 17:07 Сейчас в теме
(28)
ааа) ну да, надо же внимательнее читать, что написано )
сори за получившийся флуд.
PS: больше надо отдыхать )
13. 1cspbru 200 18.10.13 15:42 Сейчас в теме
Автор болшой молодец. Спасибо! То, что нужно для глубокого погружения в код. И ведь работает (ну почти:))))) на всех объектах. Идеей замерять через начало и окончание - очарован. Если бы не этот флажок, то была бы дикая куча хлама при замерах.

Молодец, однозначно +
14. TSSV 1151 18.10.13 17:34 Сейчас в теме
(13) 1cspbru, спасибо за такую "обратную связь", это очень ценно для меня!
16. kulmaksim 62 21.10.13 05:39 Сейчас в теме
Пытаюсь воткнуть дерево вызовов в БП 3.0, но во время обновления ИБ в самом конце постоянно лезут ошибки (последняя, которая была "ожидается имя формального параметра"). Может я что-то не так делаю?
1) Выгрузил модули конф-ии. Конфигурация->Выгрузить файлы конфигурации, выбираю все объекты и ниже ставлю галочку только на модули. Все выгружается в каталог.
2) Включаю возможность редактирования конф-ции и сравниваю/объединяю с конфой из файла. После объединения обновляю конфу.
3) В начало процедуры УстановкаПараметровСеанса модуля сеанса добавить строку:
ПостроениеДереваВызовов.УстановитьПараметрыСеанса(Константы.ПостроениеДереваВызовов.Получить()); Она у меня уже там есть... Причем кроме вызова этой процедуры там ничего нет. Пробовал и вставлять еще одну строку и без вставки :)
4) Захожу в пользовательском режиме, запускаю обработку "Вставить процедуры построения дерева вызовов", выбираю каталог с модулями и жму "Вставить процедуры дерева вызовов". Обработка благополучно вставляет в каждый модуль свои процедурки.
5) В конфигураторе загружаю обработанные модули. Конфигурация->Загрузить файлы конфигурации. Выбираю каталог и ставлю галочку на модули и для всех объектов.
6) После загрузки обновляю конфигурацию и захожу в ИБ. Начинается процесс обновления ИБ, который никак не доходит до конца и постоянно вылетает с какой-нибудь ошибкой.
19. TSSV 1151 21.10.13 12:01 Сейчас в теме
(16) zlakizla, думаю ошибка в следующем. Вам нужно добавить в БП 3.0 только то, что относится к подсистеме ПостроениеДереваВыозовов. Тот факт, что

ПостроениеДереваВызовов.УстановитьПараметрыСеанса(Константы.ПостроениеДереваВызовов.Получить()); Она у меня уже там есть...

говорит о том, что процедура установки параметров сеанса из скачанной конфигуарции затерла то что было в БП 3.0 и думаю не только это (скорей всего изменилась и версия, так как стартует обработка обновления ИБ как после смены релиза). Далее все описываемые эффекты подтверждают это предположение.

То есть, при сравнении - объединении нужно:
1. Конфигурация - Сравнить, объединить с кофнигурацией из файла, указать скачанный файл с подсистемой.
2. В открывшемся окне сравнения, снять галочку с корневого элемента, при этом все остальные галочки снимутся автоматически.
3. В этом же окне. Действия - отметить по подсистемам файла. Отметить только подсистему "Построение дерева вызовов" (в результате корневой элемент конфигурации будет отмечен полутоновой галочкой на сером фоне - на всякий случаай это отмечаю).
Далее как обычно.
30. help1Ckr 23.10.13 10:59 Сейчас в теме
За идею плюс, но вписывать в каждою процедуру код не вариант для типовых на поддержке
31. sml 41 24.10.13 09:23 Сейчас в теме
И зачем столько трудов, когда есть стандартный механизм 1С в конфигураторе:
Останавливать по ошибке -> стэк вызовов
identificator; +1 3 Ответить
32. Maxisussr 20.01.14 17:05 Сейчас в теме
Т.е. для того, чтобы она работала, придется в конец каждого из тысячи методов конфы (половина из них на поддержке с замком) вставлять вызов некоей процедуры - счетчика? А в чем смысл разработки?
33. RockLeeSan 22 19.10.14 19:20 Сейчас в теме
Здравствуйте! Обнаружил ошибку, которая возникает при огромном количестве вызовов процедур или функций (более тысячи). Привожу текст кода до исправления и после:
1) Функция ВернутьСтрокуОбращенияПоИндексам(СтрокаДерева)
...
...
...
Для Каждого ЭлМассива Из МассивИндексов Цикл
СтрокаОбращенияПоИндексам = ".Строки[" + ЭлМассива+ "]" + СтрокаОбращенияПоИндексам;
КонецЦикла;

2) Функция ВернутьСтрокуОбращенияПоИндексам(СтрокаДерева)
...
...
...
Для Каждого ЭлМассива Из МассивИндексов Цикл
СтрокаОбращенияПоИндексам = ".Строки[" + СтрЗаменить(СокрЛП(ЭлМассива),Символы.НПП,"") + "]" + СтрокаОбращенияПоИндексам;
КонецЦикла;


Как видно из текста, переменная "ЭлМассива" в первом варианте, имея числовой вид 1000 и более, конвертируется в строковый вид "1 000" (после первого знака вставляется неразрывный пробел, что приводит к ошибке обращения по индексу). Это старый прикол 1С, который необходимо учитывать при использовании конвертируемых из чисел в строку переменных.
34. RockLeeSan 22 11.11.14 13:39 Сейчас в теме
И еще раз здравствуйте! И снова обнаружена проблема, но скорей всего это уже косяк платформы. (в данном случае - 8.2.19.83):
при использовании методов "ПоместитьВоВременноеХранилище" и "ПолучитьИзВременногоХранилища", расположенных в разных процедурах, в начале и конце которых используется конструкция
//{Построение дерева вызовов
; ;ПостроениеДереваВызовов.НачалоБлока("........................");
//}

, ПОМЕЩЕННОЕ ВО ВРЕМЕННОЕ ХРАНИЛИЩЕ ЗНАЧЕНИЕ ОЧИЩАЕТСЯ !!!
(и становится в значение
Неопределено
)

Теперь не знаю, как отловить среди всех процедур те, в которых используется механизм хранилища, и подчистить там вышеприведенные конструкции...
35. gortol 202 16.02.18 09:52 Сейчас в теме
интересно, на расширении конфигурации (8.3.10+) такое возможно сбацать?
36. TSSV 1151 16.02.18 14:29 Сейчас в теме
37. Scorpion4eg 434 06.05.19 14:12 Сейчас в теме
Интересная вещь. Пытаюсь сейчас что-то подобное реализовать, но как стек исключений. А есть возможность добавить бамп переменных?
38. TSSV 1151 06.05.19 15:58 Сейчас в теме
Хороший вопрос, думаю можно.
39. nicxxx 255 08.05.19 07:47 Сейчас в теме
Многострочные условия в циклах обрабатываются некорректно.
Пока ЕстьДанные
//{Построение дерева вызовов
;ПостроениеДереваВызовов.НачалоБлока("ОбщиеМодули.ОбновлениеИнформационнойБазыБП.ОчиститьСуммыПРприПродажеВалюты() Экспорт, цикл: Пока ЕстьДанные");
//}
И Выборка.Регистратор = ТекущийРегистратор Цикл
40. TSSV 1151 08.05.19 10:24 Сейчас в теме
(39) Упор делался на обработку вызовов процедур и функций. Циклам и условиям внимание практически не уделялось, изначально эти возможности были добавлены скорее "на перспективу" и я просто забыл убрать их с формы. Дорабатывать их не планирую, но уберу эти настройки с формы. Можете сами исправить по аналогии с обработкой возвратов из функций (здесь следует учесть, что в условии может вызываться функция). Если ответ не устроил, пришлите реквизиты для возврата денег - верну по курсу sm.
41. TSSV 1151 08.05.19 11:01 Сейчас в теме
Коллеги, дополнил описание:
Отдельная обработка циклов и условий пока не поддерживается - то есть циклы и условия не образуют отдельных, собственных веток при построении дерева, а соответствующие вызовы функций (речь о выражениях условий в Если или прекращения цикла в Пока) обрабатываются в общем порядке. В выражениях условий могут вызываться функции, при этом логические выражения не всегда вычисляются полностью, например, при вычислении логического И, когда встречается ложное выражение. Аналогичная проблема существует и при вычислении логических выражений в операторах Возврат функций, но ее влияние намного менее существенно.
42. TSSV 1151 08.05.19 11:48 Сейчас в теме
Добавлена возможность скачать демо-базу Бухгалтерии 3.0.70.39 со встроенными механизмами построения дерева вызовов.
43. TSSV 1151 09.05.19 11:54 Сейчас в теме
(42) Эта возможность отклонена модератором - нарушение авторских прав.
Оставьте свое сообщение