Перенос данных из устаревших конфигураций, таких как 1С:Предприятие 7.7, в современные редакции на платформе 1С:Предприятие 8.3 (например, в 1С:Бухгалтерия 3.0) — это сложный процесс, который нередко сопровождается техническими сбоями. Одна из классических проблем, с которой сталкиваются пользователи после такого перехода: в журнале банковских выписок или в самих документах поступления и списания невозможно выбрать расчетный счет организации. При этом в справочнике Банковские счета этот счет присутствует, но в документах он просто не отображается.
В данной статье мы подробно проанализируем ситуацию, выясним причину возникновения этой ошибки и разберем по шагам несколько надежных способов ее решения — от простых пользовательских настроек до административных инструментов платформы.
Для того чтобы понять, как решить проблему, рассмотрим подробнее внутреннюю архитектуру хранения данных в 1С. В конфигурации 1С:Бухгалтерия 3.0 (БП 3.0) расчетный счет жестко связан с валютой учета. Поле Валюта (техническое имя реквизита — ВалютаДенежныхСредств) является ключевым аналитическим разрезом.
Когда вы создаете или загружаете такие документы, как Поступление на расчетный счет или Списание с расчетного счета, программа автоматически фильтрует список доступных банковских счетов по двум основным критериям:
Если в процессе переноса данных из старой версии 1С 7.7 реквизит Валюта в карточке расчетного счета не заполнился (остался пустым), то для системы этот счет становится некорректным. При попытке выбрать его в документе система сравнивает валюту документа (например, рубли) с пустой валютой счета, фиксирует несовпадение и скрывает этот счет из списка доступных. В результате бухгалтер видит пустой список выбора, хотя в самом справочнике счет отображается как ни в чем не бывало.
Посмотрим на пример того, почему валюта могла не перенестись из «семерки»:
810 или 643 указывает на рубли, 840 — на доллары США). Если структура номера нарушена, алгоритм автоопределения дает сбой, оставляя поле пустым.Ситуация осложняется тем, что если по этому расчетному счету уже были загружены и проведены какие-либо документы (например, через Банк-Клиент), то программа заблокирует возможность ручного изменения валюты непосредственно в карточке счета, выдавая предупреждение о наличии связанных записей. Ниже описаны эффективные способы обхода этой блокировки.
Прежде чем приступать к сложным административным манипуляциям, попробуем воспользоваться штатным механизмом разблокировки элементов справочника, который предусмотрен разработчиками 1С.
Разберем по шагам этот процесс:
Организации.руб.) и нажмите кнопку Записать и закрыть.Если данный способ сработал, проверьте доступность счета в выписках. Если же кнопка разблокировки неактивна или недоступна в вашей роли, переходите к следующему методу.
Этот способ является наиболее надежным и позволяет принудительно прописать нужное значение в базу данных, минуя стандартные проверки формы. Для его реализации вам понадобятся права администратора системы.
Выполните следующие действия:
Банковские счета.Все элементы в поле отбора, добавьте новое условие отбора: Ссылка Равно [Ваш проблемный расчетный счет]. Убедитесь, что в поле фильтра отображается «1 элемент».Валюта денежных средств). Поставьте напротив нее галочку активности, а в колонке «Новое значение» укажите необходимую валюту (например, руб.).Программа выполнит прямое обновление данных в СУБД. После успешного завершения операции зайдите в карточку счета и убедитесь, что валюта заполнилась корректно.
Если вы опасаетесь напрямую редактировать реквизиты старого элемента из-за возможного нарушения ссылочной целостности базы, можно воспользоваться методом "мягкого" замещения.
Проанализируем этот сценарий детально:
Банковские счета. Нажмите кнопку Найти дубли.Дубликат.Оригинал (в некоторых интерфейсах это называется «Пометить как правильный»).Система выполнит транзакционный обход всей базы данных. Во всех документах, операциях и регистрах сведений, которые были перенесены из версии 7.7 или загружены из Банк-Клиента, старый битый расчетный счет будет автоматически заменен на новый правильный элемент справочника. После завершения процесса старый "пустой" счет можно пометить на удаление и окончательно стереть из базы.
Если вам привычнее решать подобные задачи с помощью встроенного языка программирования 1С, либо у вас заблокирован доступ к стандартным обработкам, мы можем написать и запустить простую внешнюю обработку. Посмотрим на пример программного кода, который принудительно обходит стандартную проверку заполнения и прописывает валюту в карточку счета:
// Создадим запрос для поиска расчетного счета с пустой валютой
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| БанковскиеСчета.Ссылка КАК Ссылка
|ИЗ
| Справочник.БанковскиеСчета КАК БанковскиеСчета
|ГДЕ
| БанковскиеСчета.ВалютаДенежныхСредств = ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Получаем объект для редактирования
ОбъектСчета = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
// Включаем режим загрузки, чтобы обойти проверку заполнения в форме и модуле объекта
ОбъектСчета.ОбменДанными.Загрузка = Истина;
// Устанавливаем валюту регламентированного учета (рубли по умолчанию)
ОбъектСчета.ВалютаДенежныхСредств = Справочники.Валюты.НайтиПоКоду("643");
Попытка
ОбъектСчета.Записать();
Сообщить("Успешно заполнена валюта для счета: " + ОбъектСчета.НомерСчета);
Исключение
Сообщить("Не удалось записать счет: " + ОбъектСчета.НомерСчета + ". Ошибка: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
Использование свойства ОбменДанными.Загрузка = Истина позволяет временно отключить платформенные обработчики событий при записи объекта, что гарантирует успешное внесение изменений даже при наличии жестких блокировок со стороны бизнес-логики конфигурации.
В завершение разбора проблемы дадим важную рекомендацию. После того как вы восстановите видимость расчетного счета, обязательно откройте его карточку и визуально перепроверьте поле номера счета. В нем должно содержаться ровно 20 цифр.
Если при переносе из старой программы в номере счета оказались символы пробела или дефисы, настоятельно рекомендуется удалить их. Любой лишний символ ломает внутренние алгоритмы распознавания банковских выписок при последующем импорте файлов из систем дистанционного банковского обслуживания (ДБО/Клиент-Банк).