Заполнение выделенных строк таблицы

02.12.20

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

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

Скачать файлы

Наименование Файл Версия Размер
Заполнение выделенных строк таблицы:
.cf 21,01Kb
9
.cf 21,01Kb 9 Скачать

Вы хотите дать возможность пользователю заполнять произвольные строки произвольной колонки произвольным значением?

 

Для этого вам надо сделать следующее.

1. Добавляем кнопку которая будет вызывать заполнение. Удобно сделать ее в контекстном меню.

 

2. Добавляем в модуль формы обработку кнопки и служебную функцию

&НаКлиенте
Процедура ЗаполнитьВВыделенныхСтроках(Команда)
	
	ОписаниеТекущейКолонки = ОписаниеТекущейКолонки();
	
	Если Не РаботаСФормамиКлиент.КолонкаТолькоПросмотр(ОписаниеТекущейКолонки) Тогда
		
		РаботаСФормамиКлиент.ЗаполнитьЗначенияВВыделенныхСтроках(ОписаниеТекущейКолонки, ЭтаФорма);
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ОписаниеТекущейКолонки()
	
	Таблица = ТекущийЭлемент;
	
	Возврат РаботаСФормамиСервер.ОписаниеКолонкиТаблицыФормы(Таблица.ТекущийЭлемент, РеквизитФормыВЗначение("Объект"));
	
КонецФункции

Вот и все, готово!

 

Но чтобы это работало в вашу конфигурацию надо добавить:

общий модуль РаботаСФормамиСервер

 

общий модуль РаботаСФормамиКлиент

 

и общую форма ВыборПроизвольногоЗначения

 

кроме того, должна быть функция ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения), которая есть в БСП.

 

 

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

Из демонстрационной конфигурации можно скопировать все нужные объекты метаданных.

Конфигурация разработана в 8.3.13.1644.

удобняшка выделенные строки таблица управляемые формы текущая колонка универсальный интерфейс

См. также

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

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

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

11.03.2024    4431    dsdred    53    

70

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

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

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

24.01.2024    5271    YA_418728146    25    

62

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

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

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

11.12.2023    6389    dsdred    36    

111

1С-ная магия

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

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

06.10.2023    18463    SeiOkami    46    

118

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

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

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

14.09.2023    12073    human_new    27    

74

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

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

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

28.08.2023    8799    YA_418728146    6    

141

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

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

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

20.08.2023    6271    sebekerga    54    

94

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

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

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

27.06.2023    15959    SeiOkami    31    

103
Отзывы
11. user830227 31.01.20 09:40 Сейчас в теме
Автор молодец, что нашел время описать и опубликовать свою разработку. Я так и не решился на это.

Тем не менее, есть куда расти:
1) Заполнять можно не только реквизиты табличной части, но и реквизиты формы, являющихся колонкой табличной части или таблицы формы;
2) Если пользователь попытается заполнить колонку, которая является реквизитом другого поля, что произойдет? У такой колонки будет ТолькоПросмотр = Ложь;
3) У колонки может быть ТолькоПросмотр = Ложь, но при этом она недоступна для изменения, т.к. Доступность = Ложь или это поле надписи, поле картинки и т.п.;
4) Условное оформление может сделать колонку недоступной, а этой командой мы ее заполним;
5) Для колонки ссылочного типа заданы параметры выбора и/или связи параметров выбора;
6) Некоторые ссылочные типы могут давать выбирать не значения, а только группы. Или и то, и другое.
7) Для поля может быть задана своя форма выбора;
8) У поля формы может быть задан список выбора;
9) Если у пользователя в текущей ячейке уже указано какое-то значение, то желательно его подставлять в форму выбора как значение по умолчанию;
10) После заполнения форма должна стать модифицированной.

Все это надо учитывать, чтобы сделать корректное заполнение.
Конечно, все предусмотреть невозможно, у поля могут быть описаны программные обработчики, которые меняют алгоритм заполнения. Но такие случаи надо рассматривать и учитывать для каждой формы индивидуально. А для 90% форм автоматическое заполнение подойдет.
ixijixi; sulfur17; +2 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 3033 29.01.20 11:46 Сейчас в теме
До 12-й платформы можно было редактировать активную строку при выделенных прочих строках - это очень сильно упрощало заполнение. Но в 13-м релизе в такси (в управляемых формах продолжает работать) 1С-неги решили, что это поведение ошибочно и убрали возможность редактировать строку, если выделена еще какая-нить строка. А в последних релизах они текущую строку динамического списка и текущие данные его же функционально поменяли - теперь ключевые поля в текущей строке, и это не смотря на режим совместимости. В общем 1С-неги - лютые бракоделы и приходится вот так вот извращаться, чтобы установить одно значение в несколько строк. Понабрали даунов в продуктовнеры, видимо.

ЗЫ: а выбор значения можно через "вводзначения" сделать - и форму городить не нужно...
JohnyDeath; acanta; Nowa; sulfur17; +4 Ответить
2. sulfur17 59 29.01.20 15:06 Сейчас в теме
(1) про ВвестиЗначение очень полезное замечание, спасибо. Я его не нашел чет.
Но замечу что с ним есть одна неприятная особенность: в случае выбора из составного типа, невозможно понять, пользователь нажал Отмена или сознательно выбрал Неопределено.
3. Yashazz 4709 29.01.20 23:29 Сейчас в теме
(2)
про ВвестиЗначение очень полезное замечание, спасибо. Я его не нашел чет.

И вот решение автора, выдающего такие фразочки, плюсят. Мдя.
Это мне напоминает, как один весьма пиаренный деятель проверял, заполнено ли значение справочника. Там было нечто вроде "Если СокрЛП(Строка(спр.Наименование))="" Тогда", что не мешало хвалить его поделочку по самое некуда.
4. sulfur17 59 30.01.20 00:04 Сейчас в теме
(3) автор не нашел в интернете способа заполнения по выделенным строкам и ему пришлось запилить свое.
Своим решением автор совершенно бесплатно поделился с сообществом, потратив немало времени еще и на оформление статьи.
Сообщество за этот труд благодарно - за это и плюсят.
svbel85; starik-2005; +2 Ответить
5. AlexSinichenko 30.01.20 03:48 Сейчас в теме
Вот и все, готово!
Так так так...

Но чтобы это работало в вашу конфигурацию надо добавить
Ага... Вот тут то все и понятненько... В прочем как всегда.
6. Quantum81 6 30.01.20 11:04 Сейчас в теме
Добавили бы уже в платформу. Постоянно колхозить надо заполняшки.
7. PLAstic 295 30.01.20 14:03 Сейчас в теме
Зачем общая форма, когда есть ПоказатьВводЗначения?
8. Йожкин Кот 1006 30.01.20 16:10 Сейчас в теме
А можно это оформить в виде подключаемой обработки, чтобы в конфигурацию никакой код не вносить?
9. sulfur17 59 31.01.20 02:49 Сейчас в теме
(8) идея отличная. Смотрите, сделать можно, но:
1. доп.обработку нельзя подключить к обработкам, например, а только к отчетам и справочникам.
2. При выполнении внешней обработки подсистема подключаемых команд проверяет, модифицировалась ли форма. И если модифицировалась, то требует записать изменения прежде чем выполнять обработку. Это аццки неудобно. По крайней мере так на версии БСП "2.4.4.106", на которой я проверял.
3. Для внешней обработки вроде как нельзя назначить горячую клавишу или поместить в контекстное меню, так что тянуться мышкой тоже будет неудобно.

Проблему 2 можно в принципе решить расширением, например доделав процедуру ДополнительныеОтчетыИОбработки.ПриОпределенииКомандЗаполненияПодключенныхКОбъекту, чтобы она для нужной нам команды включала режим записи "НеЗаписывать".

Прикладываю получившуюся у меня доп.обработку, если захотите поэкспериментировать.
Прикрепленные файлы:
ЗаполнитьВВыделенныхСтроках.epf
Йожкин Кот; +1 Ответить
10. PerlAmutor 129 31.01.20 06:44 Сейчас в теме
Вещь нужная и полезная, но применять надо с умом. В типовых конфигурациях часто используется обработка событий на изменение, окончание ввода, авто-подбор.
При этом достигается согласованность заполнения дополнительных полей, ограничения выбора значений и т.п.
При использовании "универсального заполнителя" для всех объектов конфигурации можно столкнуться с массой проблем в будущем.

В качестве примера, в ERP есть этапы производства, где в ТЧ можно выбрать статью расходов и при этом должен установится дополнительный флажок "Списывать на расходы". Разработчики попытались сделать защиту - при установленном флажке -снимать "Только просмотр" для поля статьи расходов. При снятии флажка - устанавливали свойство "Только просмотр".
Некоторые пользователи умудрялись что делать - ставили флажок, открывалось поле для редактирования, выбирали статью, но не подтверждали её выбор (ячейка активна и открыта). Мышкой снимали флажок "Списывать на расходы", лишь затем подтверждали изменение статьи. Как следствие флажка нет, статья расходов стоит. При закрытии месяца все дружно ищем причину того почему не сформировались необходимые движения и проводки.
sulfur17; +1 Ответить
14. starik-2005 3033 03.02.20 10:02 Сейчас в теме
(10)
При закрытии месяца все дружно ищем причину того почему не сформировались необходимые движения и проводки.
Так это не проблема пользователя, а проблема разработчиков типового велосипеда. Стоит статья - пусть списывается, не стоит - пусть не списывается. Нафига флажки городить там, где они нахрен не нужны.
11. user830227 31.01.20 09:40 Сейчас в теме
Автор молодец, что нашел время описать и опубликовать свою разработку. Я так и не решился на это.

Тем не менее, есть куда расти:
1) Заполнять можно не только реквизиты табличной части, но и реквизиты формы, являющихся колонкой табличной части или таблицы формы;
2) Если пользователь попытается заполнить колонку, которая является реквизитом другого поля, что произойдет? У такой колонки будет ТолькоПросмотр = Ложь;
3) У колонки может быть ТолькоПросмотр = Ложь, но при этом она недоступна для изменения, т.к. Доступность = Ложь или это поле надписи, поле картинки и т.п.;
4) Условное оформление может сделать колонку недоступной, а этой командой мы ее заполним;
5) Для колонки ссылочного типа заданы параметры выбора и/или связи параметров выбора;
6) Некоторые ссылочные типы могут давать выбирать не значения, а только группы. Или и то, и другое.
7) Для поля может быть задана своя форма выбора;
8) У поля формы может быть задан список выбора;
9) Если у пользователя в текущей ячейке уже указано какое-то значение, то желательно его подставлять в форму выбора как значение по умолчанию;
10) После заполнения форма должна стать модифицированной.

Все это надо учитывать, чтобы сделать корректное заполнение.
Конечно, все предусмотреть невозможно, у поля могут быть описаны программные обработчики, которые меняют алгоритм заполнения. Но такие случаи надо рассматривать и учитывать для каждой формы индивидуально. А для 90% форм автоматическое заполнение подойдет.
ixijixi; sulfur17; +2 Ответить
12. rpgshnik 3631 31.01.20 10:33 Сейчас в теме
Красота, при заполнение планов по всей видимости вообще будет огонь :)
13. lmnlmn 69 31.01.20 10:47 Сейчас в теме
Да, на УФ для простых, очевидных и нужных действий нужна нормальная такая куча кода. Надо наваять "бибилиотеку нестандартных подсистем" какую-нибудь для работы с таблицами и деревьями на УФ.
user1315860; klaus38; +2 Ответить
15. alx7304 02.12.20 13:47 Сейчас в теме
&НаКлиенте
Процедура ЗаполнитьКонтрагента(Команда)
		
	ОткрытьФорму("Справочник.Контрагенты.ФормаВыбора",,ЭтаФорма,,,,Новый ОписаниеОповещения("ЗаполнитьКонтрагентаЗавершение", ЭтаФорма),);
	
КонецПроцедуры

&НаКлиенте
Функция ЗаполнитьКонтрагентаЗавершение(Результат, ДополнительныеПараметры)Экспорт 

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