Универсальное заполнение отбора "В списке" списком значений
Задачи пользователя - Мастера заполнения
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Ситуация, наверное, знакомая многим. Приходит список номеров документов, штук пятьдесят, а то и сто, и их нужно найти в 1С. В списке документов есть отбор по номеру с видом сравнения «В списке», вроде бы ровно то, что нужно. Но заполнить этот список можно только руками: добавил строку, вставил номер, Enter, потом следующий. Загрузить значения из буфера обмена или из файла 1С не даёт.
На десятом номере это надоедает, к пятидесятому начинаешь путаться, какой уже вставил, а какой нет. А если база открыта через удалённый рабочий стол, всё ещё и подтормаживает.
Обработку под это в базе не сделаешь: базы и конфигурации у всех разные, а у меня 1С часто вообще открыта через RDP. Поэтому я написал маленькую программу для Windows, которая делает то же, что делал бы человек: берёт очередной номер, кладёт его в буфер обмена и нажимает нужные клавиши в окне 1С. Назвал её «Макрос по списку».

Как пользоваться
Запускаете МакросПоСписку.exe и вставляете номера в левое поле, по одному в строке. Пустые строки и пробелы по краям программа отбросит сама, а сверху покажет, сколько получилось значений. Саму программу можно свернуть.
Дальше переходите в 1С, открываете список значений в отборе «В списке», ставите курсор в таблицу и нажимаете Ctrl+Shift+F9. Больше ничего трогать не надо: для каждого номера программа нажмёт Insert, Ctrl+V и Enter.
Что где находится в окне:

Так это выглядит в работе, когда список значений открывается отдельным окном. 37 номеров вставились за 13 секунд, и это не предел: можно ещё подобрать паузы в настройках.

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

Остановить его можно в любой момент сочетанием Ctrl+Shift+F10. Если во время работы переключиться в другую программу, макрос остановится сам, чтобы не нажимать клавиши где попало. Уже вставленные номера программа выделит в списке: удаляете их кнопкой Delete и запускаете снова с того места, где остановились.

Если список значений редактируется прямо в строке
В новых версиях платформы список значений в отборе редактируется прямо в поле: вводишь значение, жмёшь Enter, оно превращается в плашку, и можно вводить следующее. Добавлять строку там не нужно, так что Insert из макроса надо убрать. Проще всего закомментировать его знаком #, тогда останутся только вставка и Enter:
# Клавиша Insert Клавиша Ctrl+V Клавиша Enter
Дальше всё так же: ставите курсор в поле значения и нажимаете Ctrl+Shift+F9.

Последний макрос программа запоминает. Если приходится работать с обоими вариантами, сохраните каждый в файл кнопкой «Сохранить» и открывайте нужный.
Если вставляется не то
Бывает, что часть номеров пропала, два номера слиплись в одной строке или один и тот же номер вставился дважды. Обычно это значит, что 1С не успевает за программой, и тогда помогают паузы внизу окна (на скриншоте с подписями это пункт 4). «Пауза между действиями» выдерживается после каждого нажатия, она нужна, если новая строка появляется не сразу. «Пауза между строками» выдерживается между тем, как номер попал в буфер обмена, и вставкой. Если через RDP номера повторяются, скорее всего буфер не успел дойти до удалённого сеанса, и увеличивать надо именно её. По умолчанию стоит 150 и 400 миллисекунд, это с запасом. На анимациях выше паузы от 50 до 100 мс, и всё успевает.
Если же номера уходят совсем не туда, паузы не помогут. Значит, макрос не подходит к этому окну (например, в новой платформе остался лишний Insert) или курсор стоял не в том поле. Проверьте, что макрос нажимает ровно то, что вы нажимали бы руками.
Через RDP в настройках подключения должен быть включён буфер обмена, иначе Ctrl+V в удалённом сеансе вставит не то, что положила программа. И учтите, что в полноэкранном режиме удалённый рабочий стол забирает сочетания клавиш себе, и Ctrl+Shift+F9 до программы просто не дойдёт. Тогда либо работайте с RDP в окне, либо выберите в настройках подключения «Применять комбинации клавиш Windows: на этом компьютере».
Если Ctrl+Shift+F9 или Ctrl+Shift+F10 у вас уже чем-то заняты, сочетания можно поменять внизу окна: щёлкнуть в поле и нажать новое.
Свой макрос
Макрос записывается обычным текстом, по команде в строке, и его можно переделать под любую повторяющуюся работу, не только под отбор. Синтаксис учить не обязательно: кнопка «Команда» открывает меню с клавишами, сочетаниями, паузами и щелчками мышью. Выбираете нужное, и строка добавляется в макрос. Для щелчка мышью программа сворачивается и через три секунды запоминает, где стоит указатель.

Можно и просто записать макрос. Нажимаете «Записать», переходите в нужное окно, нажимаете Ctrl+Shift+F9, один раз делаете всё руками и заканчиваете сочетанием Ctrl+Shift+F10. Записанные действия появятся в макросе, лишнее потом можно удалить.
Если в макросе ошибка, программа сразу напишет под ним, в какой строке. Например, если в сочетании набрать русскую букву вместо английской:

Полный список команд есть в справке программы.
Что нужно для запуска
Только сам exe, устанавливать ничего не нужно. На Windows 10 и 11 всё необходимое уже есть в системе, на Windows 7 и 8.1 нужен .NET Framework 4.5 или новее, но обычно он уже стоит. Проверял на Windows 11, сам пользуюсь через RDP.
Файл не подписан цифровой подписью, поэтому при первом запуске Windows может показать синее окно «Windows защитил ваш компьютер». Нажмите «Подробнее», потом «Выполнить в любом случае». Антивирус тоже может насторожиться: программа нажимает клавиши за человека, а для записи макроса перехватывает клавиатуру и мышь. В сеть она ничего не отправляет.
Если 1С запущена от имени администратора, программу тоже нужно запускать от имени администратора, иначе Windows не пропустит нажатия.
Обновления буду выкладывать здесь, ссылка на эту страницу есть вверху окна программы. Если что-то не заработает или есть идеи, что добавить, пишите в комментариях.
Исходный код открыт: он лежит в архиве, в папке «Исходники».
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.12.335
Вступайте в нашу телеграмм-группу Инфостарт