Подбор в управляемой форме - что может быть проще?

Программирование - Работа с интерфейсом

97
Технологии модальности сейчас меняются на технологии асинхронности, многопоточности и прочие дивные вещи, что, в свою очередь, заставляет людей еще чаще спрашивать о том, что да как в этой новой нелегкой жизни. Разбираемся!

Добрый день, коллеги!

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

Навела меня на мысль рассказать об этом еще раз некая Анна, создавшая эту вот тему, в которой в очередной раз встречаю я богомерзкие слова "Результат = Форма.ОткрытьМодально()", а нервы то уже не те!!! )))

Итак, приступим к тому, чтобы внести ясность.

СУТЬ ЗАДАЧИ

Есть форма документа, есть справочник, данные из которого нужно поместить в таблицу формы документа (или в реквизит формы, или еще куда - тут это вопрос второй).

Некоторые "программисты" (ну да, назовем так), которые еще не вкусили прелестей нового мира и нового мирового порядка, все еще для подобных действий не находят ничего лучше, чем использовать старый и проверенный "Элементик = ОткрытьФормуМодально(ИмяФормы, ...);", а кое-кто сначала форму получает в переменную и только потом открывает (как в том самом вопросе на форуме, с которого все началось). Ну не на олимпиаде он - за дополнительную переменную балл не снижают (зряплату не понижают).

СУТЬ ВЕЩЕЙ

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

Давайте ответим на главный вопрос статьи: "как организовать подбор в управляемой форме?" Для этого откроем форму с признаком "ЗакрыватьПриВыборе = ложь"  и "РежимВыбора = истина":

&НаКлиенте
Процедура Подбор(Команда)

	ОткрытьФорму(
		"Справочник.Справочник1.ФормаВыбора", 
		Новый Структура("ЗакрыватьПриВыборе, РежимВыбора", 
			Ложь, Истина), 
			ЭтаФорма
			, , , ,
			Новый ОписаниеОповещения(
				"ПриЗакрытииФормыПодбора", 
				ЭтаФорма, 
				"Подбор"), 
			РежимОткрытияОкнаФормы.БлокироватьОкноВладельца
	);

КонецПроцедуры

В приведенном коде открывается форма выбора справочника "Справочник1", также предполагается, что у нас есть экспортная клиентская процедура "ПриЗакрытииФормыПодбора", которая будет вызваться при закрытии формы выбора.

Т.к. у нас параметр "ЗакрыватьПриВыборе" установлен в "ложь", то форма справочника при двойном клике или нажатии клавиши "Энтер" на элементе закрываться не будет. При этом т.к. параметр "РежимВыбора" установлен в "Истина", то каждый даблклик и "Энтер" будет генерировать событие "ОбработкаВыбора" во владельце. Таким образом, если у нас, например, каждый раз, когда выбирают элемент в форме выбора, должна добавиться строка табличной части, код дополнится вот такой процедурой:

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	Объект.ТабличнаяЧасть1.Добавить().ФИО = ВыбранноеЗначение;
КонецПроцедуры

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

Код, приведенный выше, всего-то добавляет новую строку в табличную часть "ТабличнаяЧасть1" и устанавливает там в реквизит "ФИО" выбранный в форме подбора элемент справочника.

Для красочности картины давайте дополним код процедурой, обрабатывающей закрытие формы выбора:

&НаКлиенте
Процедура ПриЗакрытииФормыПодбора(Рез, Доп) Экспорт 
	Сообщить("Ура, форма подбора закрыта!");
КонецПроцедуры

В данном случае при закрытии формы владельца просто вывалится сообщение: "Ура, форма подбора закрыта!".

 

РАЗВИТИЕ НАСТУПЛЕНИЯ

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

&НаКлиенте
Процедура ПриЗакрытииФормыПодбора(Рез, Доп) Экспорт 
	// если ничего не выбрали, то в рез будет пусто...
	Если НЕ Рез = Неопределено Тогда 
		Объект.ТабличнаяЧасть1.Добавить().ФИО = Рез;
	КонецЕсли;
	//Сообщить("Ура, форма подбора закрыта!");
КонецПроцедуры

//&НаКлиенте
//Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
//	Объект.ТабличнаяЧасть1.Добавить().ФИО = ВыбранноеЗначение;
//КонецПроцедуры

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

Также в обработке асинхронного оповещения необходимо контролировать возвращенный результат. Если результат пустой, то это говорит о том, что форму просто закрыли, не выбрав никакого значения. Для этого в коде добавлена проверка на "Рез = Неопределено".

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


&НаКлиенте
Процедура ПриЗакрытииФормыПодбора(Рез, Доп) Экспорт 
	//если ничего не выбрали, то в рез будет пусто...
	//Если НЕ Рез = Неопределено Тогда 
	//	Объект.ТабличнаяЧасть1.Добавить().ФИО = Рез;
	//КонецЕсли;
	// снова "Уга, товагищи!"
	Сообщить("Ура, форма подбора закрыта!");
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

	ПоказатьВводЧисла(
		Новый ОписаниеОповещения("ПриВводеЧисла",
			ЭтаФорма,
			ВыбранноеЗначение), , // вот тут у нас как раз появился доппараметр
		"Введите количество ФИО",
		10,
		0
	);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриВводеЧисла(Рез, Доп) Экспорт 
	
	// найдем строки с этим "ФИО"
	НайденныеСтроки = Объект.ТабличнаяЧасть1.НайтиСтроки(Новый Структура("ФИО", Доп));
	
	// если не нащли - добавим
	Если НайденныеСтроки.Количество() = 0 Тогда 
		Ст = Объект.ТабличнаяЧасть1.Добавить();
		Ст.ФИО = Доп;
		Ст.Колво = рез;
	Иначе
		// если нашли - увеличим колчество
		НайденныеСтроки[0].Колво = НайденныеСтроки[0].Колво + рез;
	КонецЕсли;

КонецПроцедуры

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

ЗАКЛЮЧЕНИЕ

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

97

См. также

Лучшие комментарии
17. spacecraft 19.09.17 11:06 Сейчас в теме
Придрались к наименованию переменных. Это больше к рефакторингу относится.
Тут есть программная "ошибка".
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	Объект.ТабличнаяЧасть1.Добавить().ФИО = ВыбранноеЗначение;
КонецПроцедуры

Да и в другом примере ОбработкаВыбора. Этот код не всегда будет работать как задумано.
Hamsik; TreeDogNight; pbazeliuk; NSerget; jONES1979; +5 Ответить
Остальные комментарии
Сортировка: Древо
1. nomadon 279 19.09.17 07:07 Сейчас в теме
Сначала задается планка где лишняя переменная - это плохо, а потом в, собственном коде, Рез и Доп. Отсюда вывод, даже несколько, но некоторые до конца не ясны:
1. Если обгадил чужой код - самому можно плохокодить
2. Чужой код гадь, а в свой не смотри
3. Даже если знаешь что плохогодить нельзя, но ничего с этим сделать не можешь - посмотри в чужой код и скажи что там еще хуже


Доброе утро;)
kadild; PoZiTiFFF; bulpi; Gorus; TreeDogNight; jONES1979; NN2P; uri1978; awk; Tolpinski; mmoozzgg; +11 Ответить
2. starik-2005 1409 19.09.17 09:17 Сейчас в теме
(1) рез и доп - обязательные аргументы функции оповещения. Без них она работать не будет. Учим мат.часть.

Ну, как я и говорил, подтянулись "программисты", плохо владеющие механизмами платформы. Но для остальных появилась возможность учиться на чужих ошибках)))
kadild; Anchoret; uri1978; Sheriff1987; KSy; корум; +6 1 Ответить
9. nomadon 279 19.09.17 10:03 Сейчас в теме
(2) я не про наличие параметров в процедуре (кстати это процедура а не функция), а про смысловое наименование переменных
11. starik-2005 1409 19.09.17 10:08 Сейчас в теме
(9) в С вообще процедур нет - одни функции, но некоторые из них не возвращают значение. Так что разницы между словами "процедура" и "функция" практически нет. Главное, что свою функцию данная процедура выполняет. Помните картинку о всей сути критиков со словами "горизонт завален"? Вот в этом вся суть Вашей критики. Молодежи может даже интересно на этот диалог посмотреть, так что не зря.
14. nomadon 279 19.09.17 10:21 Сейчас в теме
(11) ну тогда можно вообще в нулях и единицах пример писать, функция процедуры тоже будет выполняться)
15. starik-2005 1409 19.09.17 10:31 Сейчас в теме
(14) ну если заговорили о нулях и единицах, то в ассемблере нет различий в вызове процедур и функций, а машинному коду об именах переменных ничего не известно.

По поводу стандартов, то они предписывают именовать переменные так, чтобы была ясна их суть. С "рез" и "доп" суть ясна. Проблема тут в интерпретации стандартов с Вашей стороны.
16. nomadon 279 19.09.17 10:36 Сейчас в теме
(15) а мы пишем код что бы кому было ясно?
1. машине?
2. тому кто писал это код?
3. тому кто не писал этот код?

Если учитывать последнее, то принимает решение о допустимости кода совсем не тот кто его писал а тот для кого.
Brawler; mvxyz; kuzyara; BlizD; TreeDogNight; +5 Ответить
7. starik-2005 1409 19.09.17 09:51 Сейчас в теме
(1) если говорить о коде, то, как я понял, Ваша придирка была к поименованию переменных. Т.к. 1с - это чаще всего открытый код и данное замечание справедливо. Моя же придирка была к использованию лишней переменной - за это в олимпиадном программировании снижают балл, ибо это грубая ошибка, влияющая на производительность.
10. nomadon 279 19.09.17 10:05 Сейчас в теме
(7) моя придирка в общем впечатлении, если сами себе поднимаете планку - то приводить дурацкие ошибки в пример - глупо.
12. starik-2005 1409 19.09.17 10:09 Сейчас в теме
(10) ошибки с именем переменной? Это не ошибки. Но да, горизонт завален)))
13. nomadon 279 19.09.17 10:19 Сейчас в теме
(12) если не считать нарушение стандартов разработки ошибкой то не ошибка)
3. Сурикат 176 19.09.17 09:23 Сейчас в теме
Имелось ввиду, что название переменных не отображает их суть.
Неужели так сложно написать Результат, ДополнительныеПараметры?

А если процедура получиться не маленькая в конце уже и можно запутаться в сокращениях...
kadild; mvxyz; PoZiTiFFF; Gorus; TreeDogNight; Prikum; +6 Ответить
4. starik-2005 1409 19.09.17 09:25 Сейчас в теме
(3) а смысл обязательные аргументы функции писать полными именами? Я ж написал, что для друзей УФ можно и без фамилии обойтись.)))
5. TODD22 17 19.09.17 09:35 Сейчас в теме
Очень похоже на пример из книги Радченко "Практическое пособие разработчика" из главы "Организация подборов" или нет?

На экзамене на спеца "подбор" заставляют делать через ВременноеХранилище.
6. starik-2005 1409 19.09.17 09:47 Сейчас в теме
(5) по-разному подбор организовать можно. Радченко? Кто это?
8. TODD22 17 19.09.17 09:54 Сейчас в теме
(6)https://its.1c.ru/db/pubdevguide
по-разному подбор организовать можно.

Для полноты картины можно было и подбор через ВХ привести...
19. webester 28 20.09.17 08:44 Сейчас в теме
(6)
Радченко? Кто это?

Вот и выросло молодое поколение... "программистов (ну да, назовем так)"(с)кто-то из (0)
21. starik-2005 1409 20.09.17 10:25 Сейчас в теме
(19) ага, когда мы писали машинный код в тетрадках по русскому языку, их еще и в проекте не было))) И Радченко тоже не было.
22. webester 28 20.09.17 12:01 Сейчас в теме
(21)Не было конечно,не радченко, ни чуства юмора, ничего не было. Зато ЧСВ было точно.
23. starik-2005 1409 20.09.17 12:01 Сейчас в теме
(22)
Зато ЧСВ было точно.
Ну как без него-то, родимого. Это как без Радченко современным говнокодерам )))
24. webester 28 20.09.17 12:07 Сейчас в теме
(23)Это точно. 90% людей считают, что их способности выше средних. Хотя лурк утверждает, что 95% населения — идиоты. Вроде как нонсенс,но на самом деле, все логично.
25. starik-2005 1409 20.09.17 12:11 Сейчас в теме
(24) ну с учетом того, что в спейсикс и тесла народу работает крайне мало, то ЛУРК сильно завысил цифру.
26. webester 28 20.09.17 15:16 Сейчас в теме
(25)Скорее занизил, судя по тому, что происходит вокруг.
И я не знаю каков процент
Сумасшедших на данный час,
Но если верить глазам и ушам -
Больше в несколько раз. (с)ИзвестноКто
27. TODD22 17 20.09.17 15:45 Сейчас в теме
(26)
Скорее занизил, судя по тому, что происходит вокруг.

ЧСВ разум затуманил... бывает....
28. starik-2005 1409 20.09.17 15:46 Сейчас в теме
(26)
Скорее занизил
Занизил одно, завысил второе. Я о количестве умных говорил, а Вы о дураках )))
29. webester 28 20.09.17 15:47 Сейчас в теме
(27)ну я то себя отношу к тем 95% куда уж нам уж....
(28)кхм )))
30. starik-2005 1409 20.09.17 15:48 Сейчас в теме
(29)
куда уж нам уж
Я, лично, всегда за левелап. Но, как говорил мудрец, что можно привести верблюда к воде, но заставить его пить не получится. Хочет - будет пить, не хочет - не будет.

Вот, кстати, придумал хорошую задачку для собеседования: есть куб или квадрат с ребром/стороной Х. Какая длина стороны/ребра будет у куба/квадрата с объемом/площадью, в два раза меньше исходного. Сильно сложная? )))
31. webester 28 20.09.17 15:49 Сейчас в теме
(30)Я пробую. Но вроде как уже напился. Не знаю может влезет еще немного.
>>Сильно сложная.
Что вы хотите выяснить этой задачей? Я тоже ищу, что бы спросить у кандидата в программисты, если он не умеет ничего. От слова вообще.
32. KapasMordorov 428 20.09.17 16:39 Сейчас в теме
(30)
Он над нами издевался. Ну сумасшедший, что возьмешь!
18. pbazeliuk 1450 19.09.17 18:39 Сейчас в теме
(5) На экзамене можно доказать свою позицию, но экзаменаторы могут иметь уровень ниже чем у программиста.
Вариант как в статье и подбор через временное хранилище могут иметь побочные эффекты, и если объяснить экзаменатору их - придирок не должно быть.

Очень давно сдавал специалиста, и решил задачу контроля остатков с помощью "нового" метода проведения и опции "БлокироватьДляИзменения" :) Почти влепили "-1" за решение пока не ткнул носом в литературу и новую на то время конфигурацию УТ 11.
20. TODD22 17 20.09.17 08:48 Сейчас в теме
(18)Речь была не столько о конкретном методе, сколько о том что не плохо было бы рассказать о нескольких методах.
А на экзамене не всегда есть возможность что то доказывать, не все сдают очно и не у всех есть возможность из за экзамена ехать за 5000 км.
17. spacecraft 19.09.17 11:06 Сейчас в теме
Придрались к наименованию переменных. Это больше к рефакторингу относится.
Тут есть программная "ошибка".
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	Объект.ТабличнаяЧасть1.Добавить().ФИО = ВыбранноеЗначение;
КонецПроцедуры

Да и в другом примере ОбработкаВыбора. Этот код не всегда будет работать как задумано.
Hamsik; TreeDogNight; pbazeliuk; NSerget; jONES1979; +5 Ответить
33. Labotamy 20.09.17 20:28 Сейчас в теме
А это точно статья из 2017 года? =)
34. nomadon 279 20.09.17 22:29 Сейчас в теме
(33) нет конечно..
Пока действие происходит в одном месте весь фокус происходит в другом,
Статья про то что нужно все-таки не забывать про пользователей и делать им подбор, тем более это просто, а в комментах батл в стиле мисты)
35. Rustig 977 22.09.17 08:49 Сейчас в теме
(0)
1) в УТ 10.3, в КА 1.1, которые на обычных формах, до сих пор используется форма подбора, и весь механизм, описанный в данной статье, используется в данной форме подбора. Что было на обычных формах, перешло в управляемые. Ничего нового. :)
Мне кажется, что разобраться с идеей подбора легче на обычных формах, чем на управляемых - нет отвлекающих процедур перехода с клиента на сервер и наоборот (какие переменные передать на сервер и получить обратно на клиенте).
2) У самой популярной методички по изучению 1с от автора Радченко методы организации подбора освещаются в отдельной главе книги.
3) В чем смысл статьи - я не понимаю.
Всякий раз в статьях посвященных управляемым формам замечаю одну и ту же тенденцию - "сложность" - как будто все прекрасное должно быть сложным - уберите из статьи слова "многопоточность", "асинхронность" , "НаКлиенте" - и идея подбора станет чуточку понятнее. :)
Прикрепленные файлы:
36. starik-2005 1409 22.09.17 10:52 Сейчас в теме
(35)
Всякий раз в статьях посвященных управляемым формам замечаю одну и ту же тенденцию - "сложность"
Статья как раз и говорит о том, что никакой сложности нет. В этом основная ее цель. А причина, по которой она появилась, в статье описана.
37. Jestery 25.09.17 22:37 Сейчас в теме
Если НЕ Рез = Неопределено Тогда


Сорри за возможно очевидный вопрос, я новичок. А почему не написать
Рез <> Неопределено?
38. starik-2005 1409 25.09.17 23:12 Сейчас в теме
(37)
А почему не написать
А вломы переключать раскладку.
39. strange2007 132 08.08.18 16:31 Сейчас в теме
(37) Потому что начинающие программисты всегда гнут пальцы знаниями "крутых" языков. Вот когда автор поймёт, что программирование в бизнесе, это работа с объектами этого самого бизнеса, а не методами сортировки пузырьком, тогда будет писать код грамотный и может даже профессиональный.
Каюсь, 20 лет назад я тоже считал единственным настоящим языком программирования ассемблер.
40. starik-2005 1409 08.08.18 17:48 Сейчас в теме
(39)
что программирование в бизнесе, это работа с объектами этого самого бизнеса, а не методами сортировки пузырьком, тогда будет писать код грамотный и может даже профессиональный
Ну когда автор этого сообщения поймет, что решение задач бизнеса в программировании - это применение актуальных методов и приемов, последних технологических достижений и разработок в области алгоритмов и обработки данных, тогда он немножко будет думать перед тем, как ляпнуть какую-то ерунду )))
41. strange2007 132 09.08.18 04:41 Сейчас в теме
(40) Хм, спорное утверждение. Во многих российских компаниях используется семёрка, а в западных компаниях даже попадаются системы, работающие на алгоритмах, написанных в прошлом тысячелетии. При этом большинство из этих примеров - успешные зарабатывания денег и программисты в этих компаниях зачастую в совершенстве владеют всякими современными средствами разработки!
42. strange2007 132 09.08.18 08:25 Сейчас в теме
(40) Всё. Нигде не нашёл в рекомендациях по программированию на 1С хоть какое-то упоминание про запутывание читаемости. И вообще, трудночитаемый код применяется только в некоторых случаях. Например, при создании защищённых модулей или для попытки зарабатывания дополнительных денег с невезучего клиента. В других случаях "трудный" код только вредит и значит гордое "А вломы переключать раскладку." является показателем не совсем высокого профессионализма.
43. starik-2005 1409 09.08.18 08:58 Сейчас в теме
(42) Вы даже не представляете, на сколько смешным может быть Ваш комментарий. Но точно могу сказать одно - комплексы вполне себе лечатся. Обратитесь к специалисту, ибо кроме как нарушением психики мне сложно объяснить проидирки к логическому оператору НЕ или к сокращению наименования переменных. Но, повторюсь, это лечится, при том весьма успешно.
44. strange2007 132 09.08.18 09:44 Сейчас в теме
(43) В единичном случае всё прекрасно понятно и без разницы как написано. А вот когда блок большой и его трудно анализировать, то такие мелочи вносят ещё большую сумятицу. Что часто приводит к мысли (часто тоже непрофессиональной) - "да я лучше тут всё перепишу". Именно поэтому код должен быть правильным во всём, в т.ч. и в мелочах.
Вообще мне удивительно, что Вы, адепт всяких сей, так позорите свой клан. Ведь и сишники и ассемблеристы (и все остальные) стремятся к понятному коду, а не к пальцегнутому.
Примечание: придирка не к конкретно сокращению переменных, а именно к ошибочному понимаю по поводу культуры программирования.
45. starik-2005 1409 09.08.18 12:52 Сейчас в теме
(44)
Именно поэтому код должен быть правильным во всём, в т.ч. и в мелочах.
С этим утверждением легко спорить исходя из тезиса, что лучше работающий прототип, чем теоретическая идеальная модель. Но я рад, что разговор вернулся в зону конструктива - это прогресс.

(44)
Вообще мне удивительно, что Вы, адепт всяких сей, так позорите свой клан. Ведь и сишники и ассемблеристы (и все остальные) стремятся к понятному коду, а не к пальцегнутому.
Подобный аргумент говорит о том, что Вы не особо разбираетесь в проблемматике. Фактически С++ и Asm (сейчас в крайних случаях) используются для достижения скорости, а скорость - это плоский код, с низким уровнем абстракции и высокой плотностью полезной нагрузки. К понятному же коду стремятся за счет повышения уровня абстракции, декларативности, замыканий. Но все эти механизмы понятны тем, кто в курсе, как они работают, начинающим же кодерам данный уровень заведомо недоступен и вызывает шок.

(44)
Примечание: придирка не к конкретно сокращению переменных, а именно к ошибочному понимаю по поводу культуры программирования.
Я так начал писать после того, как увидел однажды в коде подобную конструкцию (типа "Если НЕ а = 5"), а для меня логика, как совокупность булевых преобразований, проста и понятна, какой бы уровень вложенности условий бы ни был. Да, вложенность условий (та же логическая инверсия НЕ) повышает цикломатическую сложность кода, но в одном условии на "НЕ (РАВНО)" эта сложность повышается на единицу всего, что в рамках даже функции величина несущественная.
46. strange2007 132 09.08.18 13:12 Сейчас в теме
(45)
а для меня логика, как совокупность булевых преобразований, проста и понятна, какой бы уровень вложенности условий бы ни был

Очень сильно не соглашусь. И в СССР и в Западном мире давно уже доказано, что для человека максимальное количество анализируемых сущностей от 5 до 8. Всё что больше, это резкое повышение вероятных ошибок и как следствие, ухудшение во всём. Именно поэтому при декомпозиции любого процесса принято за один раз анализировать только 5-8 сущностей. В том числе это применимо и при анализе кода.
Проще говоря, когда всего одна строка кода, всё понятно и красиво. Но как только получаем большой модуль, состоящий из кучи противоречивых и/или непонятных кусков, то упираемся в стену "КАРАУЛ!". Кому это выгодно? Как писал выше, только тем, кто не хочет что бы его код читали или тем, кто зарабатывает таким образом.
И да, хорошая работа - оплачиваемая работа. Ну а ковыряние даже в своём коде с важным лицом, мало кому нравится.
Скажем так - если Ваши утверждения верны и имеют право жить, тогда большинство поддержит данные тезисы и, уверяю, 1С-вцы издадут целую главу рекомендаций, на тему как надо сокращать переменные. Ну а пока этого нет....

А про культуру программирования на ассемблере тоже много всего написано. Например, общепринятое обнуление регистра (против майкрософтовского).
47. starik-2005 1409 09.08.18 13:20 Сейчас в теме
(46)
А про культуру программирования на ассемблере тоже много всего написано. Например, общепринятое обнуление регистра (против майкрософтовского).
А которого регистра не подскажите? В Ассемблере x86 этих регистров до чертиков, при том регистр указателя стека, регистр указателя команды, регистры сегментов и некоторые другие регистры обнулять - это в принципе нонсенс. А SUB (E/X)AX,(E/X)AX или XOR (E/X)AX,(E/X)AX, как обнуление аккумулятора в соответствующей архитектуре (Х - 64 бита, Е - 32 бита, без них - 16 бит) - это все-же потребность, а не "культура".

Ну и уж если просто на Вашем уровне придираться к последнему Вашему сообщению, то вот знаками препинания вы, увы, пользоваться не умеете, а тексты читают куда большее количество людей, чем код. Удачи Вам и добра )))
48. strange2007 132 09.08.18 13:23 Сейчас в теме
(47) Да, это позор, когда делаешь элементарные ошибки в переписках и я этого стыжусь, а не горжусь этим)))
49. starik-2005 1409 09.08.18 13:25 Сейчас в теме
(48)
и я этого стыжусь
Ну так учитесь не делать их, ведь процитированная мной часть Вашего сообщения - это второе простое предложение, связанное с первым союзом "и", перед которым, как всем известно (не, ну правда всем, ибо оное в школе проходят), ставится запятая.
50. spacecraft 09.08.18 17:08 Сейчас в теме
(46)
1С-вцы издадут целую главу рекомендаций, на тему как надо сокращать переменные. Ну а пока этого нет....

Вообще-то есть. Давно. Может не в полной мере, но все же.
https://its.1c.ru/db/v8std#content:-2145783193:hdoc
51. acanta 44 15.08.18 13:46 Сейчас в теме
По аллегории Лукьяненко Иные - это аутисты, которые объединились и нашли себя в нашем мире, а сумрак - депрессия/неспособность вести себя как все. Короче, всем выйти из сумрака.
Оставьте свое сообщение