Каждый специалист 1С или активный пользователь программы «1С:Бухгалтерия» (особенно редакции 3.0) хотя бы раз сталкивался с ситуациями, которые на первый взгляд кажутся абсолютно мистическими. Представьте сценарий: вы открываете карточку договора контрагента, а там в поле выбора валюты дважды написано «руб.» (или «Оплата в рублях»). При этом в конфигураторе для одной из этих позиций жестко прописана валюта USD (доллар США) или EUR (евро). Более того, из-за этого визуального дублирования программа наотрез отказывается автоматически подставлять нужный договор в документы, а при попытке выбрать его вручную список выбора оказывается пустым.
В этой статье мы подробно проанализируем данную проблему, разберем скрытые механизмы ее возникновения и предоставим пошаговые инструкции по ее устранению. Мы разберем как внешние причины (связанные с окружением и браузером), так и внутренние системные сбои в самой базе данных 1С.
Это самая неочевидная и при этом наиболее распространенная причина «фантомного» переименования валют, когда в самой базе данных 1С и конфигураторе все настроено абсолютно верно, а интерфейс программы упорно показывает недостоверные данные.
Выясним причину этого явления. Если пользователи вашей организации работают с программой через веб-клиент (то есть запускают 1С в браузере, таком как Google Chrome, Яндекс.Браузер, Microsoft Edge, Opera и др.), в процесс отображения интерфейса вмешиваются внешние алгоритмы самого веб-обозревателя. Современные браузеры по умолчанию предлагают функцию автоматического перевода веб-страниц на русский язык, если им кажется, что на странице присутствуют иностранные элементы.
Проанализируем по шагам, как это работает и почему ломается логика 1С:
USD или EUR, переводчик считает ее иностранным словом, требующим локализации, и автоматически переводит ее на русский язык как «руб.» (или «рубли»).USD, а вторая — на RUB. Когда пользователь пытается выбрать договор, визуально ориентируясь на переведенную строку «руб.» (которая внутри системы является долларом), срабатывают встроенные отборы. Программа понимает, что для рублевого документа долларовый договор не подходит, и скрывает его из списка выбора.Рассмотрим, как быстро исправить эту ситуацию:
Рассмотрим ситуацию, когда пользователи работают через тонкий или толстый клиент (не через браузер), но проблема с дублированием валюты все равно присутствует. В этом случае изменения произошли непосредственно в базе данных 1С.
Проанализируем ситуацию: в современных компаниях часто настроена синхронизация данных между различными конфигурациями, например, между «1С:Управление торговлей» и «1С:Бухгалтерия предприятием», или со сторонними CRM-системами. При некорректно настроенных правилах обмена или при ручном вмешательстве в базу-источник может произойти сбой сопоставления объектов справочника Валюты.
В результате такого сбоя элемент справочника с кодом 840 (доллар США) ошибочно сопоставляется со строкой рубля, и его наименование в базе данных физически перезаписывается текстом «руб.». Ссылка в договорах ведет на тот же уникальный идентификатор (GUID) элемента, но на экране он теперь отображается как «руб.». Система при этом продолжает считать эту валюту долларом (по коду валюты), из-за чего и блокирует выбор договора в документах, где требуется реальный рубль.
Для исправления этой коллизии выполним следующие шаги:
Валюты.840 (или 978 для евро), но в наименовании написано «руб.».Еще один классический сценарий — реальное появление второго элемента «руб.» в справочнике валют. Это часто происходит при обновлении очень старых релизов баз данных, переносе остатков из устаревших конфигураций (например, «1С:Предприятие 7.7») или некорректном импорте банковских выписок.
Исторически в Российской Федерации использовался код валюты 810. После деноминации был введен новый международный код 643. Однако в банковской сфере (в структуре расчетных счетов) код 810 продолжает использоваться до сих пор для обозначения платежей внутри страны. Если в справочник Валюты были загружены оба эти элемента с одинаковым текстовым представлением «руб.», программа начинает путаться. Один рубль воспринимается системой как национальная валюта регламентированного учета (код 643), а второй — как иностранная валюта (код 810). Это приводит к раздвоению полей в карточке договора и невозможности автоматического подбора документов.
Рассмотрим подробнее, как исправить эту проблему встроенными средствами платформы 1С.
Если в вашей базе действительно физически задублировалась валюта «руб.», нам потребуется определить, какой из элементов является верным (как правило, это предопределенный элемент или элемент с кодом 643), перенести все движения документов на него, а ошибочный дубль удалить.
Выполним процедуру слияния дублей по шагам:
ПоискИУдалениеДублей).Валюты.Если автоматическое удаление дублей по какой-то причине недоступно, разберем альтернативный вариант с использованием группового изменения реквизитов:
Валюты и найдите неправильный (позже созданный) элемент «руб.». Пометьте его на удаление (нажатием клавиши Del).Договоры контрагентов.Валюта взаиморасчетов Равно [Ваш помеченный на удаление рубль].Валюта взаиморасчетов и укажите в качестве нового значения правильный рубль (код 643).Мы подробно разобрали три основные причины появления дублирующейся валюты «руб.» в договорах 1С. Помните, что если стандартные методы поиска дублей в базе данных не приносят результата, в первую очередь стоит проверить настройки браузера и отключить автоматический перевод веб-страниц.