gifts2017

Общий внешний нумератор документов, хранящий значения счетчиков в базе SQL сервера для двух баз 1с 8.х

Опубликовал Виктор Круглов (kvic2705) в раздел Обработки - Обработка документов

Решение проблемы сквозной нумерации документов (СчетФактураВыданный) в двух базах 1с организации (торговля и бухгалтерия) при помощи третьей базы на MS SQL сервере, обращение к которой из 1с выполнено при помощи хранимых процедур (ADO).

Имеем: две базы организации: торговля и бухгалтерия, в которых в реальном времени делаются реализации и выписываются счета-фактуры. Периодически из торговли документы передаются в бухгалтерию.

Задача: обеспечить единую сквозную нумерацию документов в хронологическом порядке, пробелы в нумерации допускаются, при этом оставлять ежедневный запас номеров для использования при загрузке сводных реализаций (между собственными компаниями).

Решение: создаем БД enumerator на MS SQL сервере, выполняем скрипт для создания таблиц и хранимых процедур. В таблицах хранится информация о виде счетчика, параметрах организации и строка подключения, значения счетчиков по датам.

Вносим изменения в конфигурацию 1с (все необходимое содержится в файле конфигурации, изменения вносились и тестировались на Управление торговлей 10.3 (8.1), Бухгалтерия предприятия 2.0 (8.2)). Пример написан для БД Торговли, для бухгалтерии необходимо переменной db_type присвоить значение 1 в обработке РаботаСНумератором, модуле формы справочника Организации и в процедуре ПриУстановкеНовогоНомераДокумента. Также нужно включить документ СчетФактураВыданный в подписку на событие ПриУстановкеНовогоНомераДокумента.

Установить четыре константы параметров подключения

Установить реквизит Организации Нумератор_СчетФактураВыданный. Заполнение и уникальность ИНН обязательно, по этому полю выполняется идентификация.

Заполнить начальные значения счетчика и дельты (ежедневный запас, прибавляемый к номеру для определения начального номера на текущую дату)

Действия выполнить в двух базах последовательно. В таблицу организаций в базе нумератора записывается информация о подключении для предотвращения поломки счетчика при развертывании (тестовой) копии баз. Необходимо помнить что строка подключения для файлового варианта у разных клиентов может быть разной, т.е. необходимо обеспечить чтобы у всех пользователей была одна строка подключения, иначе невозможно однозначно идентифицировать базу. В случае серверного варианта заносится имя базы на SQL сервере.

Работает это так: при возникновении у документа-подписчика события ПриУстановкеНовогоНомераДокумента вызывается хранимая процедура, которая проверяет переданную дату и при необходимости открывает новый период нумерации, увеличивая значение счетчика на прошлую дату на дельту. Затем найденное последнее значение увеличивается на 1, записывается в таблицу базы нумератора и возвращается в 1с. Если для периода нет свободных значений счетчика, генерируется исключение.

Надеюсь, кому-нибудь пригодится.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Файл конфигурации 8.1
.cf 37,63Kb
19.04.12
11
.cf 37,63Kb 11 Скачать
Скрипты для создания объектов базы на MS SQL сервере
.sql 31,21Kb
19.04.12
17
.sql 31,21Kb 17 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Владимир (oberon355) 02.05.12 16:23
У нас так реализовали сплошную нумерацию по кассовым документам. Более критичная часть. А по счетам фактурам бухов устраивает и с пробелами в нумерации
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа