При работе в типовых конфигурациях 1С, таких как «Бухгалтерия для Казахстана» или «1С:Бухгалтерия 3.0», часто возникает необходимость пометить документы, загруженные из внешних источников (например, из XML-файлов), особым признаком. Важно сделать это так, чтобы признак был виден прямо в списке документов, но при этом сама конфигурация оставалась «на поддержке» (без внесения правок в основную базу). Рассмотрим, как реализовать эту задачу наиболее эффективными способами. Если загрузка выполняется регулярно, вы можете настроить автоматический регулярный обмен данными между базами 1С по расписанию без изменения типовых конфигураций.
Прежде чем приступать к коду, выясним, как Библиотека стандартных подсистем (БСП) хранит пользовательские данные. Существует два принципиально разных механизма, и выбор между ними влияет на производительность списка:
ДополнительныеРеквизиты. Преимущество в том, что данные «привязаны» к объекту, и их проще выводить в динамические списки через запросы.ДополнительныеСведения. Это удобно для расширения аналитики без изменения структуры таблиц, но для вывода в список потребуется выполнять соединение (JOIN) с таблицей регистра, что может быть медленнее при огромных объемах данных.Для нашей задачи — отображения булевого флажка «Загружено из XML» — лучше всего подходят именно дополнительные реквизиты.
Проанализируем ситуацию: если ваша конфигурация построена на современных версиях БСП, вы можете добавить и вывести реквизит вообще без написания кода. Рассмотрим алгоритм действий:
Булево.Этот способ идеален, если пользователю нужно видеть колонку в конкретном списке, а не в общем журнале документов.
Поскольку загрузка документов происходит через вашу собственную обработку, нам нужно программно устанавливать значение этого реквизита. Вместо того чтобы вручную перебирать табличные части, воспользуемся API библиотеки БСП. Это гарантирует корректность связей с Планом видов характеристик ДополнительныеРеквизитыИСведения.
Проанализируем пример кода для записи свойства:
// Предположим, СсылкаНаДокумент — это ссылка на созданный объект
// Нам нужно найти ссылку на само свойство (элемент ПВХ)
СвойствоСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Загружен из XML (Поступление ТМЗ и услуг)");
Если Не СвойствоСсылка.Пустая() Тогда
// Подготовим структуру со значениями
НаборСвойств = Новый Структура;
НаборСвойств.Вставить("Свойство", СвойствоСсылка);
НаборСвойств.Вставить("Значение", Истина);
// Создаем массив структур для передачи в БСП
ТаблицаСвойств = Новый Массив;
ТаблицаСвойств.Добавить(НаборСвойств);
// Используем штатный метод для записи
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(СсылкаНаДокумент, ТаблицаСвойств);
КонецЕсли;
Метод УправлениеСвойствами.ЗаписатьСвойстваУОбъекта сам определит, куда записывать данные (в табличную часть или регистр) в зависимости от настроек свойства.
Если штатный вывод через «Изменить форму» не подходит (например, нужно настроить видимость для всех пользователей сразу или изменить запрос общего журнала), используем механизм расширений. Это позволит нам модифицировать динамический список программно.
Рассмотрим шаги по созданию расширения:
ВЫБРАТЬ
ДокументТаблица.Ссылка КАК Ссылка,
ДокументТаблица.Дата КАК Дата,
ДокументТаблица.Номер КАК Номер,
ЕСТЬNULL(ДопРеквизиты.Значение, ЛОЖЬ) КАК ЗагруженИзXML
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ДокументТаблица
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.ДополнительныеРеквизиты КАК ДопРеквизиты
ПО ДопРеквизиты.Ссылка = ДокументТаблица.Ссылка
И ДопРеквизиты.Свойство = &СвойствоЗагрузкаИзXML
Важно: Не забудьте установить параметр &СвойствоЗагрузкаИзXML при создании формы (в процедуре ПриСозданииНаСервере).
Для удобства пользователей можно не просто выводить колонку с текстом «Да/Нет», а визуально выделять строки. Это делается через Условное оформление динамического списка. Выясним, как это настроить в расширении формы:
ЗагруженИзXML Равно Истина.Такой подход позволит бухгалтеру мгновенно идентифицировать в журнале документы, пришедшие из внешних систем. При этом для контроля результатов переноса или обмена полезно запустить автоматическое сравнение проводок в базах 1С для быстрого поиска расхождений в бухгалтерском учёте.
Проанализируем ситуацию, когда признак нужно видеть в общем журнале (например, «Журнал документов закупа»). В общем журнале смешаны разные типы документов. В этом случае штатный механизм «Добавить поля» может не увидеть доп. реквизит конкретного документа.
Единственный надежный способ здесь — расширение, где вы модифицируете запрос общего журнала, объединяя данные из разных таблиц или обращаясь к общему регистру сведений ДополнительныеСведения. Использование индексированных полей в регистре сведений обеспечит высокую скорость открытия журнала даже при большом количестве записей.
Таким образом, мы рассмотрели комплексный подход к решению задачи: от простых настроек интерфейса до программного управления метаданными через БСП и расширения. Выбирайте метод исходя из ваших навыков и требований к сопровождению системы.