При работе в конфигурации «Бухгалтерия государственного учреждения» редакции 1.0 (БГУ 1.0) бухгалтеры часто сталкиваются с тем, что при формировании статистической отчетности (например, формы П-1, П-4) поля «Телефон» и «E-mail» остаются пустыми. Несмотря на то что в карточке учреждения или настройках учетной политики все данные внесены корректно, автоматического подтягивания реквизитов не происходит. Это вынуждает пользователей вводить данные вручную, которые к тому же пропадают при обновлении отчета. Разберем подробно причины этой проблемы и способы ее решения.
Прежде чем переходить к правке кода, проанализируем, откуда программа должна брать эти данные. В формах статистики реквизиты организации и исполнителя собираются алгоритмами общего модуля РегламентированнаяОтчетность. Рассмотрим по шагам, что нужно проверить в первую очередь:
Физические лица, найдем нужного сотрудника и проверим раздел его контактной информации. Телефон должен быть указан как «Рабочий», а адрес электронной почты должен соответствовать виду контактной информации, который ожидает система.Если в пользовательском интерфейсе все заполнено, но поля остаются пустыми, проблема кроется в алгоритме заполнения. Проанализируем ситуацию на уровне кода. В конфигурации БГУ 1.0 за сбор данных отвечает функция ПолучитьСведенияОбОрганизации в общем модуле РегламентированнаяОтчетность.
Разберем конкретный фрагмент кода, который вызывает сбой при получении электронной почты. Программа пытается определить идентификатор вида контактной информации для e-mail следующим образом:
АдресЭлектроннойПочтыФизЛица = ?(СвойствоОпределено(Справочники.ВидыКонтактнойИнформации, "EmailФизЛица"),
Справочники.ВидыКонтактнойИнформации.EmailФизЛица,
Справочники.ВидыКонтактнойИнформации.СлужебныйАдресЭлектроннойПочтыПользователя);
Проанализируем эту строку. Система ищет предопределенный элемент EmailФизЛица в справочнике ВидыКонтактнойИнформации. В ряде релизов (включая ветку 1.0.54) этот элемент может отсутствовать или иметь другое внутреннее имя. В результате переменная АдресЭлПочтыИсп возвращает пустое значение, даже если у физлица в регистре сведений КонтактнаяИнформация данные есть.
Если база работает на платформе 8.3, самым правильным решением будет создание расширения конфигурации. Это позволит не снимать основную конфигурацию с поддержки и сохранить изменения при обновлениях. Рассмотрим, как реализовать перехват функции:
В расширении необходимо создать процедуру, которая будет дополнять структуру данных. Примерный алгоритм действий:
РегламентированнаяОтчетность.ПолучитьСведенияОбОрганизации (используя аннотацию &После или &Вместо).Пример кода в расширении для корректировки поиска email:
&Вместо("ПолучитьСведенияОбОрганизации")
Функция ИмяПрефикс_ПолучитьСведенияОбОрганизации(Организация, СписокСведений, ДатаСведений = '00010101')
Результат = ПродолжитьВызов(Организация, СписокСведений, ДатаСведений);
// Если в списке сведений есть запрос на почту, а она пустая
Если Результат.Свойство("АдресЭлПочты") И ПустаяСтрока(Результат.АдресЭлПочты) Тогда
// Прописываем логику получения из регистра напрямую по нашему виду КИ
ВидКИ = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("E-mail");
Если НЕ ВидКИ.Пустая() Тогда
Результат.АдресЭлПочты = УправлениеКонтактнойИнформацией.ПолучитьКонтактнуюИнформациюОбъекта(Организация, ВидКИ);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Рассмотрим вариант решения без изменения кода. Посмотрим на справочник ВидыКонтактнойИнформации. Иногда помогает ручное создание элемента с нужным наименованием в группе «Контактная информация физических лиц». Однако стоит учитывать, что если код обращается к предопределенному элементу через точку (например, Справочники.ВидыКонтактнойИнформации.EmailФизЛица), то простое создание элемента по наименованию не поможет, так как у него не будет соответствующего программного идентификатора (имени в конфигураторе).
В этом случае проанализируем, какой именно вид КИ используется для хранения почты у ваших исполнителей. Обычно это «E-mail» или «Электронная почта». Если в коде зашит поиск по EmailФизЛица, а у вас в справочнике этот элемент называется иначе, данные не подтянутся.
Фирма «1С» регулярно выпускает обновления статистических отчетов в виде внешних файлов .erf. Часто ошибки в механизмах заполнения реквизитов исправляются именно там, не дожидаясь выхода нового релиза БГУ. Выясним, как обновить отчеты:
Регламентированные отчеты.Важный момент: После загрузки внешней формы обязательно нажмите кнопку «Обновить» в самом отчете. Это инициирует повторный сбор данных по новым алгоритмам.
Проанализируем еще одну возможную причину — разрыв в периодах актуальности. Контактная информация в 1С хранится с привязкой к объекту, но иногда механизмы статистики требуют, чтобы запись в регистре Контактная информация была создана не позже даты начала отчетного периода. Если вы заполнили e-mail сегодня, а отчет делаете за прошлый квартал, в некоторых релизах алгоритм может не «увидеть» эту запись. Проверьте, чтобы в карточке учреждения или физлица данные были внесены «задним числом» относительно периода отчета, если это предусмотрено логикой вашей версии конфигурации.
Мы проанализировали проблему отсутствия телефона и e-mail в статистических отчетах БГУ 1.0 и выяснили, что основной причиной является программная ошибка в именовании видов контактной информации внутри общих модулей. Рекомендуемым способом решения является использование расширения конфигурации или использование внешних форм отчетности. Временным решением для бухгалтера может быть однократное заполнение данных в форме и сохранение варианта отчета, однако для автоматизации процесса требуется вмешательство специалиста 1С для корректировки модуля РегламентированнаяОтчетность.