Работа с платформой 1С 7.7 в современных реалиях часто напоминает археологические раскопки, особенно когда речь заходит о «Комплексной конфигурации» 4.5. В отличие от обычной «Бухгалтерии», структура данных здесь более разветвленная, и простым копированием таблиц зачастую не обойтись. Разберем пошагово, как эффективно вытянуть данные о контрагентах, включая их контактную информацию и банковские реквизиты.
Начнем с самого простого метода, который не требует навыков программирования. В некоторых релизах конфигураций 1С 7.7 предусмотрена возможность вывода списка справочника в таблицу. Проанализируем, как это работает.
Попробуем открыть справочник «Контрагенты». В нижней части формы списка может находиться кнопка Список. Если она есть, нажмите на нее — откроется окно настройки, где можно отметить галочками нужные реквизиты (ИНН, Телефоны и т.д.). После формирования списка его можно сохранить через меню Файл — Сохранить как, выбрав формат Таблица Excel.
Если кнопки «Список» в справочнике нет, не стоит отчаиваться. Рассмотрим альтернативный стандартный путь — отчет «Печать справочников». Обычно он находится в меню Отчеты — Прочие или в Сервис — Дополнительные возможности. Этот отчет универсален: вы выбираете справочник Контрагенты, помечаете необходимые поля и получаете готовую таблицу для экспорта.
Если стандартные отчеты не дают нужной детализации (например, не выводят банковские счета или КПП), нам придется написать небольшую обработку. Выясним, как программно обратиться к данным 1С 7.7.
Создадим новую внешнюю обработку в конфигураторе. В модуле формы напишем код для выборки. Важно понимать, что в «Комплексной конфигурации» многие реквизиты могут быть периодическими или храниться в подчиненных справочниках. Посмотрим на базовый пример кода для получения основных данных:
Контрагенты = СоздатьОбъект("Справочник.Контрагенты");
Контрагенты.ВыбратьЭлементы();
Пока Контрагенты.ПолучитьЭлемент() = 1 Цикл
Если Контрагенты.ЭтоГруппа = 1 Тогда
Продолжить;
КонецЕсли;
Имя = Контрагенты.Наименование;
ИНН = Контрагенты.ИНН; // В 7.7 ИНН часто включает в себя и КПП через слэш
Тел = Контрагенты.Телефоны;
Сообщить("Контрагент: " + Имя + " ИНН: " + ИНН);
КонецЦикла;
Проанализируем этот код. Мы используем объект Справочник.Контрагенты и метод ВыбратьЭлементы() для начала обхода. Метод ПолучитьЭлемент() возвращает 1, пока в выборке есть данные. Обратите внимание на проверку ЭтоГруппа, чтобы исключить папки из итогового списка.
В «Комплексной конфигурации» 7.7 адреса и банковские счета хранятся иначе, чем в простых базах. Разберем подробнее эти нюансы.
Банковские счета: Они хранятся в подчиненном справочнике. Чтобы их достать, внутри основного цикла по контрагентам нужно создать еще один объект справочника. Рассмотрим пример:
Счета = СоздатьОбъект("Справочник.БанковскиеСчета");
Счета.ИспользоватьВладельца(Контрагенты.ТекущийЭлемент());
Счета.ВыбратьЭлементы();
Пока Счета.ПолучитьЭлемент() = 1 Цикл
НомерСчета = Счета.НомерСчета;
БИК = Счета.Банк.Код;
// Здесь можно записывать данные в файл
КонецЦикла;
Периодические реквизиты: Юридический адрес или телефон в КК могут быть периодическими. Это значит, что значение реквизита зависит от даты. Чтобы получить актуальное значение, используем метод Получить(Дата). Например: Адрес = Контрагенты.ЮрАдрес.Получить(РабочаяДата());. Если вы обратитесь к реквизиту напрямую (Контрагенты.ЮрАдрес), программа может вернуть пустую строку или объект типа «Периодический».
Если база данных работает в формате DBF, мы можем извлечь данные, даже не запуская 1С. Это полезно, если база повреждена или утеряны пароли. Проанализируем ситуацию: каждый справочник в 7.7 — это отдельный файл SC*.dbf в папке базы данных.
1Cv7.DD (Data Dictionary) в корне базы любым текстовым редактором.SC123.SC123.dbf в каталоге базы и откройте его в Excel или специализированном DBF-вьюере.SP125. Сопоставить их с реальными именами (ИНН, Наименование) поможет тот же файл 1Cv7.DD.Важно: При прямом чтении DBF вы увидите только идентификаторы (ID) вместо ссылок на другие справочники. Например, вместо названия банка будет его внутренний код в системе. Для полноценной сборки данных этот метод требует сопоставления нескольких таблиц.
Выясним, как использовать штатные средства переноса. В типовых поставках 7.7 часто присутствует обработка V77Exp.ert. Она предназначена для выгрузки данных в формат XML для последующего перехода на 1С 8.х. Даже если вы не планируете переходить на «восьмерку», эта обработка сформирует структурированный файл со всеми реквизитами контрагентов, который гораздо проще преобразовать в таблицу Excel, чем писать код с нуля.
Найдите в папке ExtForms внутри каталога базы файлы с расширением .ert, в названии которых есть «Export» или «Выгрузка». Запустите их через Файл — Открыть и следуйте инструкциям помощника. Обычно достаточно выбрать справочник Контрагенты и указать путь к файлу выгрузки.
Таким образом, мы рассмотрели пять различных стратегий — от простых визуальных способов до прямого доступа к файлам базы данных. Выбор метода зависит от ваших навыков программирования и того, насколько глубоко «спрятаны» данные в вашей версии конфигурации.