При работе в 1С:Зарплата и управление персоналом 3.1 пользователи часто сталкиваются с необходимостью заполнения документов большим объемом данных. Одной из наиболее трудоемких задач является подготовка документа "Сверка с документами воинского учета", когда нужно отобрать, например, 2400 физических лиц. Ситуация осложняется тем, что штатная кнопка "Заполнить" в этом документе может отсутствовать или работать не по тем критериям, которые требуются пользователю. Рассмотрим подробнее, как решить задачу массового подбора, если у вас на руках есть только список табельных номеров в Excel.
Разберем типичную ситуацию: пользователь открывает отбор по полю Табельный номер, выбирает вид сравнения "В списке" и пытается вставить скопированные из Excel номера. В результате вместо 2400 отдельных элементов программа записывает все номера в одну длинную строку. Проанализируем причину: это происходит потому, что вставка осуществляется непосредственно в поле ввода одного элемента списка, а не в сам механизм управления списком значений.
Для корректной вставки нам необходимо вызвать специальное диалоговое окно "Редактирование списка значений". Выясним, как это сделать правильно:
Посмотрим на альтернативный метод, который работает во многих современных релизах платформы 1С 8.3. Попробуем использовать комбинацию клавиш Ctrl+Shift+V в окне списка значений. В некоторых конфигурациях это вызывает скрытый диалог разбора текста, который позволяет настроить разделители (табуляция, перенос строки) и корректно импортировать тысячи табельных номеров за один раз.
Также важно помнить про механизм Shift-выделения. Если нам нужно выбрать сотрудников, идущих в справочнике подряд, мы можем нажать кнопку "Подбор", выбрать первого сотрудника, зажать клавишу Shift и кликнуть на последнего. Однако этот метод не подходит для работы с конкретным списком табельных номеров, разбросанных по всей базе.
Проанализируем технический нюанс, который часто становится камнем преткновения. В 1С объект ТабельныйНомер часто является строковым реквизитом с ведущими нулями (например, 00000045). Если в вашем файле Excel номера хранятся как числа (45), то при вставке в 1С поиск "В списке" не даст результатов, так как строки "45" и "00000045" не идентичны.
Рассмотрим, как подготовить данные в Excel перед загрузкой:
=ТЕКСТ(A1; "00000000"), где количество нулей соответствует длине табельного номера в вашей базе 1С.Если задача сверки регулярная, логично рассмотреть вариант приглашения программиста для создания внешней обработки или расширения. Разберем пример логики кода, который может быть использован для программного заполнения табличной части документа по списку табельных номеров:
// Пример фрагмента кода для подбора по списку номеров
СписокНомеров = Новый Массив; // Сюда загружаем номера из текстового поля или файла
// ... заполнение массива ...
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Ссылка КАК Сотрудник
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.Код В(&СписокНомеров)";
Запрос.УстановитьПараметр("СписокНомеров", СписокНомеров);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующая() Цикл
НоваяСтрока = Объект.ФизическиеЛица.Добавить();
НоваяСтрока.ФизическоеЛицо = Выборка.Сотрудник.ФизическоеЛицо;
КонецЦикла;
Обратите внимание, что в документе "Сверка с документами воинского учета" основной табличной частью являются именно ФизическиеЛица, а не Сотрудники. Это важный момент, так как воинский учет ведется в разрезе физлиц, хотя пользователю удобнее оперировать табельными номерами сотрудников.
Выясним, есть ли еще способы получить нужный список без программирования. В последних версиях ЗУП 3.1 во многих списках доступна команда "Вывести список" (через меню "Еще"). Мы можем:
Также не стоит забывать про обработку "Групповое изменение реквизитов". Хотя она предназначена для изменения данных, её механизм отбора объектов по списку значений является одним из самых мощных в системе. Проанализировав ситуацию, можно использовать её для предварительной маркировки нужных сотрудников (например, временно записав в какой-то свободный реквизит или доп. сведения специальный признак), а затем заполнить документ в 1С по этому признаку. Для быстрой подготовки и выгрузки исходных списков персонала в таблицу можно использовать обработку для выгрузки действующих сотрудников в Excel или CSV.
Рассмотрим, почему важно автоматизировать этот процесс. Военнообязанными могут быть не только мужчины, но и женщины определенных специальностей (медики, специалисты в области связи и ИТ). При штате в несколько тысяч человек ручной ввод 2400 позиций займет у кадровика несколько рабочих дней и приведет к неизбежным ошибкам. Использование функции "Загрузить из файла", которая постепенно появляется во всех документах 1С:ЗУП, является приоритетным направлением решения задачи. Если в вашем релизе в документе сверки её еще нет, использование буфера обмена в окне "В списке" остается самым быстрым штатным способом решения проблемы. Для сопутствующего кадрового делопроизводства в этой области можно использовать внешнюю печатную форму направления для постановки на воинский учет.