Флаг "Использовать ПОЧТИ всегда", или Нюанс динамических списков

11.02.21

Разработка - Механизмы платформы 1С

Небольшая пятничная история по программной работе со строкой динамического списка.

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

Элементы.Список.ТекущиеДанные

 

Возьмём обычного новичка, который только начинает свой путь в 1С. Некий программист Вася.

 

 

Одним прекрасным вечером нашему разработчику понадобилось побыстрее оказаться дома. Но тут пользователь: 

Нам другой программист добавил кнопку "Сделать всё хорошо". Нужно, сделать её немного желтенькой. Ну и чтобы она была видна только для документов с заполненной суммой!

Звучит просто. И Вася сел за работу. 

В первую очередь он "покрасил" кнопку. 

 

Ну вот! Уже половина задания сделана.

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

 

Вася создаёт обработчик события ПриАктивизацииСтроки(). И вносит свой несложный код:

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	Элементы.СделатьВсеХорошо.Видимость = ЗначениеЗаполнено(Элементы.Список.ТекущиеДанные.Сумма);
	
КонецПроцедуры

 

Ну вот, можно запускать!

 

 

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

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	ТекущиеДанные = Элементы.Список.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Элементы.СделатьВсеХорошо.Видимость = ЗначениеЗаполнено(ТекущиеДанные.Сумма);
	
КонецПроцедуры

 

Вася спокойно отдал свою доработку и уже собрался идти домой, но

 

Новая ошибка. Разобравшись в ситуации, наш программист выяснил, что у этого пользователя скрыта колонка "Сумма".

Пользователь отключил колонку через "Изменить форму" со словами "меньше знаю - лучше сплю". 

И в результате - колонка перестала быть доступной в ТекущиеДанные. Это хорошо видно в отладке:

 

Наш Вася хоть и не силён в 1С, но гуглить умеет. И он быстро нашёл решение - установить напротив поля "Сумма" флаг "Использовать всегда":

 

Теперь поле всегда будет доступно в ТекущиеДанные. И можно не опасаться за свой код.

Уже у выхода Вася оглянул сотрудников, которые, как он уверен, с удовольствием пользуются нововведением. 

 

И тут:

 

Что опять сломалось?

Оказывается, что пользователь настроил в своей форме списка группировку по дате. И в результате, когда он нажимал на строку группировки, выпадала ошибка:

 

Вася залез в отладку и увидел, что в ТекущиеДанные нет обычных для данной формы свойств. Вместо них - описание группировки. 

 

А в ТекущаяСтрока хранится не ссылка на документ, а "СтрокаГруппировкиДинамическогоСписка"

 

Выходит, что "использовать всегда" не означает, что свойство всегда будет в ТекущиеДанные...

Пояндексив, Вася нашёл самый простой вариант - проверять ТекущиеДанные не только на Неопределено, но и на группировку.

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	ТекущиеДанные = Элементы.Список.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено 
		ИЛИ ТипЗнч(ТекущиеДанные) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
		Возврат;
	КонецЕсли;
	
	Элементы.СделатьВсеХорошо.Видимость = ЗначениеЗаполнено(ТекущиеДанные.Сумма);
	
КонецПроцедуры

 

Теперь точно идеально!

Программист быстро направился к выходу, на этот раз уже не оглядываясь.

А вот ещё это поправьте

Расстроенный Вася снова приступил к анализу. Оказывается, что теперь, когда пользователь нажимал на группировку, то видимость кнопки не менялась. И, если до этого кнопка была видна, то на группировке она так же оставалась доступной. 

А на самом деле кнопка должна быть недоступна, ведь это не "документ с заполненной суммой". 

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	ТекущиеДанные = Элементы.Список.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено 
		ИЛИ ТипЗнч(Элементы.Список.ТекущаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
		
		ОтображатьКнопку = Ложь;
		
	Иначе
		
		ОтображатьКнопку = ЗначениеЗаполнено(ТекущиеДанные.Сумма);
		
	КонецЕсли;
	
	Элементы.СделатьВсеХорошо.Видимость = ОтображатьКнопку;
	
КонецПроцедуры

 

Ну теперь уже точно всё. Василий поехал домой. Но всю дорогу он искал на ноутбуке примеры в типовых конфигурациях.

Оказалось, что есть БСПшный метод СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка()

Спойлер СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка
// Проверяет, что текущие данные определены и не являются группировкой.
// Предназначена для обработчиков таблиц формы динамических списков.
//
// Параметры:
//  ТаблицаИлиТекущиеДанные - ТаблицаФормы - таблица формы динамического списка для проверки текущих данных.
//                          - Неопределено
//                          - ДанныеФормыСтруктура
//                          - Структура - текущие данные для проверки.
//
// Возвращаемое значение:
//  Булево
//
Функция ЭтоЭлементДинамическогоСписка(ТаблицаИлиТекущиеДанные) Экспорт
	
	Если ТипЗнч(ТаблицаИлиТекущиеДанные) = Тип("ТаблицаФормы") Тогда
		ТекущиеДанные = ТаблицаИлиТекущиеДанные.ТекущиеДанные;
	Иначе
		ТекущиеДанные = ТаблицаИлиТекущиеДанные;
	КонецЕсли;
	
	Если ТипЗнч(ТекущиеДанные) <> Тип("ДанныеФормыСтруктура")
	   И ТипЗнч(ТекущиеДанные) <> Тип("Структура") Тогда
		Возврат Ложь;
	КонецЕсли;
	
	Если ТекущиеДанные.Свойство("ГруппировкаСтроки") Тогда
		Возврат Ложь;
	КонецЕсли;
	
	Возврат Истина;
	
КонецФункции

 

И если использовать его, то код будет такой

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	ТекущиеДанные    = Элементы.Список.ТекущиеДанные;
	
	ОтображатьКнопку = СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка(ТекущиеДанные) И ЗначениеЗаполнено(ТекущиеДанные.Сумма);
	
	Элементы.СделатьВсеХорошо.Видимость = ОтображатьКнопку;
	
КонецПроцедуры

 

А если использовать ещё один типовой метод, то можно сделать и так:

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	ТекущиеДанные    = Элементы.Список.ТекущиеДанные;
	
	ОтображатьКнопку = СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка(ТекущиеДанные) И ЗначениеЗаполнено(ТекущиеДанные.Сумма);
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СделатьВсеХорошо", "Видимость", ОтображатьКнопку);
	
КонецПроцедуры

 

А ещё, можно и не проверять на поле группировки, а использовать метод ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры()

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	ТекущаяСумма = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Элементы.Список.ТекущиеДанные, "Сумма");
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
	Элементы, "СделатьВсеХорошо", "Видимость", ЗначениеЗаполнено(ТекущаяСумма));
	
КонецПроцедуры

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

 

Василий ещё решит, какой код самый "красивый" и "правильный". Кстати, напишите в комментариях, как, по Вашему мнению, лучше всего?

 

Уже перед сном нашего разработчика заинтересовал другой вопрос. А есть ли в типовых какие-то примеры ошибок? И он начал копаться...

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

Вот несколько примеров из ERP 2.5.6.98 :

 

 

 

 

Всё это по той причине, что при обращении к свойствам ТекущиеДанные нет проверки на то, является ли данная строка реальной строчкой списка, а не группировкой.

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

Теперь я буду всегда проверять не только на Неопределено, но и на СтрокаГруппировкиДинамическогоСписка. 

Гордый проделанным исследованием и своими решительными выводами юный разработчик Вася блаженно уснул.
Ему снились воздушные динамические списки, крылатые группировки, вкусные свойства и лавандовые проверки на ошибки.
Он ещё не знает, что рано утром в понедельник ему придётся изучить ещё одну статью про его доработку: Серверные вызовы, которые нельзя вызывать
Вася снова перепишет свою форму списка ещё более "правильно". Но это будет в понедельник. А пока что впереди целые выходные. Можно отдохнуть.

 

 

Понравилась статья? 

Не будьте равнодушными! Поставьте лайк плюс, оставьте комментарий. Ещё много в 1С неизведанного!

И переходите к другим публикациям:

 

УФ ДС Управляемые формы Динамический список Стандарты Правила ТекущиеДанные СтрокаГруппировкиДинамическогоСписка Группировка Баг Ошибка Код Программирование

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4501    dsdred    53    

71

Как готовить и есть массивы

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

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

24.01.2024    5286    YA_418728146    25    

63

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6407    dsdred    36    

111

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18470    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

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

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12086    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    8811    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

20.08.2023    6275    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15980    SeiOkami    31    

103
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. RustIG 1351 11.02.21 18:39 Сейчас в теме
2. RustIG 1351 11.02.21 18:40 Сейчас в теме
забирай вознаграждение :)
user958854; A_Max; vld_dmn; sosaria; DrAku1a; SeiOkami; +6 Ответить
3. SeiOkami 3423 11.02.21 18:44 Сейчас в теме +2 $m
(2) о, спасибо за донат 👍
4. PerlAmutor 129 11.02.21 18:51 Сейчас в теме
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
    Элементы, "СделатьВсеХорошо", "Видимость", ЗначениеЗаполнено(ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
        ОбщегоНазначенияКлиентСервер.ЗначениеСвойстваЭлементаФормы(Элементы, "СписокДокументыЗакупки", "ТекущиеДанные"), "Сумма", Неопределено))); 
Merkalov; kaliuzhnyi; +2 Ответить
5. SeiOkami 3423 11.02.21 18:55 Сейчас в теме
(4)

ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
    Элементы, "СделатьВсеХорошо", "Видимость", 
		ЗначениеЗаполнено(
			ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
        		ОбщегоНазначенияКлиентСервер.ЗначениеСвойстваЭлементаФормы(
					Элементы, "СписокДокументыЗакупки", "ТекущиеДанные"
				), "Сумма", Неопределено
			)
		)
); 

Показать
Merkalov; Поручик; Jimbo; +3 Ответить
6. Merkalov 8 12.02.21 06:17 Сейчас в теме
(4) Через полгода следующий программист такой:
Че?

К такому коду нужно в комментарий ссылку на данный топик скидывать)

Минимизация кода - не всегда хорошо.
user754943; +1 Ответить
7. rabid_otter 134 12.02.21 08:41 Сейчас в теме
в ОбщийМодуль.ОбщегоНазначенияКлиентСервер все уже есть, и если программист открывает модуль формы какого-нибудь документа, он рано или поздно обнаруживает подобные функции в этом модуле.
минимизация кода - это очень хорошо.
при клиент-серверных вызовах, код модуля также передается на сервер, поэтому и придуманы общие модули с типом "Клиент".
на ИС теперь принято писать статью из-за одной функции общего модуля БСП?
ТекущиеДанные могут быть равны неопределено, это еще с 8.1 плетется, про группировку строки тоже наткнулся лет 5 назад, когда ушел с типовых в разработку самописных конфигураций.
а вот вы знаете, что в веб-клиенте новый цвет с дробными значениями компонент R, G, B приводит к веселым и неожиданным последствиям? хотя, может быть уже пофиксили, это было в 15-й версии платформы.
Yashazz; Поручик; rpgshnik; +3 2 Ответить
8. RustIG 1351 12.02.21 10:36 Сейчас в теме
(7)
на ИС теперь принято писать статью из-за одной функции общего модуля БСП?

если в виде исследовательской публикации, то "да".
автор обнаружил в разных конфах, что не все этих стандартов придерживаются, о которых вы упомянули...
mrChOP93; nekit_rdx; vld_dmn; +3 Ответить
9. rabid_otter 134 12.02.21 11:21 Сейчас в теме
(8) ладно, если это разбор механизма 1С, про который не написано в открытых источниках, типа структуры байт-кода 1С, соглашусь.
но на одну типовую функцию БСП, которая довольно часто используется - исследование? вы смеетесь?
хотя после графоманов типа Ивана забыл как его фамилия, можно ожидать каких угодно статей.
7OH; Yashazz; +2 Ответить
10. SeiOkami 3423 12.02.21 11:36 Сейчас в теме
(9) не стоит так сурово.

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

Если вы уже достаточно опытный разработчик, чтобы знать в том числе и эту тему, то не стоит забывать, что когда-то это было не так. Да и вообще не понимаю о какой именно "одной типовой функции" вы говорите.
LordKim; alevnev; +2 Ответить
12. rabid_otter 134 12.02.21 12:55 Сейчас в теме
(10) ок, не одна функция, но по сути для корректного получения текущих значений достаточно сделать 2 проверки:

1) галочка у реквизита таблицы "использовать всегда" установлена.
2) ТекущиеДанные <> Неопределено И ТипЗнч(ТекущиеДанные) = Тип("СтрокаГруппировкиДинамическогоСписка")

или я что-то еще упустил?
если нет, то ребята, вы серьезно - 2 ифа и целая статья?????

по поводу того, что в ERP (или как мне на собесе спросили - ЕРП знаете?) такие ошибки - а кто говорит, что ЕРП пишут боги 1С? всегда можно забыть какие-то мелкие детали.
14. SeiOkami 3423 12.02.21 13:05 Сейчас в теме
(12) вы просто перечислили действия. Начинающему разработчику это ничего не говорит.
В отличии от статьи, где наглядно показаны всё необходимое, а главное - почему именно нужно и что будет, если это не сделать.
А так же показаны разные примеры работы.
Если же упрощать по вашему принципу, то большинство образовательной информации будет сводится к "делай так". Без ответов "почему", "зачем", "а что если не сделаю". Без примеров, без объяснения. И бесполезно.

Вся проблема в том, что вы считаете, будто все вокруг должны мыслить так же как вы. И знать то, что знаете вы. И удивляетесь, когда сталкиваетесь с примерами обратного.
KolBbl4; LordKim; vl_vedernikov; starponyx; nekit_rdx; VAAngelov; alevnev; Azamatex; +8 Ответить
15. rabid_otter 134 12.02.21 13:11 Сейчас в теме
(14)
Начинающему разработчику это ничего не говорит

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

ну ок, тут соглашусь.
Вся проблема в том, что вы считаете, будто все вокруг должны мыслить так же как вы. И знать то, что знаете вы. И удивляетесь, когда сталкиваетесь с примерами обратного.

ахахах, в треде объявился диванный психиатр.
ну что ж, коллега, раз уж мы про такой позорный кейс говорим:
был бы рад, если вы добавите в свою статью заметочку про поведение дин. списка в веб-клиенте.
оно подглюкивает, вот мой костыль в одной из последних моих самописочек (не совсем само-, т. к. используется БСП):

Если ТипЗнч(ТекущаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда 
			
			СтандартнаяОбработка = Ложь;
			
			Если ЗначениеЗаполнено(ТекущаяСтрока.Ключ) Тогда 
				
				#Если ВебКлиент Тогда
					
					//ИмяГруппировки в веб-клиенте на 8.3.15.1656 пустое
					
					ВыбраноПредставление = 
					(ЭлементФормы.Имя = Элементы.Список.Имя) 
					И (ПустаяСтрока(ТекущаяСтрока.ИмяГруппировки) 
					Или ТекущаяСтрока.ИмяГруппировки = "Представление");
					
				#Иначе
					
					ВыбраноПредставление = (ТекущаяСтрока.ИмяГруппировки = "Представление");
					
				#КонецЕсли
Показать

может быть в более поздних релизах зафиксили.

В статье объединены те ошибки, с которыми может столкнуться разработчик при работе с текущими данными динамического списка.

получается, что не все ошибки объединены
30. 7OH 69 16.02.21 20:33 Сейчас в теме
(15) вот про отладку - в самое оно.
Большинство знакомых брезгуют этим инструментом пользоваться.
Отсюда и результат.
25. Yashazz 4709 16.02.21 14:21 Сейчас в теме
(10) Всё это можно было уложить в 10 строчек, а не устраивать камеди-клаб с картинками. Вы б ещё мультфильмов сюда напихали. Воды множество, по делу мало что. Ну и конечно, БСП, которая переделывается до неузнаваемости раз в полгода, подана как панацея. Зато плюсиков нагребли и в топ вылезли со всей этой разлюли-трепологией.
11. RustIG 1351 12.02.21 12:26 Сейчас в теме
(9)имхо, озвучены многочисленные подводные камни, прояснена тема настолько глубоко, что исходная первоначальная задача на управляемых формах в разных конфах на БСП теперь кажется лишь верхушкой айсберга, а не малой локальной доработкой...
скажем так, на обычных формах решается все гораздо легче....
13. rabid_otter 134 12.02.21 12:55 Сейчас в теме
(11) ага, история про 2 ифа. лол кек.
16. Dzenn 870 12.02.21 14:57 Сейчас в теме
Сама постановка задачи содержит ошибку. Нужно сделать просто кнопку, и при нажатии уже проверять, можно ли вывести результат, и если можно, то какой. То есть, не нужно трогать ни видимость, ни доступность кнопки, что бы там пользователь не утверждал.
Maden; nekit_rdx; rpgshnik; +3 Ответить
17. SeiOkami 3423 12.02.21 17:20 Сейчас в теме
(16) в рамках контекста статьи это не принципиально. Можно было сделать так. И тогда все проверки, описываемые в статье, были бы на нажатии кнопки. Посыла не меняет.
18. TMV 14 13.02.21 08:39 Сейчас в теме
(16) Отнюдь. По-вашему пользователь получит сильно перегруженный интерфейс с невероятным количеством кнопок и меню, нажимая на большую часть которых, он получит что-то вроде "Не заполнено то-то", "Не используется то-то" или "Не хватает прав".
Если пользователю в данный момент какая-то команда не нужна, ее и не должно быть видно, ИМХО.
SeiOkami; +1 Ответить
19. Dzenn 870 13.02.21 09:33 Сейчас в теме
(18)
(16) Отнюдь. По-вашему пользователь получит сильно перегруженный интерфейс с невероятным количеством кнопок и меню, нажимая на большую часть которых, он получит что-то вроде "Не заполнено то-то", "Не используется то-то" или "Не хватает прав".


Так не делайте перегруженный интерфейс ;-)

Если пользователю в данный момент какая-то команда не нужна, ее и не должно быть видно, ИМХО.


Как все программисты пишут своё приложение для учёта финансов, так и все программисты пытаются переигрывать с видимостью/доступностью.
20. TMV 14 13.02.21 11:03 Сейчас в теме
(19)
Так не делайте перегруженный интерфейс ;-)
Вот конкретно на этом примере вы предложили оставить кнопку видимой, хотя очевидно, что в описанных в примере случаях нажатие на нее ни к чему не приведет.
Так зачем же пользователю ее видеть?!

Другой пример. В ЗУП3 в документах отпуск и БЛ куча печ.форм, но для кадровика половина из них не нужна, и (о чудо!) для кадровиков этих пунктов в меню печати нет.
По-вашему их нужно было оставить, но при попытке печати выдавать "Нет прав"?!

Как все программисты пишут своё приложение для учёта финансов, так и все программисты пытаются переигрывать с видимостью/доступностью.
Это вообще не понятно к чему и о чем.
21. ilp06 14.02.21 13:26 Сейчас в теме
(20)
Другой пример. В ЗУП3 в документах отпуск и БЛ куча печ.форм, но для кадровика половина из них не нужна, и (о чудо!) для кадровиков этих пунктов в меню печати нет.
По-вашему их нужно было оставить, но при попытке печати выдавать "Нет прав"?!

Это не всегда правильно. Если касается безопасности, то правильно. Если для построения типа, удобного итерфейса, то вопрос спорный. Попробуйте на своем ФИ́ЗИЧЕСКОМ рабочем столе динамически менять видимость и порядок расположенных там предметов. Вас это взбесит через минуту. Но подобные приёмы постоянно используют программисты. Помню и в windows и в ms office меню постоянно перестраивались. Кроме доведения пользователя до бешенства, это ничего более не решало. Человек помнит место, это проще чем каждый раз искать.
22. Пудель 14.02.21 13:53 Сейчас в теме
Хороший слог, забавно и назидательно! )
23. sulfur17 59 15.02.21 12:43 Сейчас в теме
Отличный пример как надо писать технические статьи)) Браво!
24. triviumfan 92 15.02.21 23:36 Сейчас в теме
Было интересно. Не знал.
26. Yashazz 4709 16.02.21 14:27 Сейчас в теме
Ну, собственно, если за описание такой элементарной ерундистики столько плюсов дают... То это красноречиво свидетельствует о нынешнем уровне ИС. Проще говоря, из профессионального сайта он превратился чёрт знает во что, зато с котиками. Из серьёзного ресурса успешно сделали стендап-шоу и даже простенькие вещи разжёвывают с шутками-прибаутками, дабы Вася не перенапрягся.
KRJ; rabid_otter; +2 Ответить
27. SeiOkami 3423 16.02.21 14:30 Сейчас в теме
(26) о, мой старый-добрый хейтер
Вы постоянно жалуетесь на то, что статья недостаточно сложная для вашего уровня ?)
28. Yashazz 4709 16.02.21 14:36 Сейчас в теме
(27) Нет, я просто и тупо завидую количеству плюсиков)))
Я-то свои зарабатывал делом, достаточно тяжёлым трудом, старался, подсистемы писал, блоки тестировал, обработки готовил. А надо-то было, оказывается, просто запилить прикольные картинки, написать забавный текстик и слегка разбавить эту ботву простейшими советами по 1С. Вот и завидую, что не знал секрета)
29. Yashazz 4709 16.02.21 14:40 Сейчас в теме
(27) И, этсамое, это не статья. Это свежий выпуск шоу "Вася Тупицын и 1С", которое пипл с удовольствием хавает.
Причём, судя по рынку труда, это реалити-шоу.
LordKim; KRJ; rabid_otter; +3 Ответить
31. Yashazz 4709 25.02.21 20:43 Сейчас в теме
Кстати, на самом-то деле, если очень домой хотелось, можно было схалявить:
Попытка <Действие с ТекущиеДанные> Исключение КонецПопытки
И всё. Дёшево и сердито, и иногда эффективно.
32. Yashazz 4709 11.03.21 12:02 Сейчас в теме
А, ну и ещё. В этом жалком подобии технической статьи совершенно не упомянуты такие азы, как существующий со времён 8.2 метод динамического списка "ДанныеСтроки", и специфика его работы.
Зато многочисленные васи радуются легкоусвояемой кашке с картиночками, и плюсят, дааа)
33. SeiOkami 3423 11.03.21 12:03 Сейчас в теме +1 $m
(32) вы всё никак не угомонитесь)
Лучше бы пошли и написали статью
34. Yashazz 4709 12.03.21 17:39 Сейчас в теме
(33) Ага, всё никак не угомонюсь. Всё никак не пойму, почему моя, гораздо более серьёзная и подробная, статья https://infostart.ru/1c/articles/1276140/ про "ТекущиеДанные" получила гораздо меньше плюсов, чем ваша, кхм, публикация... Вот невдомёк мне.
35. SeiOkami 3423 12.03.21 17:45 Сейчас в теме
(34) статья интересная, поставил плюс, спасибо 👍
36. user591389_aska_rabota 14.06.21 21:11 Сейчас в теме
(34)
Да просто потому, что каждый в Васе увидел себя, каким когда то был )
И потому, что ситуация, когда ты вроде сделал задачку, а тебе вдогонку - "минуточку, а вот тут еще не работает", и так 10 раз подряд
тоже всем до боли знакома
Эмоции,Yashazz - эта статья вызывает живейший эмоциональный отклик..
Оставьте свое сообщение