Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Результаты опроса: Используете ли Вы оператор goto?
Программирую исключительно на goto 4 10.00%
Использую, если имеет смысл 22 55.00%
Категорически не использую 13 32.50%
Использую, но никто об этом не знает 1 2.50%
Голосовавшие: 40. Вы ещё не голосовали в этом опросе

 
 
Рейтинг 4.59/68: Рейтинг темы: голосов - 68, средняя оценка - 4.59
198 / 93 / 43
Регистрация: 09.11.2019
Сообщений: 414

Ваше отношение к goto

10.08.2021, 19:57. Показов 15078. Ответов 95
Метки goto (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

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

Парочка примеров, с которыми я столкнулся буквально вот на днях:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
   private Func<Data, bool> GetSearchPredicate()
        {
            Func<Data, bool> predicate;
 
            switch (_currentState)
            {
                case SelfState.Improve:
                {
                    // Внутри SomeMethod заложена нужная логика
                    predicate = x=> SomeMethod(_field, x);
                    break;
                }
                case SelfState.Replannig:
                {
                    predicate = x=> SomeMethod(_field, x);
                    break;
                }
                default:
                {  
                    goto case SelfState.Improve;   
                }
            }
 
            return predicate;
        }
Какие выходы, не используя goto:
1. Либо сделать присвоение predicate = null(или ещё что) и избавиться от блока default целиком. Хотя лично мне спокойнее, когда default в коде имеется.
2. В блоке default скопипастить кейс, на который ссылаюсь(тогда при изменениях надо помнить, что менять нужно в 2 местах).

В свитче я оставил goto(мой первый goto в жизни)

Другой пример:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            foreach (var group in groups)
            {
                foreach (var answer in group)
                {
                    if(statement)
                    {
                        goto next;
                    }
                }
 
            }
            next:
            {
 
            }
Какие выходы, не используя goto:
1. Применить SelectMany к groups и оставить один цикл foreach.
2. Повозиться с флагами и break'ами.

Здесь мне готушить не хочется, не знаю почему.

Т.е. можно и без goto жить в обоих приведенных(и ещё n неприведённых) примерах.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.08.2021, 19:57
Ответы с готовыми решениями:

Ваше отношение к DOSу
Интересно, много ли кто её использует? Я отвечу &quot;Люблю посидеть&quot;. При покупке винчестера планирую для ДОСа выделить около 1 Гиг местав...

Ваше отношение к SCRUM
Мировые эксперты считают, что без SCRUM в принципе невозможна разработка качественного программного обеспечения. Интересно остались ли...

Ваше отношение к Windows 10
как вы относитесь к Windows 10

95
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
11.08.2021, 19:42
Студворк — интернет-сервис помощи студентам
Имхо, если вас где нибудь спалят за использованием goto - сразу повесят клеймо говнокодер. И потом доказывай что ты что то там оптимизировал и вообще он есть в исходниках платформы.
Вот недавно статья на хабре вышла
https://habr.com/ru/post/571342/
У автора было тестовое задание с требованием на максимальную производительность, автор понаписал кучу супер быстрого кода, с которым ему хамски отказали без всякого фидбека
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
while (true)
            {
                var yearOffset = t1.Year - 2000;
                if ((yearOffset < 0) || (yearOffset >= _years.Length))
                {
                    throw new InvalidOperationException ("Year out of range");
                }
 
                if (_years[yearOffset] > 0)
                {
                    if (_months[t1.Month - 1] > 0)
                    {
                        var isLastDayInMonth = t1.Day == DateTime.DaysInMonth (t1.Year, t1.Month);
                        // 32-й день означает последнее число месяца
                        if (((_days[t1.Day - 1] > 0) || (isLastDayInMonth && (_days[31] > 0))) && (_weekDays[(int)t1.DayOfWeek] > 0))
                        {
                            if (_hours[t1.Hour] > 0)
                            {
                                if (_minutes[t1.Minute] > 0)
                                {
                                    if (_seconds[t1.Second] > 0)
                                    {
                                        var millisecond = t1.Millisecond;
                                        do
                                        {
                                            if (_milliseconds[millisecond] > 0)
                                            {
0
HF
 Аватар для HF
1342 / 926 / 202
Регистрация: 09.09.2011
Сообщений: 2,754
Записей в блоге: 2
12.08.2021, 08:51
Обсуждали, обсуждали, что использование - это скорее исключительная необходимость.
Но странно, почему в голосовании чёткое разделение?
Моего варианта нет - "Никогда не возникала такая необходимость".
После перехода с VB.NET на C# ни разу такого не писал.
И про то? что это "фу-фу, делать так не надо" тоже не знал.
0
 Аватар для zhunshun
768 / 496 / 216
Регистрация: 05.04.2015
Сообщений: 2,080
12.08.2021, 09:31
switch может не правильно работать если без готу обрабатывать данные-раз, выход из вложеных цыклов-два, переход обратно к вводу, вместо бесконечного цыкла -три, читаемость кода сохраняется-четыре. Кто проходит собеседование-минус один
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
12.08.2021, 09:43
zhunshun, примеров, конечно же, не будет?
0
 Аватар для zhunshun
768 / 496 / 216
Регистрация: 05.04.2015
Сообщений: 2,080
12.08.2021, 10:30
Рядовой, Про устроиство на работу? В результатах могут только очень нелестные отзывы, а про какои пример? https://docs.microsoft.com/ только оттуда. До сих пор используетса и будет пример про кофеиныи автомат
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
12.08.2021, 10:42
zhunshun, этот пример запилен для демонстрации конструкции goto case. Вы приведите реальный пример, где без goto не обойтись. И зачем тут ссылка на мсдн?
0
 Аватар для zhunshun
768 / 496 / 216
Регистрация: 05.04.2015
Сообщений: 2,080
12.08.2021, 11:01
Цитата Сообщение от Рядовой Посмотреть сообщение
реальный пример, где без goto не обойтись
В примере показано про это. Что если сработает блок case "2": на этом проверка оканчивается, а надо пересчитать стоимость начиная с минимальной. Код минимально сложныи. Разве это не то где нельзя обоитись? Еще про бесконечныи цыкл. Зачем его делать если в одну строчку можно вернуться к вводу допустим. Это же удобнее чем городить какои то обход типа GetTryValue
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
12.08.2021, 12:22
Суть полемики такова: использовать goto можно, но никто этого не делает, потому что:
Цитата Сообщение от Рядовой Посмотреть сообщение
если вас где нибудь спалят за использованием goto - сразу повесят клеймо говнокодер.
Между можно и нужно - огромная пропасть.
0
HF
 Аватар для HF
1342 / 926 / 202
Регистрация: 09.09.2011
Сообщений: 2,754
Записей в блоге: 2
12.08.2021, 15:50
Цитата Сообщение от zhunshun Посмотреть сообщение
а про какои пример? https://docs.microsoft.com/ только оттуда. До сих пор используетса и будет пример про кофеиныи автомат
В примере показано про это. Что если сработает блок case "2": на этом проверка оканчивается, а надо пересчитать стоимость начиная с минимальной. Код минимально сложныи. Разве это не то где нельзя обоитись? Еще про бесконечныи цыкл. Зачем его делать если в одну строчку можно вернуться к вводу допустим. Это же удобнее чем городить какои то обход типа GetTryValue
"Минимально сложный". Что за ... .

А пример вообще реально ниочёмный. Сейчас натравить на них тех же писателей NetCore, они бы изничтожили там всё за такое. Но подозреваю что данный пример приведён ТОЛЬКО для показа возможностей, которые можно делать в switch.е.
Ибо... что это за переходы снизу вверх ради суммирования? Ну и у меня сразу напрашивалось - почему "большая чашка" сразу сделала +50, а не перешла в "медиум"? Там бы выше пошло на "смолл" и получилось бы тоже самое. Но зато по сценарию. А так снова напрашивается - почему бы сразу +75 не сделать?
Ибо в "чистом коде" полюбому бы написали типы с закрытыми свойствами для нужной калькуляцией. И без свича б всё порешали.
Так что пример плохой. Найдите ещё.
0
 Аватар для zhunshun
768 / 496 / 216
Регистрация: 05.04.2015
Сообщений: 2,080
12.08.2021, 17:16
Цитата Сообщение от HF Посмотреть сообщение
Сейчас натравить на них тех же писателей NetCore, они бы изничтожили там всё за такое.
Кто бы спорил с вами.
Цитата Сообщение от HF Посмотреть сообщение
Найдите ещё.
хватит HF мир дружба
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
13.08.2021, 04:52
Цитата Сообщение от HF Посмотреть сообщение
Но странно, почему в голосовании чёткое разделение?
Два десятка голосов -- та еще статистика.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
13.08.2021, 13:22
Цитата Сообщение от HF Посмотреть сообщение
После перехода с VB.NET на C# ни разу такого не писал.
А до перехода?

Вопрос-то собственно имеет отношение к любому ООП языку.
Да, и не только к ОПП ЯП, скорее ко всем где есть много разных циклов.

Допустим, Фортран (сейчас не знаю, я 80-х) вообще кроме For циклов не имел.
И реализовать программу без Goto было просто невозможно.

А а VB.Net есть все циклы, что и в Шарпе.

Добавлено через 4 минуты
Цитата Сообщение от HF Посмотреть сообщение
Но странно, почему в голосовании чёткое разделение?
Первый и последний вариант - скорее для юмора.
Они всерьёз не рассматриваются.
Никто не будет сейчас, как раньше на Фортране, вместо циклов do, while, условий в for использовать конструкции исключительно на goto.

Поэтому в опросе по сути два варианта ответа: 1 - Никогда не использую по религиозным причинам, и 2 - Использую очень редко, когда это действительно необходимо.
1
HF
 Аватар для HF
1342 / 926 / 202
Регистрация: 09.09.2011
Сообщений: 2,754
Записей в блоге: 2
13.08.2021, 17:47
Цитата Сообщение от Элд Хасп Посмотреть сообщение
А до перехода?
Соответственно - Да. А вопрос хороший, я даже и не подумал об этом. Сейчас поиском пробежался, огромное количество.
И если проанализировать причину то:
- я был молод и учился самостоятельно. Ни о каком чистом коде, в 2005ом, и не знал.
- увидев код, сразу подумал про MSSQL, ибо очень похоже. Там приходится именно так и делать - вконце программы две метки - успешный и не успешный выход и возвращаем разный результат. Видать корни оттуда растут.
- грубо говоря использование в старом коде оправдано. Когда метод занимается Всем, то он соответственно размером в несколько страниц. И простыми ретурнами выйти нельзя, а оборачивать всё в "if"ы слишком громозко. Хотя именно так и появлялись флаги "bool lastStatus... if(lastStatus) ..."
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
13.08.2021, 18:19
На Бейсике без goto было ни куда. В далеких 80-х... А потом, какие-то парни вдруг посчитали, что скачки по программе в неизвестные места - это плохо. От сюда пошло это неписанное правило. Но как бы там ни было - оно прижилось.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
13.08.2021, 19:19
Цитата Сообщение от HF Посмотреть сообщение
Когда метод занимается Всем, то он соответственно размером в несколько страниц.
Да, согласен.
Goto очень присущ процедурному программированию.
И тогда это было обоснованно.
При всех прочих, конструкции с goto легче оптимизируются, дают меньший и более быстрый код.
Любой вызов метода - это сравнительно длительная и ресурсная операция.
Эпоха процедурного программирования - это эра относительно слабых компов.
И там приходилось экономить, оптимизировать буквально на всём.

Я сам помню, когда подсчитывал каждый бай в скомпилированной программе, вообще не использовал call в пользу jump.

Но мы же говорим о другой эпохе.
ООП само по себе, при любых раскладах, затратнее и объёмнее процедурного силя.
Цель его совсем в ином: упростить работу программистов (в первую очередь коллективного программирования) за счёт большей нагрузки на железо.

А этом отношении VB.Net - это не Basic и не QBasic.
Это полноценный ООП ЯП, возможно, с несколько устаревшим (на мой взгляд) синтаксис, но это не мешает на нём реализовывать решения с соблюдением всех принципов ООП и SOLID.
Призыв к отказу от GoTo тоже относится к этой эпохе, когда преимущества получаемые от его применения стали не существенными на фоне его недостатков для современного понимания качества кода.

Поэтому при выборе в пользу Goto нельзя основываться на его более быстром выполнении и компактной компиляции.
Это имеет значение только в крайне редких задачах. Скажем так "относительно низкоуровневых", например уровень библиотек .Net.
Но кроме них, на мой взгляд, бывают задачи где использование Goto позволяет сделать код метода более прозрачным, легче понимаемым и т.д.

Цитата Сообщение от wizard41 Посмотреть сообщение
На Бейсике без goto было ни куда. В далеких 80-х...
Согласен.
Я приводил в пример Фортран.

Цитата Сообщение от wizard41 Посмотреть сообщение
А потом, какие-то парни вдруг посчитали, что скачки по программе в неизвестные места - это плохо.
То же согласен.
Но если переход Goto на метку в пределах "одного взгляда", если это позволяет избавиться от дублирования кода, если для замены его приходится вводить метод, если .... и многие ситуации в которых goto улучшает код и делает его качественнее, то использовать его не только допустимо, но и НУЖНО.

Цитата Сообщение от wizard41 Посмотреть сообщение
Но как бы там ни было - оно прижилось.
Скорее всего среди тех для кого это почти религия.
Для тех кто глубоко, хорошо понимает ООП, теорию и происхождение принципов, правил, рекомендаций в нём - Goto никогда не был под запретом.
Да, из-за развития ЯП в реальном программирование эффективное и оправданное его использование очень снизилось.
Если не брать "низкоуровневое программирование", то можно сказать, что его почти полностью исключили из применения.
Но это никак не исключает того, что в какой-то очередной задаче вы можете наткнуться на условия которые лучше всего реализовать используя goto.
И если такое произойдет, то не надо это отвергать из-за нарушений религиозных табу.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
13.08.2021, 19:30
Цитата Сообщение от Элд Хасп Посмотреть сообщение
И если такое произойдет, то не надо это отвергать из-за нарушений религиозных табу.
Да в том то все и дело, что если у тебя, как у разработчика применение goto сложностей не вызывает, то у тех, кому (для кого) этот код пишется - может вызвать рвотный рефлекс. Религии вокруг гото на самом деле нет никакой; есть лишь сложившиеся традиции.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
И если такое произойдет
Потому я и бейсик привел, т.к. там без goto вообще из цикла не выйдешь, за неимением иных инструкций. В современных же ЯП даже сложно себе представить такую ситуацию, где без goto не обойтись.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
13.08.2021, 19:56
Цитата Сообщение от wizard41 Посмотреть сообщение
Религии вокруг гото на самом деле нет никакой; есть лишь сложившиеся традиции.
А чем "сложившиеся традиции" из-за которых "может вызвать рвотный рефлекс" отличаются от религии?
Религия, конечно, здесь используется не в прямом смысле этого слова, а как термин для обозначения строгого следования каким-то традициям и правилам без обоснования их полезности, эффективности, с неприятием любого отличного мнения без рассмотрения его аргументов.

Цитата Сообщение от wizard41 Посмотреть сообщение
В современных же ЯП даже сложно себе представить такую ситуацию, где без goto не обойтись.
Сложно представить - не значит невозможно.
На практике, в простой теме мне только один раз встретился случай когда на мой взгляд всё же стоит реализовать используя goto.
Ранее я давал ссылку на соответствующее обсуждение.
kolorotur, на сколько помню, написал, что ему на практике вообще ни разу не приходилось его использовать.
Но тем не менее, я, он и некоторые другие, считают, что если нам не попадалось такой задачи задачи, это не значит, что она не может попасть кому-то другому.
И коды .Net прекрасное доказательство для обоснованности такой позиции.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
13.08.2021, 20:04
Элд Хасп, так и я не запрещаю никому его использовать.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Сложно представить - не значит невозможно.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
И коды .Net прекрасное доказательство для обоснованности такой позиции.
Я говорю о целесообразности. Вот, приспичит кому особо не задумываться над задачей, влепит goto и прощай работа. Такие случаи были. Понимаете - дань традициям, только и всего.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
13.08.2021, 22:16
Цитата Сообщение от wizard41 Посмотреть сообщение
Я говорю о целесообразности. Вот, приспичит кому особо не задумываться над задачей, влепит goto и прощай работа.
Ну, неправильный, кривой, некрасивый код и т.д. код можно сделать с использованием любого оператора, инструкции.
В контексте обсуждения именно goto, априори, подразумевается, что по остальным критериям код соответствует всем требованиям.
То есть речь идёт о том, делает либо код применение в нём goto автоматически "кривым" даже, если применение в данной задаче для данных условий оптимально: без него появляется дублирование, или надо вводить одноразовые методы, делегаты, или требуются дополнительные переменные и проверки условий и т.п.
0
1536 / 544 / 127
Регистрация: 09.01.2018
Сообщений: 1,768
13.08.2021, 22:21
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Поэтому в опросе по сути два варианта ответа: 1 - Никогда не использую по религиозным причинам, и 2 - Использую очень редко, когда это действительно необходимо.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Религия, конечно, здесь используется не в прямом смысле этого слова, а как термин для обозначения строгого следования каким-то традициям и правилам без обоснования их полезности, эффективности, с неприятием любого отличного мнения без рассмотрения его аргументов.

Да причем здесь религия?
В большинстве случаев, код с применением goto можно отрефакторить и избавиться от него. Почему это стоит сделать уже писали выше. Чего ради напевать ему дифирамбы? Потому что в исходниках .NET этот оператор иногда используется? Так это не показатель. Это узко специализированная область, в которой его применение возможно оправдано. Но в точности сказать этого никто, кроме разработчиков .NET скорее всего не сможет. Может есть на то причины, а может и нет их, просто так удобно и вполне законно. Обратите внимание, во всей теме, нет ни одной четко обозначенной причины, почему в таком то куске исходника используется оператор goto.

Мне тоже никогда не приходилось его использовать. И я даже сомневаюсь, что когда либо я смогу вспомнить о том, что существует такая возможность. Более вероятно, я буду рассматривать возможности реструктуризации кода, потому что, если goto является единственным выходом, скорее всего с кодом/алгоритмом что то не то и надо над ним еще раз подумать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2021, 22:21

Ваше отношение к co-working?
Википедия. Считаете ли Вы идею co-working оригинальной и востребованной? Может уже кто то пробывал работать на себя таким образом....

Ваше отношение к flash-заставкам
Хотелось бы узнать Ваше отношение к заставкам перед попаданием на основной сайт-на главную страницу. Как они повлияют на положение...

Ваше отношение к деятельности Anonymous
Вот что хочется узнать ... Анонимус не определена организация с неопределенными участниками и какой мутной идеей. Но они нашли немало дирок...

Ваше отношение к NULL полям
Доброго времени суток! Искал я себе идею для учебного БД и наткнулся на идею с почтой, идея меня заинтересовала, но в ходе разработки БД...

Ваше отношение к не своим детям
Имеете ли Вы собственных детей или нет - совершенно не влияет на Ваше отношение к детям, которые не являются Вашими, но тем не менее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru