Всем привет!
Разработка реализована на конфигурациях на обычных и управляемых формах.
Кому много текста в статье, переходите сразу к последнему абзацу Универсальная обработка регистрации объектов.
Суть проблемы.
Имеется база УТ Проф (10 лет ведется учет) и БП Проф (пустая) - завели новую организацию, для которой надо настроить обмен УТ - БП. Первоначальная настройка включает в себя выгрузку первоначальных справочных сведений из УТ в БП - см. рис.
Для базы, в которой ведется учет 10 лет по нескольким организациям, подобная первоначальная выгрузка закончится переполнением памяти - в общем закончится ошибкой СУБД. Как быть?
Альтернативное решение -снимаем галочку в настройке.
Единственное решение - снимаем галочку в настройке, двигаемся дальше - настраиваем обмен без первоначальной выгрузки справочников. Справочники будем выгружать вручную. Лучше всего ограничить список выгружаемых элементов - например, списком номенклатуры и контрагентов, взятых из документов.
Первая версия подобной разработки имела ограниченный функционал - см. рис. внешнего вида и алгоритма первой версии - ниже два рисунка.
Рис. Первая версия обработки - имеет ограниченный функционал
Обработка регистрировала все проведенные документы за период по организации, далее для определенных видов документов регистрировались связанные справочники: Контрагенты, Банковский расчетный счет, Банк, Договор с контрагентом.
Остальные справочники я добавлял вручную через механизм регистрации объектов с помощью запросов - см. рис. ниже.
Проблема ручной регистрации заключается в том, что каждый раз, сталкиваясь с подобной задачей, приходится заново прописывать запросы, для каждого справочника приходится регистровать объекты отдельно - есть вероятность, что какие-то связанные справочники будут пропущены - и тогда в Бухгалтерии появится <Объект не найден...>.
Для определенных масштабов задач и баз такой подход оправдан. Например, слетел обмен, и надо срочно восстановить часть потерянных объектов - делаем вручную, потому что нет времени разрабатывать универсальную обработку.
Про универсальную обработку (версии 2.0) речь пойдет ниже через абзац. Сейчас же хотелось еще раз акцентировать внимание на проблемах настройки обменов УТ - БП.
Другие сценарии и проблемы настройки обмена.
Опишу три обмена между УТ 10.3 и БП 3.0, для которых использовал ручную регистрацию объектов - и впоследствии обработку применял по необходимости для регистрации документов в этих базах. Специально акцентирую внимание на том, что базы базовые и проф-версии - ручная регистрация объектов подходит для всех типов баз.
Итак, три сценария, три обмена:
1) между УТ 10.3 Базовая и БП 3.0 Проф: в обеих базах ведется учет только по одной организации, в УТ ведется учет 2 года, БП изначально пустая развернута.
УТ обновлена до последней версии на тот момент - УТ базовая 10.3.67.2, БП также до последней версии БП 3.0.88.32, платформа тоже обновлена до последней версии 1С:Предприятие 8.3.18.1289.
2) между УТ 10.3 Проф и БП 3.0 Базовая: в УТ ведется учет по двум организациям, в БП - только по одной (которая на НДС), в УТ учет ведется 6 лет, БП изначально пустая развернута.
3) между УТ 10.3 Проф и БП 3.0 Проф: в УТ ведется учет по 2 организациям, для каждой из них развернута соответствующая БП 3.0 Проф (в каждой БП учет только по одной организации), в УТ учет ведется 6 лет, БП ранее была 2.0 (без обмена с УТ) - произведен апгрейд до БП 3.0 и настроен обмен с УТ 10.3.
Для 2 и 3-го примера: УТ редакция 10.3.49.3, платформа 1С:Предприятие 8.3.13.1644, БП обновлена до последней версии БП 3.0.88.32.
Во всех случаях базой-источником является УТ 10.3.
Как видите сценарии задач разные, ошибки сопоставления по организации: Наименование, ИНН, КПП - одинаковые. Хуже всего, когда после первоначальной выгрузки из УТ в БП, которая по-умолчанию выгружает все накопленные справочники (к примеру, Банки 18 000 объектов, Номенклатура 25 000 объектов), выходит или явная ошибка или не явная ошибка: что сопоставлена организация <Объект не найден>.
Когда обмен настраивается для Базовых версий, ошибка будет явной - при выгрузке или загрузке появится сообщение, что произошла явная ошибка - поскольку для базовых версий можно вести учет только по одной организации.
Когда обмен настраивается для Проф-версий, ошибка будет не явной - ее можно заметить только при анализе загруженных данных - к примеру для организации будет создано два элемента с одинаковым ИНН и КПП.
Первоначальная выгрузка и загрузка объектов занимает длительное время. Было однажды и так: выгрузка продолжалась 8-12 часов. Настройка производится предварительно на копиях. Затем те же процедуры повторяются на рабочих базах на серверах - время может незначительно сократиться.
В любом случае, первоначальная выгрузка и последующая загрузка происходят долго. И после очередных вылетов в ошибку было решено не запускать первоначальную выгрузку. Хорошо, что в УТ 10.3 есть удобный вспомогательный инструмент - обработка "Регистрация изменений для обмена".
С помощью нее я отключаю все регистрации объектов по обмену - по кнопке "Отменить регистрацию изменения".
Оставляю только регистрацию по организации - чтобы явно сопоставить организацию при загрузке в БП - если надо добавляю по кнопке "Добавить регистрацию" и проверяю по кнопке "Показать зарегистрированные изменения данного типа" (пример функционала - рис. ниже).
Далее запускаю синхронизацию - этап первоначальной выгрузки и загрузки объектов - цель выгрузить Организацию и сопоставить ее. Далее, остальные справочники добавляю вручную через описанную обработку по очереди - к примеру Банки и Номенклатура разными очередями, Контрагенты+Валюта+ТипыЦен + и т.д. третьей очередью.
Таким образом я сокращаю время одной очереди обмена от 20 мин (для документов) до 2 часов (для справочников). Очередей может быть 4-5-6.
Документы сначала регистрировал вручную, добавлял изменения по документам через запросы - это встроенный механизм обработки "Регистрация изменений для обмена" (рис. ниже).
Затем разработал обработку для автоматической регистрации всех соответствующих документов (версии 1.0).
Собственно, эта обработка и представлена в данной публикации. Вместо того, чтобы для каждого документа прописывать запросы вида:
ВЫБРАТЬ
ОтчетОРозничныхПродажах.Ссылка
ИЗ
Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах
ГДЕ
ОтчетОРозничныхПродажах.Дата > &Дата
И ОтчетОРозничныхПродажах.Организация = &Организация
И ОтчетОРозничныхПродажах.ОтражатьВБухгалтерскомУчете = ИСТИНА
И ОтчетОРозничныхПродажах.Проведен = ИСТИНА
- обработка сама пробежится по всем документам организации и зарегистрирует их в соответствующем плане обмена (рис. ниже).
При этом для поступлений и реализаций регистрируются также Номенклатура, Контрагенты, Договоры, для банковских выписок - регистрируются банковские счета и банки.
Для случая, когда УТ Базовая (пример 1) - я не могу вносить изменения в алгоритмы конфигурации - поэтому все накопленные справочники добавляю в обмен заранее. Если какой-то элемент не добавить в обмен, то может сложиться ситуация, когда в Бухгалтерию выгрузится <Объект не найден ...>. То же самое применил для случая примера 3.
Для случая УТ Проф 10.3 (пример 2) - я не добавлял справочники Банки, Номенклатура, Контрагенты и Договоры контрагентов в обмен. Я доработал алгоритм записи документов Реализация товаров и услуг и Поступления товаров и услуг - добавил в процедуру "ПриЗаписи()" следующий код (этого оказалось достаточно для учета в БП):
//доработка+
Если НЕ Отказ
И ОтражатьВБухгалтерскомУчете
И Организация = Справочники.Организации.НайтиПоКоду("000000002") Тогда
УзелОбмена = ПланыОбмена.ОбменУправлениеТорговлей103БухгалтерияПредприятия30.НайтиПоКоду("РС");
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, БанковскийСчетОрганизации);
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, БанковскийСчетОрганизации.Банк);
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Контрагент);
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, ДоговорКонтрагента);
МасТоваров = Товары.ВыгрузитьКолонку("Номенклатура");
МасУслуг = Услуги.ВыгрузитьКолонку("Номенклатура");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| (Номенклатура.Ссылка В (&МасТоваров)
| ИЛИ Номенклатура.Ссылка В (&МасУслуг))
|ИТОГИ ПО
| Ссылка ИЕРАРХИЯ";
Запрос.УстановитьПараметр("МасТоваров", МасТоваров);
Запрос.УстановитьПараметр("МасУслуг", МасУслуг);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Выборка.Ссылка);
КонецЦикла;
КонецЕсли;
Дополнительно. Что касается документов, то их я регистрировал или вручную через Регистрацию изменений объектов (для тестирования и самопроверки, или в исключительных случаях, когда не требуется все документы за период регистрировать), или с помощью представленной обработки.
Что касается регистров сведений, то они регистрировались в плане обмена и выгружались уже после сдачи-приемки работ по мере необходимости (уже в процессе сопровождения клиентов и их конфигураций).
Добавлю, что запуск обмена на рабочей базе для примера 1 было осуществлено через две недели, для примера 2 - через месяц, для примера 3 - через два месяца. То есть за период, пока я тестировал обмен на копии, в рабочей базе УТ 10.3 вовсю работали и проводили документы, которые необходимо было выгрузить в БП.
Универсальная обработка регистрации объектов
Внешняя обработка вер. 2.1 разработана и протестирована на платформе 1С:Предприятие 8.3.23.1865,
на конфигурации УТ 10.3.75.2 - внешний вид см. на рис. ниже.
Функционал для версии 2.1 существенно расширен: для выбранных документов производится анализ и поиск всех связанных справочников и документов, далее для всех связанных справочников и документов происходит регистрация объектов в плане обмена.
Для каждого найденного связанного справочника и документа производится анализ и поиск всех связанных справочников и документов, и также производится последующая регистрация объектов.
Анализ и поиск связанных справочников и документов происходит по реквизитам объекта (справочника или документа) и по реквизитам табличных частей объекта.
Для иерархических справочников регистрируются все вышестоящие группы и элементы по иерархии.
Алгоритм строится на вызове рекурсий и на обходе всех объектов метаданных конфигурации.
PS. Если вы настроите автоматический обмен УТ-БП, то документы будут выгружены из УТ в БП при последующих обменах, а вот связанные справочники сами не выгрузятся. Может сложиться ситуация, что в БП документы не будут даже открываться или проводиться. В таких случаях запускайте универсальную обработку регистрации объектов столько раз, сколько понадобится. Сопровождение клиентов и конфигураций 1С еще никто не отменял.
Внешняя обработка для конфигураций на управляемых формах - разработана и протестирована на конфигурации Бухгалтерия предприятия, редакция 3.0 (3.0.150.33).
По идее, подходит для всех конфигураций на управляемых формах.
Обновление 27-06-2024г.
Добавил в обработку для обычных форм - инструкцию "Как доработать УТ 10.3 для рекурсивного обхода реквизитов для обмена". Инструкцию формата pdf вложил в макет обработки в виде двоичного файла. Для ее получения из обработки надо выгрузить макет в файл с указанием формата pdf.
Также можно отдельно скачать данную инструкцию в данной публикации. Инструкция содержит алгоритм и порядок действий.
На этом все. Всем добра!
С пользой для клиентов, Рустем
- Свертка базы УТ 10.3 подокументно - новая концепция
- Матричное программирование - демо-стенд матричного калькулятора
- Справочное хранение товаров в КА 2.5 - кейс запуска адресного склада
- Мини-обзор разных задач - от очевидного до неочевидного
- Поиск отчета по документам - пример анализа незнакомых конфигураций
- Флажок в динамическом списке - от теории до практики "как бы простой" задачи
- Из Json в ДеревоЗначений - удобный просмотрщик json-структуры
- Анализ прав и поиск подходящего профиля - алгоритмический анализ и поиск
- Оцифровка и визуализация склада - программная прорисовка склада
- Внедрение адресного склада в КА 2.5 - кейс запуска адресного склада
- Что такое форматированный документ - прекрасная возможность раскрасить любой текс
- Удаление документов для любых баз на управляемых формах
- Удаление справочников для любых баз на управляемых и обычных формах
- Перенумерация документов и справочников
- Фрилансеру на заметку: цены на услуги, сроки по задачам, АВС-анализ по клиентам
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 10.3, релизы 10.3.88.3, 10.3.75.2, 10.3.49.3
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.150.33