Имя: Пароль:
1C
 
Куда вносить изменения, чтобы потом было проще обновлять?
0 1сПупс
 
23.04.26
11:48
Коллеги, доброго дня!
Есть база УТ11 типовая.
Планируется сильное изменение, поделитесь опытом, куда вносить изменения, чтобы потом было проще обновлять?
1 Fish
 
гуру
23.04.26
11:52
Зависит от самих изменений.
2 1сПупс
 
23.04.26
11:58
(1) по объёму планируется до четверти конфигурации. Документы, справочники, регистры. Скажем так, адаптация для отраслевика.
3 Fish
 
гуру
23.04.26
12:01
(2) Если планируются новые документы, справочники, регистры (или их реквизиты), то их я бы вносил в саму конфу. Не люблю новые метаданные выносить в расширения. Хотя, наверное, кто-то считает иначе.
4 RVN
 
23.04.26
12:06
Если менять типовой программный код, то по возможности, в расширение(и то надо смотреть).
Если в типовые объекты добавлять новые реквизиты метаданных - то снимать объект с замка и добавлять в конфигурацию.
Если совсем новые объекты - добавлять в конфигурацию.
ИМХО
5 mikecool
 
23.04.26
12:09
если потерять новые данные не критично - выносить в расширение и не лохматить бабушку
6 Fedor-1971
 
23.04.26
12:18
(0) тут есть тонкость: если будете продавать - имеет смысл вынести доработки в расширение, но, при обновлении конфы и доработке в режиме &ИзменениеИКонтроль может отвалиться всё расширение (чисто алгоритмы, данные останутся целыми).
Тут важно помнить - расширения не видят друг друга, т.е. если добавить справочник в одно расширение, использовать его в другом не получится
Подход в (3) более устойчив в плане собственных доработок, но при продаже, придётся внимательно переносить исправленное
7 mikecool
 
23.04.26
12:19
(6) т.е. если добавить справочник в одно расширение, использовать его в другом не получится
получится, в какой то платформе, начиная с 27х  даже консоль запросов все видит
8 Fedor-1971
 
23.04.26
12:23
(7) Почитаю про новые возможности в последних релизах платформы, если справочники видны между расширениями, то  это очень хорошо
9 Fish
 
гуру
23.04.26
12:33
(7) "консоль запросов все видит" - Имеется ввиду конструктор запросов в конфигураторе? Потому что консоль запросов в предприятии вроде всегда видела все справочники всех подключенных расширений.
10 mikecool
 
23.04.26
12:41
(9) ага, про конструктор речь вел
11 1сПупс
 
23.04.26
12:43
(9) Консоль запросов в режиме Предприятия всё видит, в режиме Конфигуратора конструктор запроса видит:
1. Основная конфигурация - Только Основная конфигурация
2. Расширение1 - Основная конфигурация + Расширение1
3. Расширение2 - Основная конфигурация + Расширение2
правильно?
12 Jackman
 
23.04.26
12:59
(0) Новые объекты, информация в которых ценна и трудно восстанавливать (регистры с важными данными, документы) - в основную конфигурацию, а все остальное в расширения. Даже формы новых док-тов и справочников можно в расширения.

Какие-то объекты, которые быстро теряют актуальность, для которых не важна сохранность их истории (например, какие-то вспомогательные регистры сведений) можно тоже в расширение.
13 Fish
 
гуру
23.04.26
13:01
(11) Тут не подскажу.
14 DrZombi
 
гуру
23.04.26
13:04
(0) Реквизиты менять в основной конфигурации.
Формы основной конфигурации менять в расширении.
Формы менять программно, т.е. писать код по добавлению реквизитов. (просто стабильно работает, чем изменение мышкой в расширении)
У вас будет некий симбиоз. Как бы вы что-то изменили, и не изменили :)
15 DrZombi
 
гуру
23.04.26
13:16
(11) Если справочники будете добавлять в расширении, то словите баги работы с консолью запросов из обработок.

- Метаданные расширения не доступны из внешних обработок. (я тут про Запросы, СКД и другие работы в конфигураторе)
- Запросы потребуют от вас наличие ссылок на объект метаданных из основной конфигурации.
- не всё в консоли запросов обрабатывается корректно, которые написаны в расширении. Увы, есть баги и странное поведение консоли, которая запускается из текста модуля расширения. (запрос работает, а консоль ругается на ошибки)
16 DrZombi
 
гуру
23.04.26
13:11
+ (0) В расширении не все работают методы из основной конфигурации. Включая планы обменов, критерии отборов, нет доступа для добавления реквизитов в регистры сведений из расширения. Не работает в расширении и определяемые типы.
17 DrZombi
 
гуру
23.04.26
13:13
+(0) Камень в сторону БСП, она некорректно работает с расширением. Есть баги обработки настройки ролей для объектов из расширения.
Про РЛС в расширении тоже забудьте :)
18 DrZombi
 
гуру
23.04.26
13:13
А так, проект может жить и в расширении, всё зависит от того, он самостоятельный, или дополнение к основной конфигурации :)
19 СвинТуз
 
23.04.26
13:16
(16)
Определяемые типы совсем не работают?
20 СвинТуз
 
23.04.26
13:17
(17)
Совсем про РЛС забыть. Есть проблемы?
21 Dmitrii
 
гуру
23.04.26
13:24
(0) Если конфигурация пилится для себя и не планируется её масштабирование на другие базы и/или продажа, то я придерживался бы следующего алгоритма.

0. Разумеется включаем возможность изменения конфигурации с установкой рекурсивно у всех объектов, начиная с корня, правила поддержки "Редактируется с сохранением поддержки". После каждого обновления не забывать устанавливать это правило поддержки для всех добавленных и измененных при обновлении объектов (в соответствующем диалоге, выскакивающем перед выполнением обновления, устанавливать переключатель).
1.  Все новые объекты метаданных (включая роли, общие модули, общие макеты пр. общие), а также новые реквизиты/измерения/ресурсы/табличные части/макеты/формы у существующих объектов конфы поставщика добавлять в самой конфигурации. Никаких расширений.
2. Вся логика работы ваших новых объектов тоже прописывать в самой конфигурации.
3. Подключаемые команды (обработки ввода на основании, обработки заполнения, печатные формы и все прочие отчёты и обработки, включая как самостоятельные так и подключаемые к объектам конфигурации и/или отображаемые на общих панелях), а так же то, что в стародавние времена делалось через внешние отчеты и обработки. Это всё делаем в расширении(ях). Стандартные подсистемы БСП позволяют это делать просто, прозрачно и понятно, с адекватной настройкой ролей и прав, а также встраиванием в командный интерфейс.
4. Доработка форм основой конфигурации поставщика. Если доработка относительна невелика, то делаем это в расширении, стараясь по максимуму использовать программные методы доработки форм (в идеале - только их). Если изменения значительные, то лучшим вариантом может быть не доработка существующей, а создание своей собственной формы. В таком случае свою форму помещаем в саму конфигурацию (расширение тут нафиг не нужно).
5. (Самая сложная часть). Доработка существующих объектов конфигурации поставщика. Какие доработки делать в расширении, а какие в самой конфе? Универсального и единственно верного ответа тут нет. Про добавление реквизитов/ресурсов/измерений/табличных частей и т.п. см. п.1 - добавляем всегда в самой конфе.
А дальше есть два сценария.
А) (пример) Мы решили переписать всю подсистему распределения и расчёта НДС при раздельном учёте. Это как минимум с десяток общих модулей, несколько десятков объектов (документов/справочников/регистров, их модулей, форм и модулей форм). Всё это в разных местах и разных подсистемах. А ещё регламентные процедуры закрытия, регламентированная отчетность и прочая фигня по мелочи, которая вылезет в непредсказуемых местах.
Такое я бы делал в основной конфе. Чтобы при каждом обновлении, когда вендор решит в очередной раз перетасовать все общие модули и в десятый раз перенести экспортные процедуры и функции из одних модулей/объектов в другие, я мог это видеть в окне трёхстороннего сравнения/объединения. Чтобы я имел возможность проанализировать сделанные вендором изменения и НАГЛЯДНО сравнить их с моими. Для крупномасштабных изменений это критически важно. Как бы аккуратно вы не делали доработки в расширении(ях) со всей документацией, после десятого обновления спустя пару лет удержать всё в голове невозможно. А даже самые идеальные тесты никогда не покрывают все 100%.
Б) Относительно небольшие изменения, не вмешивающиеся в какие-либо ключевые и очень сложные разделы и подсистемы учёта. Или эти вмешательства "сбоку" (назовём так) - то есть дополняют, но не ломают и не меняют типовое. Такие доработки лучше делать в расширениях.

В дополнение.
Особенности использования расширений (если доработка делается с их использованием)

Общие правила примерно такие (в порядке приоритета сценария от лучших к худшим):
- Если можно использовать модули с постфиксом Переопределяемый, то помещаем их в расширение и расширяем его процедуры с вызовом &После или &Перед.
- Если переопределяемых модулей нет или они не подходят и необходимо вмешиваться в обычные модули, то пытаемся в расширении расширять их методы с вызовом &После или &Перед
- Стараемся избегать расширения &Вместо. Непременно продолбаем тот момент, когда вендор что-то важное изменит в том модуле, который мы решили обходить "вместо". И хорошо если проблема вывалиться с ошибкой (например, изменилось количество или состав аргументов). Но в 90% таких случаев никакой программной ошибки не возникает. Косяк всплывает либо по заявке пользователя (где-то порушилась какая-то логика), либо при закрытии периода, когда не сходятся данные (не срослась логика изменённая вендором в обновлении с вашей доработкой, сделанной три года назад под старую логику).
- Стараемся избегать ИзменениеИКонтроль. Оно конечно лучше, чем вообще без контроля, но тоже нифига не всегда помогает разобраться в том что изменили и зачем, когда спустя пару лет вендор вдруг решил нахрен переписать всю процедуру, раздербанив её на несколько или наоборот объединив её с несколькими другими.
- Не плодим слишком много расширений. Отдельные расширения для подключаемых команд (обработки создания на основании, обработки заполнения, печатные формы, свои отчёты и обработки). Ещё отдельные расширения имеет смысл делать, (а) когда планируется тиражирование доработки (перенос на другие базы внутри компании, например) (б) доработка совсем уж "сбоку" - не использует механизмы самой конфигурации и не вмешивается в них. Во всех остальных случаях лучше делать все доработки в одном расширении. Разделять на несколько можно только те, которые точно никогда не пересекутся (по объектам, по логике, по подсистемам и т.д.). Отдельное расширение на каждую доработку кажется логичным и разумным. Но при значительных доработках (как в вашем случае) это со временем неизменно приводит к хаосу и конфликтам между расширениями.
- для временных исправлений (патчей) используем расширения. Не забываем их удалять после исправления ошибки в основной конфигурации.

Небольшие изменения - расширения.
Большие изменения - в основной конфе.
22 X Leshiy
 
23.04.26
13:32
Ретрограды)
23 2S
 
23.04.26
13:37
(2) "Скажем так, адаптация для отраслевика."
Купить отраслеву и не делать мозг.
24 Fish
 
гуру
23.04.26
13:38
(23) Они хотят продать, а ты им предлагаешь купить :))
25 DrZombi
 
гуру
23.04.26
14:00
(19) Нет, в расширении не позволяет редактировать из Основной конфигурации.
26 DrZombi
 
гуру
23.04.26
14:01
(20) Если сможешь из расширения использовать РЛС, напиши. У нас не вышло... Но мало ли, всё дело в сноровке :)
27 RVN
 
23.04.26
15:45
(21) >0. Разумеется включаем возможность изменения конфигурации с установкой рекурсивно у всех объектов, начиная с корня, правила поддержки "Редактируется с сохранением поддержки".

Зачем?
Правило "Редактируется с сохранением поддержки" нужно включать по минимуму и только для тех объектов, которые ты хочешь поменять.
Т.е. если ты планируешь добавлять справочник/документ/модуль/etc... то для корня включаешь, иначе - нет.
Если ты хочешь поменять что-то на форме объекта - то "Редактируется с сохранением поддержки" только для этой формы, а не для всего объекта
И т.п.
28 RVN
 
23.04.26
15:47
(19) Добавить типы из расширения в определяемый тип можно. Лишние типы убрать - нельзя.
29 СвинТуз
 
23.04.26
16:45
(25)
Убрать тип нельзя.
Добавить вроде бы можно.
30 СвинТуз
 
23.04.26
16:47
(26)
Не знаю.
Завел роль в расширении. Вбил в них РЛС.
Вроде бы нормально было.
31 СвинТуз
 
23.04.26
16:50
(29)
*убрать тип из определяемого типа
32 СвинТуз
 
23.04.26
16:57
(30)
Возможно если в двух расширениях разные РЛС, то будет баг.
Память плохая.
Вроде бы РЛС из расширения перекрывают РЛС основной конфигурации.
33 maxab72
 
23.04.26
17:35
(0) на инфостарте у GarriSoft была статья (в начале этого года), как вести параллельно две конфы - доработанную и типовую. Там есть интерсные идеи.
34 H A D G E H O G s
 
23.04.26
17:47
(0) Лет 10 уже не трогаю основную конфу, как правило стоит на замке.

Формы в расширении меняются кодом вооот по такому макету:
35 Dmitrii
 
гуру
23.04.26
18:19
(27) >> Зачем?

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

Лично я очень долго к этому приходил. Был опыт поддержки очень сильно изменённой БП 3.0. Примерно как у автора - на 20%. Разумеется регулярное обновление - это обязательное условие любой доработки в такой базе. После многократных глюков работы механизма поддержки единственный вариант, работающий без сбоев, был именно таким какой я описал - включаем режим "Редактируется с сохранением поддержки" на корне и рекурсивно на всех(!) объектах, включая те, которые никогда не планируете менять.

На самом деле, когда речь идёт о включении возможности изменения, особого смысла в сохранении режима "Не редактируется" особого смысла нет. Вот оно зачем?
Я понимаю для чего нужно "Снято с поддержки". Это означает, что объект переписан вами вхлам и любые изменения от вендора вам больше не нужны.
Я понимаю для чего нужно "Редактируется с сохранением поддержки". Оно надо, чтобы соединять в одном объекте и изменения/обновления от вендора и изменения/доработки от вас. И при этом видеть в окне трёхстороннего сравнения все изменения - ваши (текущей конфы) по сравнению с конфой поставщика / текущей по сравнению с новой конфой поставщика / и текущей версией поставщика с новой версией поставщика.
Для чего нужно "Не редактируется" - загадка. В особенности, когда оно периодически ломается, когда объект изменён (отличается от конфигурации поставщика), а статус "Не редактируется" (то есть должен быть идентичен версии в конфе поставщика).
36 WebberNSK
 
23.04.26
18:21
(34) понравилось
37 ГдеСобака Зарыта
 
23.04.26
19:46
В расширение выносить только код с аннотацией &перед или &после. Всё остальное в основной конфигурации.
Включать изменения на всю конфу не нужно, только на необходимые объекты.
38 alexela
 
23.04.26
20:34
(34) Интересно.
А можно немного поподробнее?
У вас более одного расширения?
Одно расширение "Исправление" с общим модулем для отрисовки интерфейса по шаблонам. Остальные расширения - адаптация под задачи.
39 H A D G E H O G s
 
23.04.26
21:57
(38) У нас 2 основных расширения, которые учитывают друг друга (но это трудно, так как функционал наследования от основной конфы переплетается и это учитывается через отдельный регистр сведений наследования вызовов). В обоих расширениях - рисование реквизитов и элементов на форме, в т.ч. динамических списков и перестановка типовых элементов внутрь наших групп.

В самом большом - порядка 340 тыс строк кода, и это только общие модули, во втором - меньше, но не считали. Во внешней компоненте - еще под сотню тыс строк, но там специфика Delphi. С десяток документов, под полсотни справочников и сотни гигабайт хранимых данных, которые за последние 6 лет активной работы у десятков клиентов ни разу не слетали.
40 H A D G E H O G s
 
23.04.26
21:58
Иногда разрабатываешь основную конфу - думаешь - боже, как это медленно, что за древность. Уже не воспринимаешь разработку основной конфы как что-то адекватное.
41 xenos
 
23.04.26
22:04
(2)
> Документы, справочники, регистры.


Это будет параллельная доработка или прям движения по регистрам 1С будете допиливать.
42 Волшебник
 
23.04.26
23:35
(0) Проект будет провален.
И вообще нет никакого проекта. Просто фигня в виде ветки на мисте...
43 Волшебник
 
23.04.26
23:37
(41) Ничего не будет. Забейте. Автор - тупой бот. Ветка про несбыточное будущее. Ни о чём.
44 2mugik
 
24.04.26
05:51
(0)Если надо сводить свои изменения типовых объектов с изменениями 1С то в конфу, иначе расширение. по моему так.
45 Мультук
 
гуру
24.04.26
08:59
(0)

Ничего не понятно.

Что такое "сильное" изменение ?
Чем оно отличается от "слабого" ?

На мой взгляд, сильное изменение это когда вы пытаетесь изменить или дополнить типовые алгоритмы основываясь на том, как они работают сейчас и поддерживать их работу, учитывая то, как 1С меняет типовые механизмы (привет взаиморасчетам или СО, например).

Еще всякое:
-- Мы решили сделать цену в 5 знаков после запятой (а еще лучше количество или сумму)
-- Написать свой документ(ы) и включить его (их) в расчет ССТ, интеркомпани и всё-всё-всё
-- Дописать "улучшить" интеркомпани
-- выкинуть расчет взаиморасчетов и написать свой с блекджеком и всем остальным
46 2S
 
24.04.26
09:04
(34) Класс! Надо замутить и вывести заполнение всех форм в один общий модуль по данным макета.
47 Garykom
 
гуру
24.04.26
09:57
Когда у вас на проекте одна конфа без лишних расширений - вам надо всего одно хранилище для разработки

Когда у вас кроме конфы код еще размазан по расширениям - ну вперед поднимать еще под каждое расширение свой хран
Юзеров там обновлять
Писать отпустите модуль - и забывать уточнять в каком хране

А потом это все еще умножается на количество разных дев/тест/препрод/прод...
48 RVN
 
24.04.26
10:04
(47) EDT же от этого спасет?))) Или нет?
49 Fedor-1971
 
24.04.26
10:17
(48) Похоже, что глобально нет. Там будут свои проблемы при объединении доработок.
По факту, + / - одинаково хранилище и EDT. Специально разворачивать последнее имеет смысл при большом количестве разработчиков (от 10 и больше) и потоке доработок, например, делаем нечто уровня УТ или ЕРП (типа отраслёвка)
50 Garykom
 
гуру
24.04.26
10:22
(49) Угу
EDT а точнее переход с хранилищ на Git требуется когда остро стоит проблема захвата в хранах
И хотят избавиться от бесконечных комментариев в коде

Но появляется новая проблема совмещения доработок, когда некто уже успел вперед в мастер и процедуры/функции пересекаются
51 Garykom
 
гуру
24.04.26
10:43
(50)+ Для уменьшения проблем совмещения бывает вводят новые правила типа никаких изменений интерфейсов
Это для 1С изменение объявлений процедур/функций

Т.е. не трогайте старую процедуру/функцию если надо еще параметр добавить - свою новую создавайте и используйте в этом случае
Но это так же приводит к быстрому разрастанию кода и его дублированию с избыточностью

Короче ни золотой, ни серебряной пули не бывает
Всегда приходится чем то жертвовать
Есть лишь некоторые эвристики как зависящие от проекта, его размера, людей на нем и т.д.

Если в команде почти никто не знает EDT и главное Git - в жопу их и все пилим через Конфигуратор с хранами
52 СвинТуз
 
24.04.26
11:26
(43)
Скоро на Мисте останутся боты и гуру?
Лет пять и доживем до такого?
53 RVN
 
24.04.26
12:35
(51)
>Т.е. не трогайте старую процедуру/функцию если надо еще параметр добавить - свою новую создавайте и используйте в этом случае
>Но это так же приводит к быстрому разрастанию кода и его дублированию с избыточностью

Ну если это свои процедуры/функции, то можно ввести регламент передачи параметров через структуру.
И тогда этот вопрос снимается.
54 H A D G E H O G s
 
24.04.26
12:46
(53) У меня правила:
1) Нет процедур, только функции.
2) Функция принимает 1-3 основных параметра и допструктуру.
3) Функция всегда возвращает структуру, содержащую поля
Результат - Булево,
ОписаниеОшибки - Строка
Данные - произвольный
КодОшибки - число, опционально, при работе со внешней средой.
55 Dmitrii
 
гуру
24.04.26
12:52
(52) >> Скоро на Мисте останутся боты и гуру?

Оглянись! Уже почти так и есть.

>> Лет пять и доживем до такого?

К этому времени останутся только боты.
56 RVN
 
24.04.26
12:55
(54) Если что-то полностью свое - тогда очень даже.
А если это доработки типовых такое смешение стилей будет следующих сторонних разработчиков напрягать
57 Garykom
 
гуру
24.04.26
13:06
(54) Хз сколько лет назад говорил что Процедуры тупо лишние
Достаточно только Функций
Легко извращаться через Структуры можно только в языках без строгой типизации
И это чревато кучей возможных ошибок
58 NorthWind
 
24.04.26
13:25
(57) почему? WinAPI всю жизнь так работало на языке С со строгой типизацией. И структурки у какого-нибудь СreateProcess вполне себе некислые.
59 Garykom
 
гуру
24.04.26
13:31
(58) Что там на C считается структурами это не те Структуры что в 1С
Там это просто общий массив байт, в котором блоки выделены и закреплены за неким именем и форматом
Фактически можно и в 1С так извращаться, всегда один входной параметр строка и один выходной, тоже строка
А внутри строк фигачить JSON ))
60 NorthWind
 
24.04.26
13:49
(59) как думается мне, структуры - это объекты данных с именованными полями, и в этом плане что в Си struct, что в 1С Структура логически совершенно одинаковы, хотя, конечно, с точки зрения создания и хранения отличия там колоссальные. Подход Hadgehogs в целом наследует классическому API, как его понимают программисты девяностых. И мне кажется, это здраво.
61 H A D G E H O G s
 
24.04.26
14:41
(60) Скажем больше - у меня и в строгом Delphi отлично структуры возвращаются
62 H A D G E H O G s
 
24.04.26
14:43
(61) Жалко, нельзя наследоваться от Record :-)
63 Garykom
 
гуру
24.04.26
14:49
(60) Я немного о другом
В 1С в структуру всегда можно еще нечто засунуть в рантайме
64 Fedor-1971
 
24.04.26
15:11
(63) так у структуры 1С есть замечательная штука .Свойство("ХорошееНазвание"), можно просто проверить, есть ли в структуре данные, которые нам очень нужно обработать
В Си, структура просто описывается в нужном виде и дальше не изменяется
65 Garykom
 
гуру
24.04.26
16:44
(64) Еще раз
Если описать заранее что может быть в структуре и менять динамически нельзя
Каким местом это будет отличаться от туевой тучи параметров через ","?

Какая нафик разница параметры (причем строго определенного типа) все перечислены в объявлении функции через разделитель?
Или они все внутри одного параметра - составной фиксированной структуры???
66 NorthWind
 
25.04.26
07:04
(65) больше 3-5 параметров плохо в читаемости и поддержке, есть риск их перепутать и наделать ошибок. Если параметры выходные - под каждый в вызывающем блоке нужно создавать переменную, что тоже не способствует краткости и читаемости. Под структуру будет только одна переменная и лаконичный вызов.
67 H A D G E H O G s
 
25.04.26
11:21
(66) Это Егор же, это знать надо.
Чтобы добавить параметр в сложном стэке - нужно пробросить его по всему стеку функций. А в случае типовой - позаимствовать в расширение всю шлептучую ветку. Но, хвала типовым разработчикам, там обычно есть структура.
68 H A D G E H O G s
 
25.04.26
13:27
Иногда, чтобы пробросить параметр, нужно завести параметр_сеанса под это дело. Благо, разработчики типовых настолько преисполнились, что и сами не брезгуют делать такое.

Но мы пойдем еще дальше - заведем Структуру, которую положим ВоВременноеХранилище, адрес которой положим в ПараметрСеанса.

Главное, чтобы наш код успел выполниться за 20 минут :-) . Ну и не забивать на синхронизацию - вычищать твою переменную из структуры после выполнения.
69 H A D G E H O G s
 
25.04.26
13:28
(68) И напишем под это дело обвязку типа
АСФОбщегоНазначения.УстановитьПеременнуюВХранилищеПеременных(ИмяПеременной,Значение)
АСФОбщегоНазначения.ПолучитьПеременнуюИзХранилищаПеременных(ИмяПеременной)
АСФОбщегоНазначения.УдалитьПеременнуюИзХранилищаПеременных(ИмяПеременной)
70 Garykom
 
гуру
25.04.26
15:07
(66) Ну мы же про чистый С говорим же да?
Не про 1С

Еще раз спрашиваю если "динамичности" нет то какая нафуй разница
Фиксированную составную структуру одну как параметр передавать в метод, внутри которой приколочены простые параметры
Или множество параметров передавать отдельно в метод вместо одного составного в виде структуры
71 Garykom
 
гуру
25.04.26
15:07
(67) Не знал, не знал, что ты и на С писать умеешь
72 Garykom
 
гуру
25.04.26
19:08
(70)+ Какая разница передать один указатель на область в памяти или несколько?
Если внутри одного точно так же выделены блоки и приколочены такого же размера как если передать несколько указателей, каждый на свой блок памяти ссылается, где внутри и хранится значение нужного типа
73 NorthWind
 
26.04.26
08:45
(72) технически разницы особой не будет. Но работать с кодом, где структура, будет заметно поудобней.
74 Garykom
 
гуру
26.04.26
09:20
(73) С этим согласен, но не совсем
Когда отдельные параметры они сразу контролируются, переданы или нет, значения по умолчанию и т.д.
А если передали структуру или что еще хуже объект - а хз что там внутри, что заполнено
И не поменялся ли уже формат структуры (важно для вызова других dll/so)
75 bolder
 
26.04.26
11:57
(0) Никогда не видел конфы с 20% изменений.Это фантастика.У нас один очень квалифицированный прог дописывал УТ на ОФ три года и очень гордился этим.Результат - менее 2% изменений типового кода,он очень обиделся,когда я посчитал это.
Поэтому не мохнатьте дедушку,снимайте с поддержки и пишите в основной,особливо если типовой код вам только костыль и вы замахнулись на большее...
Я предпочитаю расширения,так как ни на что не претендую,а заменяю логику точечно.Изредка меняю формы,тут как фишка ляжет и программно, и прямо.Не брезгую создавать расширения под каждую задачу.
Иногда спустя время просто удаляю их,если задача стала неактуальной.Удобно.
С некоторых пор храню все сколь нибудь важные данные в конфигурации,даже если работа с ними ведется из расширений.Удобно работать с запросами.
Результат - критически упало время обновлений.Конфигурация обновляется как типовая.Профит заказчика прямой.
76 X Leshiy
 
26.04.26
17:57
(75) Возможно, автор имел ввиду не "переписанная", а "дописанная")
Любой БИТ:чтототам, это надстройка и там написьковерчено бывает и 90%)
77 DrZombi
 
гуру
27.04.26
07:25
(31) Прогрессируют... раньше не было :)
78 DrZombi
 
гуру
27.04.26
07:32
(30) Согласен, может быть мы просто не умеем его готовить :)
79 DrZombi
 
гуру
27.04.26
07:33
(75) 👍
Независимо от того, куда вы едете — это в гору и против ветра!