При выгрузке электронных счетов-фактур (ЭСФ) в Казахстане база данных проверяет наличие заполненных адресов у контрагентов. Если в информационной базе 1С:Бухгалтерия для Казахстана (ред. 2.0) заведено множество контрагентов без фактических и юридических адресов, стандартная обработка «Групповая обработка справочников и документов» не поможет, так как контактная информация хранится не в реквизитах самого справочника КонтактныеЛица или Контрагенты, а в отдельном регистре сведений.
Рассмотрим, как устроена хранение адресов в конфигурациях 1С и какими способами можно массово установить адрес контрагентам.
Проанализируем структуру хранения данных. В конфигурациях 1С контактная информация (адреса, телефоны, email) записывается в подчиненный регистр сведений КонтактнаяИнформация. Справочник Контрагенты содержит лишь общую информацию об организации или физлице. Поэтому стандартная групповая обработка справочников не видит поля адреса — они хранятся в другой таблице БД.
Прежде чем выполнять массовое заполнение адресов значением-заглушкой (например, «Республика Казахстан»), учтем важные требования форматно-логического контроля информационной системы ЭСФ:
Рассмотрим пример кода 1С, который позволяет записать контактную информацию напрямую в регистр сведений КонтактнаяИнформация. Данный метод создает или обновляет запись юридического адреса контрагента.
Разберем по шагам логику работы с регистром сведений:
КонтактнаяИнформация.ЮрАдресКонтрагента).Посмотрим на пример кода обработки:
ВыборкаКонтрагентов = Справочники.Контрагенты.Выбрать();
Пока ВыборкаКонтрагентов.Следующий() Цикл
// Исключаем группы контрагентов
Если ВыборкаКонтрагентов.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
СсылкаКонтрагента = ВыборкаКонтрагентов.Ссылка;
НЗ = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
НЗ.Отбор.Объект.Установить(СсылкаКонтрагента);
НЗ.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Адрес);
НЗ.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
НЗ.Прочитать();
ФлагУжеЕстьТакойАдрес = Ложь;
Для Каждого Запись Из НЗ Цикл
Если Не ПустаяСтрока(Запись.Представление) Тогда
ФлагУжеЕстьТакойАдрес = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не ФлагУжеЕстьТакойАдрес Тогда
НЗ.Очистить();
Запись = НЗ.Добавить();
Запись.Объект = СсылкаКонтрагента;
Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
Запись.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
Запись.Представление = "Республика Казахстан";
Попытка
НЗ.Записать(Истина);
Сообщить("Записан юр. адрес контрагенту: " + Строка(СсылкаКонтрагента));
Исключение
Сообщить("Ошибка записи контрагента: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
В типовых конфигурациях 1С (включая Бухгалтерию для Казахстана) предусмотрен общий модуль УправлениеКонтактнойИнформацией. Использование процедур этого модуля предпочтительно, так как он автоматически учитывает специфику структуры адреса и связанную служебную информацию.
Выясним, как применить функции этого модуля в вашей обработке:
// Пример вызова типовой процедуры записи контактной информации
ВидАдреса = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
ЗначениеАдреса = "Республика Казахстан";
УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(
СсылкаКонтрагента,
ЗначениеАдреса,
ВидАдреса,
Перечисления.ТипыКонтактнойИнформации.Адрес
);
Если нет возможности написать программный код, можно воспользоваться стандартными обработками из комплекта поставки 1С:
КонтактнаяИнформация.Объект (для нужных контрагентов или всей папки) и полю Вид = ЮрАдресКонтрагента.Представление.Использование предложенных вариантов позволит быстро подготовить справочник контрагентов для успешного формирования и выгрузки электронных счетов-фактур.