Коллеги, друзья, добрый день. Стоит задача слияния двух баз БП 3 КОРП. Свежий релиз, с кучей доработок. Конфы идентичные. Знаю, вопрос избитый. НО! У меня все таке 2 вопроса.
1. есть живые очевидцы переноса через РИБ? Много видел статей с мануалами, но сложилось впечатление, что ни кто так не делал по факту.
2. Так как привык делать все напролом, то делаю правила на КД. Все вроде красиво, НО. как всегда НО... Конфы то идентичные, а настроен план счетов по разному. Пример: счет 20.01 в базе источник 3 субконто Склад, в базе Применике - Продукция. И таких счетов несколько с разными настройками. На что у меня хватило мозгов:
Создал новое ПКО чдВидыСубконтоХозрасчетные в котором прописал Источник Склад, Применик - Продукция.
В ПКО документа в КС Хозрасчетный у Субконто (ДТ и КТ) в событии Перед выгрузкой прописал:
все вроде работает. Но когда выгружается другой документ, нде нет этого правила, КД упорно берет ПКО чдВидыСубконтоХозрасчетные и так же сопоставляет Скалд=Продукция. Естественно выгрузка вываливает ошибку что такое субконто не подходит (смотрел файл выгрузки и реально видел такое сопоставление). Подскажите - может есть другой способ эту проблему обойти? или ЧЯДНТ
1. есть живые очевидцы переноса через РИБ? Много видел статей с мануалами, но сложилось впечатление, что ни кто так не делал по факту.
2. Так как привык делать все напролом, то делаю правила на КД. Все вроде красиво, НО. как всегда НО... Конфы то идентичные, а настроен план счетов по разному. Пример: счет 20.01 в базе источник 3 субконто Склад, в базе Применике - Продукция. И таких счетов несколько с разными настройками. На что у меня хватило мозгов:
Создал новое ПКО чдВидыСубконтоХозрасчетные в котором прописал Источник Склад, Применик - Продукция.
В ПКО документа в КС Хозрасчетный у Субконто (ДТ и КТ) в событии Перед выгрузкой прописал:
ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетные";
Если ОбъектКоллекции.СчетДТ.Код = "20.01" Тогда
Для Каждого Суб Из ОбъектКоллекции.СубконтоДТ Цикл
Если ТипЗнч(Суб.Значение) = Тип("СправочникСсылка.Склады") Тогда
ИмяПКОВидСубконто = "чдВидыСубконтоХозрасчетные";
КонецЕсли;
КонецЦикла;
КонецЕсли;
Показатьвсе вроде работает. Но когда выгружается другой документ, нде нет этого правила, КД упорно берет ПКО чдВидыСубконтоХозрасчетные и так же сопоставляет Скалд=Продукция. Естественно выгрузка вываливает ошибку что такое субконто не подходит (смотрел файл выгрузки и реально видел такое сопоставление). Подскажите - может есть другой способ эту проблему обойти? или ЧЯДНТ
По теме из базы знаний
- Перенос данных из БП 2.0 в УТ 11 / КА 2 / ERP 2. Переносятся документы, остатки и справочники
- Перенос данных из КА 1.1 в ERP 2. Переносятся остатки, документы и справочники
- Перенос данных из КА 1.1 в КА 2.5. Переносятся документы, остатки и справочники
- Перенос данных из УПП 1.3 в ЗУП 3.1 или из КА 1.1 в ЗУП 3.1. Переносятся начальные остатки, обороты и справочная информация
- Перенос данных из УНФ 3.0 / УНФ 1.6 в УПП 1.3 / КА 1.1 / УТ 10.3. Переносятся документы и справочная информация
Найденные решения
в общем, если кому интересно, решил проблему следующим образом: в КС Субкотно ДТ/КТ ПКО движений Хозрасчетный ПриВыгрузке написал следующее
вроде работает как надо (еще тестирую)
Если ОбъектКоллекции.СчетДТ.Код = "26" Тогда
Для Каждого Суб Из ОбъектКоллекции.СубконтоДТ Цикл
Если ТипЗнч(Суб.Значение) = Тип("СправочникСсылка.Склады") //Тогда
и ВидСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады Тогда
ВидСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию("Подразделения");
Субконто = Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(Суб.Значение.Наименование);
КлючИЗначение = Новый Структура(ВидСубконто,Субконто);
КонецЕсли;
КонецЦикла;
ИначеЕсли ОбъектКоллекции.СчетДТ.Код = "91.02" или ОбъектКоллекции.СчетДТ.Код = "91.01" Тогда
Для Каждого Суб Из ОбъектКоллекции.СубконтоДТ Цикл
Если ТипЗнч(Суб.Значение) = Тип("СправочникСсылка.Склады") //Тогда
и ВидСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады Тогда
ВидСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеГруппы;
Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(Суб.Значение.Наименование);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Показатьвроде работает как надо (еще тестирую)
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Настройки плана счетов должны быть идентичны.
Выбрать одну базу как основную, вторую загружать, устанавливая данные по первой.
Конфы то идентичные, а настроен план счетов по разному. Пример: счет 20.01 в базе источник 3 субконто Склад, в базе Применике - Продукция. И таких счетов несколько с разными настройками.
Настройки плана счетов должны быть идентичны.
Выбрать одну базу как основную, вторую загружать, устанавливая данные по первой.
вот пример ошибки. Какого ражна он пытается записать субконто Продукция, если я не прописывал для этого документа правил менять ИмяПКОВидСубконто!? Везде по умолчанию стоит в ПКО ВидыСубконтоХозрасчетные
Прикрепленные файлы:
(10)При загрузке данных, глобальным обработчиком формируете соответствие субконто счетам и храните в глобальных переменных.
При загрузке самих данных проверяете на соответствие типу.
Как-то так(скрины):
Текст:
При загрузке самих данных проверяете на соответствие типу.
Как-то так(скрины):
Текст:
ОтражениеВУчете = Объект.ОтражениеВУчете.Выгрузить();
Запросы.ОтражениеВУчетеНУ.УстановитьПараметр("ДанныеТЧ", ОтражениеВУчете);
Объект.ОтражениеВУчете.Загрузить(Запросы.ОтражениеВУчетеНУ.Выполнить().Выгрузить());
ОсновныеНачисления = Объект.ОсновныеНачисления.Выгрузить();
Запросы.ОсновныеНачисленияНУ.УстановитьПараметр("ДанныеТЧ", ОсновныеНачисления);
Объект.ОсновныеНачисления.Загрузить(Запросы.ОсновныеНачисленияНУ.Выполнить().Выгрузить());
ДополнительныеНачисления = Объект.ДополнительныеНачисления.Выгрузить();
Запросы.ДополнительныеНачисленияНУ.УстановитьПараметр("ДанныеТЧ", ДополнительныеНачисления);
Объект.ДополнительныеНачисления.Загрузить(Запросы.ДополнительныеНачисленияНУ.Выполнить().Выгрузить());
МассивТЧ = Новый Массив;
МассивТЧ.Добавить("ОтражениеВУчете");
МассивТЧ.Добавить("ОсновныеНачисления");
МассивТЧ.Добавить("ДополнительныеНачисления");
ВидыАналитики = Новый Массив;
ВидыАналитики.Добавить("Дт");
ВидыАналитики.Добавить("Кт");
ВидыУчета = Новый Массив;
ВидыУчета.Добавить("");
ВидыУчета.Добавить("НУ");
КЦ = Справочники.ПодразделенияОрганизаций.НайтиПоРеквизиту("С_КадровыйНомер", 555555555);
ПустаяОрганизация = Справочники.Организации.ПустаяСсылка();
Счет68 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("68");
Для Каждого ТекТЧ ИЗ МассивТЧ Цикл
Для Каждого Строка ИЗ Объект[ТекТЧ] Цикл
АналитикаСтруктура = Новый Структура;
Для Каждого ТекВид ИЗ ВидыАналитики Цикл
Для Каждого ВидУчета Из ВидыУчета Цикл
СоответствиеСубконто = Параметры["СоответствияСубконто" + ВидУчета].Получить(Строка["Счет" + ТекВид + ВидУчета]);
Если СоответствиеСубконто = Неопределено Тогда
Продолжить;
КонецЕсли;
Для Сч = 1 ПО 3 Цикл
Если ЗначениеЗаполнено(Строка["Субконто" + ТекВид + Сч]) Тогда
НомерСубконто = СоответствиеСубконто.Получить(ТипЗнч(Строка["Субконто" + ТекВид + Сч]));
Если НЕ НомерСубконто = Неопределено Тогда
ЗначениеСубконто = Строка["Субконто" + ТекВид + ВидУчета + Сч];
Если ЗначениеСубконто = Неопределено Тогда
ОписаниеТипов = Новый ОписаниеТипов(ТипЗнч(Строка["Субконто" + ТекВид + Сч]));
ЗначениеСубконто = ОписаниеТипов.ПривестиЗначение(ЗначениеСубконто);
КонецЕсли;
АналитикаСтруктура.Вставить("Субконто" + ТекВид + ВидУчета + НомерСубконто, ЗначениеСубконто);
КонецЕсли;
Иначе
НомерСубконто = СоответствиеСубконто.Получить(Тип("СправочникСсылка.ПодразделенияОрганизаций"));
Если НЕ НомерСубконто = Неопределено И НомерСубконто = Сч Тогда
АналитикаСтруктура.Вставить("Субконто" + ТекВид + ВидУчета + Сч, КЦ);
КонецЕсли;
КонецЕсли;
КонецЦикла;
НомерСубконто = СоответствиеСубконто.Получить(Тип("СправочникСсылка.ПодразделенияОрганизаций"));
Если (ТипЗнч(Строка["Счет" + ТекВид + ВидУчета]) = Тип("ПланСчетовСсылка.Хозрасчетный") И НЕ Строка["Счет" + ТекВид + ВидУчета].ПринадлежитЭлементу(Счет68)) И НЕ НомерСубконто = Неопределено Тогда
Если ЗначениеЗаполнено(Строка["Подразделение" + ТекВид]) Тогда
АналитикаСтруктура.Вставить("Субконто" + ТекВид + ВидУчета + НомерСубконто, Строка["Подразделение" + ТекВид]);
Иначе
АналитикаСтруктура.Вставить("Субконто" + ТекВид + ВидУчета + НомерСубконто, КЦ);
КонецЕсли;
//Иначе
// АналитикаСтруктура.Вставить("Субконто" + ТекВид + ВидУчета + Сч);
КонецЕсли;
//Если ТекВид = "Кт" И (ТипЗнч(Строка["Счет" + ТекВид + ВидУчета]) = Тип("ПланСчетовСсылка.Хозрасчетный") И НЕ Строка["Счет" + ТекВид + ВидУчета].ПринадлежитЭлементу(Счет68)) Тогда
// НомерСубконто = СоответствиеСубконто.Получить(Тип("СправочникСсылка.ПодразделенияОрганизаций"));
// Если НЕ НомерСубконто = Неопределено Тогда
// Если ЗначениеЗаполнено(Строка.ПодразделениеКт) Тогда
// АналитикаСтруктура.Вставить("Субконто" + ТекВид + ВидУчета + НомерСубконто, Строка.ПодразделениеКт);
// Иначе
// АналитикаСтруктура.Вставить("Субконто" + ТекВид + ВидУчета + НомерСубконто, КЦ);
// КонецЕсли;
// КонецЕсли;
//КонецЕсли;
Если ТипЗнч(Строка["Счет" + ТекВид + ВидУчета]) = Тип("ПланСчетовСсылка.Хозрасчетный") И Строка["Счет" + ТекВид + ВидУчета].ПринадлежитЭлементу(Счет68) Тогда
НомерСубконто = СоответствиеСубконто.Получить(Тип("СправочникСсылка.Организации"));
Если НЕ НомерСубконто = Неопределено Тогда
АналитикаСтруктура.Вставить("Субконто" + ТекВид + ВидУчета + НомерСубконто, ПустаяОрганизация);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ЗаполнитьЗначенияСвойств(Строка, АналитикаСтруктура);
КонецЦикла;
КонецЦикла;
ПоказатьПрикрепленные файлы:
(11)прикольно. надо подумать. В моем варианте есть еще один большой недостаток - база хоть и подставляет значение, но там по факту получается пустая ссылка. Может проще тогда призагрузке движений по хозрасчетному делать "попытку", потом документы все равно придется все перепроводить. Знаете куда попытку воткнуть лучше? Останется проблема только с ручными корректировками
(12)Через попытку - не получится(либо придется лезть в дебри обработки УниверсальныйОбменДаннымиXML и там разбираться, куда втыкать эту самую попытку), потому что при выгрузке ничего не известно про приемник, а в приемнике - ничего не известно про входящие данные, пока эти данные не "олицетворятся".
Проверка на тип субконто в уже загруженном объекте нужна по большей части для того, чтобы оставить субконто не совпадающего типа пустыми, либо когда типы совпадают, но порядок - разный(в источнике, скажем, 2-ое субконто, а в приемнике - 3-е)
Проверка на тип субконто в уже загруженном объекте нужна по большей части для того, чтобы оставить субконто не совпадающего типа пустыми, либо когда типы совпадают, но порядок - разный(в источнике, скажем, 2-ое субконто, а в приемнике - 3-е)
(15)
Для вашего случая, возможно придется несколько адаптировать, у меня не было ситуации, когда типы субконто не совпадали.
..........
СоответствиеСубконто = Параметры["СоответствияСубконто" + ВидУчета].Получить(Строка["Счет" + ТекВид + ВидУчета]);
Если СоответствиеСубконто = Неопределено Тогда
Продолжить;
КонецЕсли;
Для Сч = 1 ПО 3 Цикл
........
ПоказатьДля вашего случая, возможно придется несколько адаптировать, у меня не было ситуации, когда типы субконто не совпадали.
в общем, если кому интересно, решил проблему следующим образом: в КС Субкотно ДТ/КТ ПКО движений Хозрасчетный ПриВыгрузке написал следующее
вроде работает как надо (еще тестирую)
Если ОбъектКоллекции.СчетДТ.Код = "26" Тогда
Для Каждого Суб Из ОбъектКоллекции.СубконтоДТ Цикл
Если ТипЗнч(Суб.Значение) = Тип("СправочникСсылка.Склады") //Тогда
и ВидСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады Тогда
ВидСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию("Подразделения");
Субконто = Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(Суб.Значение.Наименование);
КлючИЗначение = Новый Структура(ВидСубконто,Субконто);
КонецЕсли;
КонецЦикла;
ИначеЕсли ОбъектКоллекции.СчетДТ.Код = "91.02" или ОбъектКоллекции.СчетДТ.Код = "91.01" Тогда
Для Каждого Суб Из ОбъектКоллекции.СубконтоДТ Цикл
Если ТипЗнч(Суб.Значение) = Тип("СправочникСсылка.Склады") //Тогда
и ВидСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады Тогда
ВидСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеГруппы;
Субконто = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(Суб.Значение.Наименование);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Показатьвроде работает как надо (еще тестирую)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот