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

08.07.24

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

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

Скачать файл

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

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

Лично мне, стандартное действие сочетания 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С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

60000 руб.

06.10.2023    4688    38    20    

45

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

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

14400 руб.

29.04.2020    34095    108    152    

75

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

Представьте, что есть система QR - кодирования, которая НЕ ТРЕБУЕТ изменения конфигурации, НЕ ТРЕБУЕТ изменения ни одной печатной формы для добавления QR-кода, включая внешние, НЕ ХРАНИТ данные штрихкодов и их связь, от чего база не "пухнет", ИМЕЕТ возможность закодировать в QR-коде произвольные данные параметров для последующей обработки полученных данных, УМЕЕТ прикреплять сканы, УМЕЕТ обработать считанный QR-код как ВЫ захотите. А также ХРАНИТ историю операций в обход базы для каждого пользователя в отдельности и УМЕЕТ работать с 2D - сканерами. А также автоматически распознавать отсканированные печатные формы (картинки или pdf-файлы) и выполнять заданные произвольные алгоритмы, в том числе прикрепление их к документам! Обновление 3.2 от 09.06.2024!

19200 руб.

26.08.2018    52713    16    61    

55

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

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

3600 руб.

10.02.2017    111632    670    175    

708

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

Вы наконец разобрались с закрытием месяцев и пора начать контролировать сроки оплаты поставщикам и задолженности клиентов, но в базе расчеты не идут из-за развернутого сальдо? Не беда, есть решение!

12000 руб.

02.11.2020    7613    6    0    

8

Закрытие периода Корректировка данных Программист Пользователь Платформа 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    51456    175    29    

127

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

Обработка предназначена для ООО для смены системы налогообложения УСН на ОСНО, без ведения раздельного учета, входящего НДС по способам учета. При реализации перехода в операции формируются проводки по выделению НДС, который ранее учитывался в стоимости номенклатуры, регистр «НДС Предъявленный».

6000 руб.

22.01.2025    414    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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), Сначала не понял, а потом как понял. Спасибо, исправил
Оставьте свое сообщение