Руководством была поставлена задача предоставить программу с данными только по одному юридическому лицу, потенциальному покупателю бизнеса. Так как учет в информационной базе ведется с 2005 года и юридических лиц в базе более 10, было принято решение создать план обмена по конкретной организации.
Порядок работы:
1) За основу был взят типовой план обмена по организации, используемый 1С для обмена со сторонней информационной базой конфигурации УПП (не РИБ) . Скопирован с наименованием "ОбменУППУПП_РИБ_ПоОрганизации"
2) Изменен признак "Распределенная ИБ"
3) Настроен состав (произвольный, зависит от ваших целей). Я отметил все объекты относящиеся к бухгалтерскому и налоговому учетам. Исключил объекты международного учета и свои "дописанные" объекты.
4) В форме списка перезаполнил (автозаполнением) действия формы, для включения предопределенных действий ("Создание начального образа..", "Записать изменения", "Прочитат изменения").
5) Модуль объекта расширил предопределенной процедурой "ПриОтправкеДанныхПодчиненному". И добавил часть процедур из глобального с признаком "локальный_"
(полный текст модуля объекта во вложении на скачивании)
6) Изменил в глобальном модуле "ПроцедурыОбменаУПП" 2 функции:
- ПолучитьЗапросомМассивУзловПоОрганизации(Организация)
Функция ПолучитьЗапросомМассивУзловПоОрганизации(Организация) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОбменУППУПП.Ссылка КАК Ссылка
|ИЗ
| ПланОбмена.ОбменУППУПП КАК ОбменУППУПП
| ЛЕВОЕ СОЕДИНЕНИЕ ПланОбмена.ОбменУППУПП.Организации КАК СписокОрганизаций
| ПО ОбменУППУПП.Ссылка = СписокОрганизаций.Ссылка
|ГДЕ
| (СписокОрганизаций.Организация В (&СсылкаНаОрганизацию)
| ИЛИ СписокОрганизаций.Организация ЕСТЬ NULL )
| И ОбменУППУПП.Ссылка <> &ЭтотУзел";
Запрос.УстановитьПараметр("СсылкаНаОрганизацию", Организация);
Запрос.УстановитьПараметр("ЭтотУзел", ПланыОбмена.ОбменУППУПП.ЭтотУзел());
//Начало_Вставка@@@
Запрос.Текст = Запрос.Текст + " ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОбменУППУПП.Ссылка КАК Ссылка
|ИЗ
| ПланОбмена.ОбменУППУПП_РИБ_ПоОрганизации КАК ОбменУППУПП
| ЛЕВОЕ СОЕДИНЕНИЕ ПланОбмена.ОбменУППУПП_РИБ_ПоОрганизации.Организации КАК СписокОрганизаций
| ПО ОбменУППУПП.Ссылка = СписокОрганизаций.Ссылка
|ГДЕ
| (СписокОрганизаций.Организация В (&СсылкаНаОрганизацию)
| ИЛИ СписокОрганизаций.Организация ЕСТЬ NULL )
| И ОбменУППУПП.Ссылка <> &ЭтотУзелПолный_ПоОрганизации";
Запрос.УстановитьПараметр("ЭтотУзелПолный_ПоОрганизации", ПланыОбмена.ОбменУППУПП_РИБ_ПоОрганизации.ЭтотУзел());
//Конец_Вставка@@@
МассивСсылок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивСсылок;
КонецФункции
2. ПолучитьМассивВсехУзлов()
Функция ПолучитьМассивВсехУзлов() Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОбменУППУПП.Ссылка КАК Ссылка
|ИЗ
| ПланОбмена.ОбменУППУПП КАК ОбменУППУПП
|ГДЕ
| ОбменУППУПП.Ссылка <> &ЭтотУзел";
Запрос.УстановитьПараметр("ЭтотУзел", ПланыОбмена.ОбменУППУПП.ЭтотУзел());
//Начало_Вставка@@@
Запрос.Текст = Запрос.Текст + " ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| ОбменУППУПППоОрганизациям.Ссылка
|ИЗ
| ПланОбмена.ОбменУППУПП_РИБ_ПоОрганизации КАК ОбменУППУПППоОрганизациям
|ГДЕ
| ОбменУППУПППоОрганизациям.Ссылка <> &ЭтотУзелПолный_ПоОрганизации";
Запрос.УстановитьПараметр("ЭтотУзелПолный_ПоОрганизации", ПланыОбмена.ОбменУППУПП_РИБ_ПоОрганизации.ЭтотУзел());
//Конец_Вставка@@@
МассивСсылок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивСсылок;
КонецФункции
7) Изменил в глобальном модуле "ПолныеПрава" процедуру:
ОпределитьФактИспользованияРИБ()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ОбменУППУПП.Ссылка,
| ОбменУППУПП.ДатаНачалаВыгрузкиДокументов КАК ДатаНачалаВыгрузкиДокументов
|ИЗ
| ПланОбмена.ОбменУППУПП КАК ОбменУППУПП
|ГДЕ
| ОбменУППУПП.Ссылка <> &ЭтотУзелПолный";
//Начало_Вставка@@@
Запрос.Текст = Запрос.Текст + " ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| ОбменУППУПППоОрганизациям.Ссылка,
| ОбменУППУПППоОрганизациям.ДатаНачалаВыгрузкиДокументов КАК ДатаНачалаВыгрузкиДокументов
|ИЗ
| ПланОбмена.ОбменУППУПП_РИБ_ПоОрганизации КАК ОбменУППУПППоОрганизациям
|ГДЕ
| ОбменУППУПППоОрганизациям.Ссылка <> &ЭтотУзелПолный_ПоОрганизации";
Запрос.УстановитьПараметр("ЭтотУзелПолный_ПоОрганизации", ПланыОбмена.ОбменУППУПП_РИБ_ПоОрганизации.ЭтотУзел());
//Конец_Вставка@@@
Запрос.УстановитьПараметр("ЭтотУзелПолный", ПланыОбмена.ОбменУППУПП.ЭтотУзел());
РезультатЗапроса = Запрос.Выполнить();
ЕстьУзлыОбменаУППУПП = НЕ РезультатЗапроса.Пустой();
9) Теперь можно запустить создание начального образа.
Все. Мы имеем идентичную конфигурацию с данными только по выбранной организации.
10) При необходимости можем сбросить признак подчиненного узла у созданной информационной базы (наример: //infostart.ru/public/340351/) и предоставляем конфигурацию заказчику.
Это на порядок проще и быстрее, чем удалять все лишние ссылки.
Тестировалось на конфигурации: Управление производственным предприятием, редакция 1.3 (1.3.97.5).
28.02.2024г. перенес локально (в модуль объекта) часть процедур определения ссылок для выгрузки.
Тестировалось на конфигурации: Управление производственным предприятием, редакция 1.3 (1.3.103.2).
У меня ругалось на пустое значение «ПараметрыСеанса.СоответствиеОрганизацийИУзловОбменаУПП», поэтому пришлось в общий модуль «ПолныеПрава» в функции «ОпределитьФактИспользованияРИБ» после
Показать
добавить:
Показать
Вадим, спасибо.
В описании не указал этот момент. Сейчас подправил.
С уважением, Александр.
После выполнения приведенной инструкции создается образ базы с документами по выбранной организации. Документы выгружаются без движений, поэтому требуется их перепроведение в новой базе, а после перепроведения суммы по бух.счетам не всегда совпадают. Что нужно подправить, чтобы документы выгружались в создаваемый образ уже со своими движениями?