Дублирование значений в полях табличных частей (CTRL+D)

08.07.24

Задачи пользователя - Корректировка данных

В Excel есть замечательная комбинация Ctrl+D, позволяющая скопировать значение из поля предшествующего в текущему. В 1С мне такой штуки иногда не хватает, особенно в последней разработке, где необходимо выбрать одно и то же значение в 50 строках.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Дублирование значений в полях табличных частей (CTRL+D) (БП 3.0):
.cfe 247,94Kb ver:2.6 (BP)
1 1 850 руб. Купить
Дублирование значений в полях табличных частей (CTRL+D) (УТ 11.5):
.cfe 102,93Kb ver:2.6 (UT)
0 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Лично мне, стандартное действие сочетания Ctrl+D (добавить в избранное) не нужно, но всегда можно указать другое сочетание. Расширенийup 26/10/2022 , обработок делать не буду, просто выложу свое решение задачи, может кому пригодится, а может кто предложит более изящный вариант.

Для использования необходимо поместить код в модуль формы и вызвать СоздатьКомандуДублироватьЗначение() из процедуры ПриСозданииНаСервере() формы.

 
 Код модуля формы (устарело)

Собственно, комментариях рассказывают все подводные камни, с которыми я столкнулся.

В теории можно подключить интерактивную запись и тем самым вызывать событие ПриИзменении(), но:

  1. Мне оно не нужно
  2. Нужно немного переделать код

 

UP 24/10/2022

Благодаря SlavaKron я исправил ошибку и переделал с минимальным вызовом сервера, а в связи с этим реализовать вариант с Интерактивной записью оказалось не так сложно

 
Вариант обработки с модулем интерактивной записи

Может кто предложит как получить ПутьКДанным без вызова сервера, т.к. иначе реализовать вариант расширения с общим модулем не получается

 

UP 26/10/2022

Нашел таки вариант реализации в расширении (с вызовом события ПриИзменении()), но не назову его прям очень изящным и универсальным по нескольким причинам:

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

 

UP 27/10/2022

Пока записывал видео для расширения обнаружил пару косяков:

  1. Выходит ошибка при попытке продублировать поля в которых выводятся реквизиты других объектов (собственно ничего удивительного, добавил проверку)
  2. При некоторых условиях в выделенном диапазоне не заменялось значение поля первой строки (исправлено)
  3. Некорректно копируется значение полей являющихся представлением группы других (например: счета учета), что не удивительного, не исправлял, т.к. этот тот еще геморрой и лишает нас некой универсальности

UP 08/07/2024

При очередном обновлении появилась ошибка "Метод объекта не обнаружен". Исправлено. По идее и на предыдущих версиях должна работать.

В расширение нужно добавить все формы документов/справочников к которым хотим прикрутить фичу. Для подключения необходимо в модуль формы добавить код и указать в свойствах формы ДЗ_ПриСозданииНаСервереПосле() как процедуру при событии ПриСозданииНаСервере

 
 В модуле каждой формы нужно добавить код

 

&НаСервере
Процедура ДЗ_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
		ДЗ_ОсновнойМодульСервер.СоздатьКомандуДублироватьЗначение(ЭтаФорма);
КонецПроцедуры

&НаКлиенте
Процедура ДублироватьЗначение()
	ДЗ_ОсновнойМодульКлиент.ДублироватьЗначение(ЭтаФорма);
КонецПроцедуры

&НаКлиенте
Функция ПолучитьЗначениеИсточника() Экспорт
	Возврат(ПолучитьЗначениеИсточникаСервер());
КонецФункции

&НаСервере
Функция ПолучитьЗначениеИсточникаСервер() 
	Возврат(ДЗ_ОсновнойМодульСервер.ПолучитьЗначениеСтрокойВыше(Объект,ЭтаФорма));
КонецФункции

 

О расширении (прикреплено):

  • Механизмы БСП не задействованы.
  • Код открыт для редактирования.
  • В расширении подключены только формы документа "Реализация товаров и услуг" конфигурации Бухгалтерия Предприятия 3.0.122.97
  • В расширении подключены формы
    • Бухгалтерия 3.0.153.18 
      • Реализация товаров и услуг
      • Поступление товаров и услуг
      • Счет на оплату покупателю
    • Управление торговлей 11.5.12.270
      • Реализация товаров и услуг
      • Приобретение товаров и услуг
  • Не копирует значения из полей "представления" (реквизит другого объекта (например: единица измерения)).
  • Поля а-ля "Счета учета" изменит значение ("представление"), но не применит.

 

Протестировано на:

26 октября 2022 года - 8.3.18.1741, БП 3.0.122.97
02 марта 2023 года - 8.3.22.1750, БП 3.0.131.34
08 июля 2024 года - 8.3.24.1548, БП 3.0.153.18 (Файловая, Серверная)
08 июля 2024 года - 8.3.24.1548, УТ 11.5.12.270 (Серверная, Веб-клиент)

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.153.18
  • Управление торговлей, редакция 11, релизы 11.5.12.270

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Корректировка данных Системный администратор Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

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

3600 руб.

10.02.2017    115159    692    176    

733

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    38357    114    152    

82

Закрытие периода Корректировка данных Системный администратор Бухгалтер Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Налоговый учет НДС Платные (руб)

Обработка для диагностики и устранения ошибочных состояний ключей аналитики при использовании новой методики раздельного учета НДС в "Бухгалтерии предприятия ред. 3.0"

6000 руб.

27.01.2015    58513    31    14    

40

Розничная торговля Кассовые операции Корректировка данных Бухгалтер 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Бухгалтерский учет Управленческий учет Платные (руб)

Создание, редактирование и удаление документов "Выемка ДС из Кассы ККМ" в конфигурации 1С:Розница 2. Групповая обработка Выемок. Редактирование регистра накопления "Денежные средства в кассе ККМ".

2000 руб.

20.09.2017    41927    174    24    

27

Закрытие периода Корректировка данных Программист Пользователь 1С v8.3 Система компоновки данных 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.

2400 руб.

13.07.2015    52510    180    29    

132

Печатные формы Корректировка данных Учет документов 1С v8.3 1C:Бухгалтерия 1С:Управление нашей фирмой 3.0

Данная обработка позволяет работать со справками об оплате медицинских услуг в любой конфигурации 1С 8.3 Решение выполнено в виде внешней обработки, поэтому будет работать так же на базовых версиях конфигураций 1С, где нет возможности добавить расширение.

3600 руб.

28.01.2025    945    0    0    

2

Корректировка данных Бухгалтер 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Налоговый учет Налог на прибыль Платные (руб)

Обработка служит для: выравнивания бухгалтерского и налогового учета на определенную дату по выбранным счетам; закрытия остатков по выбранным счетам; обнуления налогового учета (ПР, ВР также будут обнулены)

2880 руб.

05.05.2024    1387    15    0    

11
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SlavaKron 18.10.22 10:32 Сейчас в теме
Также, можно закешировать пути к данным на клиенте, чтобы избавиться от серверных вызовов. Непонятно, зачем вы работаете с индексами, если можно работать только идентификаторами строки без всякого обращения на сервер.
2. arshanskiyav 32 18.10.22 10:45 Сейчас в теме
Предположим что пользователь удалил строку или изменил их порядок, как я смогу получить строку предшествующую выделенной без индекса? Идентификатор не является порядковым номером
3. SlavaKron 18.10.22 11:09 Сейчас в теме
(2) А зачем надо получать предшествующую строку? Логичное поведение – скопировать значение текущей строки в остальные.
4. arshanskiyav 32 18.10.22 11:37 Сейчас в теме
(3) Не, задача чуть другая, копировать из предшествующей в выделенные, не важно сколько их одна или пятьдесят. Поведение как в excel
5. SlavaKron 18.10.22 11:40 Сейчас в теме
(4) В любом случае, метод Индекс() доступен на клиенте.
6. arshanskiyav 32 26.10.22 09:58 Сейчас в теме
(5), Сначала не понял, а потом как понял. Спасибо, исправил
Оставьте свое сообщение