КД 2.0: Конвертация справочника "План счетов" в счет плана счетов (7.7)

09.07.12

Интеграция - Перенос данных 1C

Иногда встречаются еще такие конфигурации на платформе 7.7, в которых вместо плана счетов есть справочник "План счетов", в котором абы как заведены элементы. Рано или поздно, при работе с такими ИБ, возникает необходимость переводить это всё хотя бы на типовую конфигурацию 7.7. И в этом случае резко встает вопрос - как настраивать правила конвертации? стандартный способ переноса справочников для этой ситуации не подходит, поиск по коду счета не выполняется. К тому же, документации по конвертации 7.7 - 7.7 крайне мало. Мой вариант решения этой проблемы Вы сможете увидеть далее

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Правила обмена
.xml 162,31Kb
10
10 Скачать (1 SM) Купить за 1 850 руб.
Обработка "ВыгрузкаКонвертации", которой я пользуюсь
.epf 283,71Kb
5
5 Скачать (1 SM) Купить за 1 850 руб.

Дано:
1. Источник - Самописная конфигурация на базе БП Б-г знает каких годов, назовем ее "ТК Северный". В конфигурации присутствует документ "Выписка" с реквизитами таб.части "Приход" и "Расход" типа Число.
2. Приемник - БП 4.5 на платформе 7.7, в ней тоже присутствует документ "Выписка" с реквизитами таб.части "Приход" и "Расход".
3. В документе "Выписка", как в источнике, так и в приемнике, есть реквизит "КоррСчет" (в источнике "КорСчет", с одной "Р"), в источнике это справочник "ПланСчетов", в приемнике - счет плана счетов "Основной"

Как известно, при конвертации данных, когда источник является конфигурацией на платформе 7.7, можно передавать произвольные данные через дополнительные XML-узлы. Таким образом в книге Бояркина и Филатова описан способ передачи значений периодических реквизитов (кому интересно, стр. 143).
Мы используем этот алгоритм, только не совсем так, как описано в книге, вернее, не совсем для этих целей.
Алгоритм действий следующий: по скольку при конвертации данных 7.7- 7.7 не работают половина фишек и возможностей КД, конвертацию документа "Выписка" придется разбить на два этапа:
1) Перенос данных самого документа (шапки) и табличной части без установки реквизита "КоррСчет".
2) Перенос реквизита "КоррСчет".  При этом будут запомнены и сохранены в дополнительный XML-узел значения реквизита "КорСчет" документа-источника, а затем будет прочитан дополнительных XML-узел с кодами счетов.
Второй этап нужен только потому, что в 7.7 не работает обработчик "ПослеЗагрузки". При попытке совместить эти два ПКО в обработчике "ПриЗагрузке" Объект.КоличествоСтрок() возвращает 0, что логично, так как объект еще не записан, и даже вызов метода Записать(), ровно как и ОткрытьФормуМодально(Объект,,0) не дают совершенно ничего. А в обработчике "ПослеЗагрузки" не доступны дополнительные XML-узлы.

При использовании второго ПКО объект будет уже записан в базу на момент, когда будет выполняться второе ПКО, что позволит решить нашу проблему с поиском счета в ИБ.

Gentlemen, start your engines
Первым делом, создадим правило конвертации объекта (ПКО) для документа "Выписка", приемником в котором является документ "Выписка" ИБ-приемника
ПКО

(рис.1)

 ПКО

(рис.2) - табличная часть

Обратите внимание, что на рис.2 для реквизитов Субконто1 и Субконто2 правило конвертации свойства (ПКС) не задано. Что это означает? это означает, что Субконто1 и Субконто2 могут быть различных типов, и мы не можем заранее знать и указать конкретное ПКС. Если не указывать ПКС, система попытается автоматически подобрать подходящее. То есть достаточно, чтобы в наборе правил конвертации присутствовало ПКО с источником и приемником такими, какие попадутся при выгрузке.
Этим правилом мы перенесем все нужные реквизиты шапки документа, его табличную часть, но без реквизита "КоррСчет"

Далее, создадим ПКО "Выписка_СтрокиТЧ". Внешний вид на (рис.3)

ПКО

В обработчик "ПриВыгрузке" ПКО "Выписка_СтрокиТЧ" пишем


Если Источник.ВыбратьСтроки() = 1 Тогда

   
УзелСпискаСчетов = СоздатьУзел("СчетаПроводок");

    Пока
Источник.ПолучитьСтроку()=1 Цикл

       
Значение = Источник.КорСчет//КорСчет с одной буквой "Р"

       
Если ПустоеЗначение(Значение) = 0 Тогда

           
КодСчета = СокрЛП(Значение.Код);

           
КодВБазеПриемнике = "";

            Если
КодСчета = "060" Тогда

               
КодВБазеПриемнике = "60.1";

            ИначеЕсли
КодСчета = "062" Тогда

               
КодВБазеПриемнике = "62.1";

            ИначеЕсли
КодСчета = "044" Тогда

               
КодВБазеПриемнике = "44.1.1";

            ИначеЕсли
КодСчета = "66.3" Тогда

               
КодВБазеПриемнике = "66.3";

            Иначе

               
//Дополняем по факту

               
Сообщить("!! Не указано соответствие для счета <"+КодСчета+">. Обратитесь к разработчику!");

            КонецЕсли;

        КонецЕсли;

        Если
КодВБазеПриемнике <> "" Тогда

           
УзелЗначения = СоздатьУзел("Счет");

           
УстановитьАтрибут(УзелЗначения, "Код", КодВБазеПриемнике);

           
ДобавитьПодчиненный(УзелСпискаСчетов, УзелЗначения);

        КонецЕсли;

    КонецЦикла;

   
ДобавитьПодчиненный(Приемник, УзелСпискаСчетов);

КонецЕсли;


В обработчик "ПриЗагрузке" ПКО "Выписка_СтрокиТЧ" пишем //Славьте лапти, что хотя бы "ПриЗагрузке" в 7.7 работает


УзлыСчетов= Узел.ВыбратьУзлы("СчетаПроводок");

Счет = СоздатьОбъект("Счет.Основной");

СпНайденныхСчетов = СоздатьОбъект("СписокЗначений");

Для
СчУзлов = 0 По УзлыСчетов.КоличествоУзлов - 1 Цикл

   
КонкретныйУзел = УзлыСчетов.ПолучитьУзел(СчУзлов);
   
Выборка = КонкретныйУзел.ВыбратьУзлы("Счет");

    Для
Сч =0 По Выборка.КоличествоУзлов - 1 Цикл

       
УзелЗначения = Выборка.ПолучитьУзел(Сч);

       
Код = УзелЗначения.ПолучитьАтрибут("Код");

        Если
Счет.НайтиПоКоду(Код) = 1 Тогда
           
СпНайденныхСчетов.ДобавитьЗначение(Счет.ТекущийСчет());
        Иначе
           
Сообщить("Не найден счет по коду <"+Код+">! Срочно обратитесь к разработчику!","!!!");
        КонецЕсли;

    КонецЦикла;

КонецЦикла;

СколькоСчетов = СпНайденныхСчетов.РазмерСписка();

Если СколькоСчетов > 0 Тогда

   
СколькоСтрок = Объект.КоличествоСтрок();

    Если
СколькоСтрок <> СколькоСчетов Тогда

       
Сообщить("Для документа "+ Объект +" количество строк и количество счетов различаются: "+ СколькоСтрок + " <> "+ СколькоСчетов);

    Иначе

        Если
Объект.ВыбратьСтроки()= 1 Тогда

            Пока
Объект.ПолучитьСтроку()=1 Цикл

               
НайденныйСчет = СпНайденныхСчетов.ПолучитьЗначение(Объект.НомерСтроки);

               
Объект.КоррСчет = НайденныйСчет.ТекущийСчет();

           
КонецЦикла;
        КонецЕсли;

   
КонецЕсли;
КонецЕсли;


Кстати. Рекомендую использовать переписанную под КД 2.1.3.1 обработку , которая позволяет использовать GCOMP. Экономит кучу времени. Помнится мне, что я что-то в ней менял для работы в КД 2.1.5.1, поэтому свою прикрепляю к публикации.

Теперь создадим правила выгрузки данных (ПВД) для наших ПКО "Выписка" и "Выписка_СтрокиТЧ"
В обработчик "ПередОбработкой" каждого пишем код


ВыборкаДанных = СоздатьОбъект("СписокЗначений");
ВходящиеПараметрыАлгоритма = СоздатьОбъект("СписокЗначений");
ВходящиеПараметрыАлгоритма.ДобавитьЗначение(Правило, "Правило");
ВходящиеПараметрыАлгоритма.ДобавитьЗначение(ВыборкаДанных, "ВыборкаДанных");
ПолучитьВыборкуДокументов(, ВходящиеПараметрыАлгоритма);

Алгоритм "ПолучитьВыборкуДокументов" можно скопировать из любых типовых правил конвертации, этот алгоритм выгружает документы с учетом указанных дат начала и конца периода, а также выбранной в параметре организации. И не забываем поправить "Способ выборки" на "Произвольный алгоритм", иначе не взлетит, ну вобще никак не взлетит, правда.

При загрузке данных сперва отрабатывает ПКО "Выписка", загружаются документы и их табличные части, затем отрабатывает правило "Выписка_СтрокиТЧ", которое подгружает значения поля "КоррСчет". Не забываем убедиться в этом, проверив значения реквизита "Порядок выполнения". То правило, где значение меньше, выполняется раньше. У меня для ПКО "Выписка" это соответственно 150, а для ПКО "Выписка_СтрокиТЧ" соответственно 200.

Итог вы можете видеть на рис.4 - "было"

 Было

и рис.5. - "стало". Здесь на скриншот не попала последняя строка, где контрагент "Теплотехника" и число в графе "приход", но она там точно есть, поверьте)

Стало

Буду рад любым замечаниям и предложениям. Да, это велосипед, и, господа, пожалуйста, давайте не будем превращать коменты к публикации в обсуждение "зачем тебе конвертация 7.7 - 7.7, давно пора валить на восьмерку". Просто вот есть такие требования, такая задача и вот такое сугубо мое решение.

Буду рад, если кому-то пригодится, а так же дополнениям и исправлениям ошибок.

В публикации для раскраски кода использована Разукрашка 

См. также

SALE! 20%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 22338 руб.

12.06.2017    141457    798    297    

419

SALE! 10%

Перенос данных 1C Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

55778 50200 руб.

04.08.2015    166416    332    277    

373

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.234.x) и БП 3.0 (3.0.161.x). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    23984    169    51    

127

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    51173    228    69    

184

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    36565    94    66    

89

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171152    303    257    

378

SALE! 15%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Платформа 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 13005 руб.

18.02.2016    186851    589    509    

526

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    80625    312    250    

264
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. volha-77 19 19.03.14 21:47 Сейчас в теме
Что-то я не поняла, Вы рекомендуете использовать доработанную обработку для выгрузки, но она же для 8-ки. А статья вроде про перенос 7.7.
2. demon_infernal 41 19.03.14 22:10 Сейчас в теме
(1) volha-77,
Обработка, приложенная к публикации, заменяет собой одноименную обработку из конфигурации "Конвертация Данных" v2.1.5.1, которая на платформе 8.2. Выгружает правила конвертации и сама собирает готовые к использованию обработки V77exp.ert и V77Imp.ert для платформы 7.7 (при условии установленного GCOMP).
3. volha-77 19 20.03.14 02:31 Сейчас в теме
4. volha-77 19 20.03.14 17:42 Сейчас в теме
А еще не подскажете, как сделать, чтобы в обработке загрузки для 7.7 не генерировался вызов функции ЗафиксироватьОшибку? всегда приходится закомменчивать
5. demon_infernal 41 20.03.14 18:03 Сейчас в теме
(4) volha-77, не понял, зачем комментировать эти вызовы? Никогда ничего подобного не делал, все работало.
Чем Вам мешает вызов этой функции?
6. volha-77 19 20.03.14 18:16 Сейчас в теме
просто эта фукнция в генерируемой обработке загрузки не определена, а только вызывается (может дело в версии конвертации - у меня 2.0.26.1, более новую не нашла, доступа к ИТС нет)
7. volha-77 19 20.03.14 18:16 Сейчас в теме
и программа не проходит синтаксический контроль
8. demon_infernal 41 20.03.14 21:02 Сейчас в теме
(7) volha-77,
ну конечно, у вас очень старая версия. Хотя и в новых версиях не все гладко с переносом 7.7 - 7.7... Могу порекомендовать обновить КД хотя бы на 2.1.5.1 (я начал свое знакомство с КД именно этой версии, и никогда подобных ситуаций, как у Вас, не случалось)
9. volha-77 19 22.03.14 00:54 Сейчас в теме
нашла выход - добавила заглушку этой фукнции в глобальный модуль конфигурации-приемника. А еще можно вопрос? как перенести остатки с помощью документа Операция из 7.7 в 7.7 с помощью КД2 ? В ПКС семерочной операции не видна табличная часть (самое важное - счета, суммы) - т.е. все примеры из книг не действуют. Это вообще возможно сделать?
10. demon_infernal 41 22.03.14 03:51 Сейчас в теме
(9) volha-77,
ну как это "примеры из книг не действуют", когда Бояркин&Филатов, страница 147 ?
Как раз там описан способ переноса проводок из документа "Операция" 7.7, который не имеет табличной части, в документ "операция" 8.х. Адаптировать решение под 7.7 не составит большого труда.
11. volha-77 19 22.03.14 11:01 Сейчас в теме
(10) спасибо за ответ. Но что-то я все равно не догоняю. В том примере переопределяется КоллекцияОбъектов восьмерки-приемника из проводок источкика-семерки. Делается все это как обычно до выгрузки. У меня приемник - семерка, там не будет коллекции объектов, т.к. док. Операция не имеет табличной части. Тут наверно другой какой-то подход нужен.
12. demon_infernal 41 22.03.14 15:52 Сейчас в теме
(11) volha-77, на диске, прилагаемом к Б&Я, есть пример конвертации 7.7 - 7.7 (в приложении). Открыл, посмотрел - там используется событие "ПослеЗагрузки" документа "Операция", но я почему то всегда был уверен, что в 7.7 это не работает.
В любом случае, вы можете подсмотреть там способ переноса проводок в документ "Операция". Принцип такой: на этапе выгрузки формируем собственный XML-блок, записываем в него проводки, на этапе загрузки этот XML-блок читаем. В этой статье как раз я описываю подобный случай, посмотрите выше.
Так, кстати, любые данные можно перенести, для которых не подходят стандартные варианты конвертации.
Прикрепленные файлы:
1Cv8.1CD
13. volha-77 19 22.03.14 22:20 Сейчас в теме
(12) Спасибо большое за помощь!
14. volha-77 19 25.03.14 14:45 Сейчас в теме
Еще образовался вопрос. Я переношу счета документов, как написано в Вашей статье. Если у правила есть источник и приемник, то все получилось. Подскажите, пожалуйста, как быть, если у документа нет источника (в базе приемнике создается документ ВводДолга на основании выборки из бух. итогов). Т.е. обработчик ПередОбработкой у 1-го правила выгрузки данных уже заполнен, и плюс еще проблема в том, что для алгоритма ПолучитьВыборкуДокументов должен быть источник выборки, а у меня его нет.
15. demon_infernal 41 25.03.14 16:10 Сейчас в теме
(14) volha-77, алгоритм ПолучитьВыборкуДокументов заполняет переданный вторым параметром список значений, который в событии "ПередОбработкой" ПВД помещается в переменную "ВыборкаДанных". Это специальная переменная для именно этого события, подробнее в справке.
Смысл в чем: алгоритм этот в том виде, в каком он представлен в типовых правилах, вам и не нужен.
Можно сделать так: в ПВД назначается ПКО, в обработчике "ПередОбработкой" пишется примерно следующее:
ВыборкаДанных = СоздатьОбъект("ТаблицаЗначений");

Идентификаторы колонок таблицы должны соответствовать наименованиям ПКС в ПКО, по которому будет происходить выгрузка.
Далее с помощью запроса, или как угодно еще, эта таблица заполняется, и все.
Или, как вариант, посмотрите в сам алгоритм "ПолучитьВыборкуДокументов" и вместо запроса к документам вставьте свой запрос, который формирует нужную таблицу с данными из итогов.
16. volha-77 19 25.03.14 18:33 Сейчас в теме
(15) я так и делаю. В моем правиле выгрузки данных обрабатываются итоги и заполняется ТЗ ВыборкаДанных. Весь вопрос в том, что у конфигурации-приемника в документах реквизиты-счета имеют тип "Счет", а не "ПланСчетов.Основной". В КД2 у таких реквизитов колонка тип поля-приемника остается не заполненным, и эти реквизиты так просто не переносятся, хоть плачь. Когда переносится обычный документ, я их тогда записываю в доп. узлы,и потом переношу, после основного правила (создается 2 ПКО, и 2ПКД, как написано у Вас в статье). Но с документом Ввод долга так не получилось, у документа нет источника, и ТЗ ВыборкаДанных уже мной определена, и нельзя еще раз написать туда
ВыборкаДанных = СоздатьОбъект("СписокЗначений");
ВходящиеПараметрыАлгоритма = СоздатьОбъект("СписокЗначений");
ВходящиеПараметрыАлгоритма.ДобавитьЗначение(Правило, "Правило");
ВходящиеПараметрыАлгоритма.ДобавитьЗначение(ВыборкаДанных, "ВыборкаДанных");
ПолучитьВыборкуДокументов(, ВходящиеПараметрыАлгоритма);

и плюс функции ПолучитьВыборкуДокументов тоже требуется объект выборки, а у меня его нет.
17. demon_infernal 41 25.03.14 19:03 Сейчас в теме
(16) volha-77, я себе представляю это так:
Нужно создать два ПВД и два ПКО (с одинаковыми полями поиска), источник пустой, приемник - документ ВводДолга.
Первым ПВД выгружаем весь документ, кроме реквизита "Счет".
Вторым ПВД выгружаем только номера строк и значения "Счет". Доп.узлы можно попробовать формировать во втором ПВД в событии "ПослеВыгрузки".
18. volha-77 19 25.03.14 20:28 Сейчас в теме
(17) извините что надоедаю, просто я еще только изучаю конвертацию и так с полуслова не понимаю. Т.е. не надо во 2-м ПКО писать обработчики ПриВыгрузке и ПриЗагрузке (в статье там формируются и загружаются доп. узлы)? а надо именно в ПВД? А где тогда загружать? А номера строк выгружать тоже через доп. узлы?
19. demon_infernal 41 25.03.14 21:31 Сейчас в теме
(18) volha-77, сейчас еще подумал - нет, не надо в ПВД ничего делать.
Проблема в чем была? В том, что если у ПКО объект-источник - это определяемая в событии "ПереодОбработкой" ПВД таблица значений - у вас чего то не срабатывало. И, как я понял, проблема в том, что у вас не получается адаптировать алгоритм ПолучитьВыборкуДокументов к запросу к бухитогам.
Вы пишите, что алгоритму ПолучитьВыборкуДокументов требуется объект выгрузки. Не знаю, в моем варианте не требуется никакой объект.. На всякий случай, привожу текст алгоритма ПолучитьВыборкуДокументов, который я использую:
// Получает для выгрузки выборку документов с учетом отбора по балансодержателю в пределах периода
//
// Входящие данные:
//  Правило - Правило выгрузки документа, т. е. параметр ПВД Правило
//  ВыборкаДанных - СписокЗначений, состоящий из документов, подлежащих выгрузке
//
// ИсходящиеДанные:
//  Нет
//


Правило = ВходящиеДанные.Получить("Правило");
ВыборкаДанных = ВходящиеДанные.Получить("ВыборкаДанных");


Если (Параметры.ПериодОкончание >= Параметры.ПериодНачало) Тогда

	// Получить имя документа
	Префикс = "ДокументСсылка.";
	ПрефиксДлина = СтрДлина(Префикс);
	ИмяДокумента = Сред(Правило.ОбъектВыборки, ПрефиксДлина + 1);	
	
	
	ВыборкаЗапрос = СоздатьОбъект("Запрос");

	НачДата = Параметры.ПериодНачало;
	КонДата = Параметры.ПериодОкончание;

	ТекстЗапроса = 
	"
	|Период с НачДата по КонДата;
	|ОбрабатыватьДокументы все;
	|Обрабатывать НеПомеченныеНаУдаление;
	|Без итогов;
	|ТекущийДокумент = Документ." + ИмяДокумента + ".ТекущийДокумент;
	|ВыбраннаяФирма = Документ." + ИмяДокумента + ".Фирма;
	|Группировка ТекущийДокумент упорядочить по ТекущийДокумент.ДатаДок;
	|";
	
	Если (ВыборкаЗапрос.Выполнить(ТекстЗапроса) = 1) Тогда
		
		Пока (ВыборкаЗапрос.Группировка() = 1) Цикл
			
			ТекущийДокумент = ВыборкаЗапрос.ТекущийДокумент;	
			ВыборкаДанных.ДобавитьЗначение(ТекущийДокумент);
			
		КонецЦикла;	
		
	КонецЕсли;
КонецЕсли;
Показать


В ПВД в событии "ПередОбработкой" алгоритм вызываю так:
ВыборкаДанных = СоздатьОбъект("СписокЗначений");

ВходящиеПараметрыАлгоритма = СоздатьОбъект("СписокЗначений");
ВходящиеПараметрыАлгоритма.ДобавитьЗначение(Правило, "Правило");
ВходящиеПараметрыАлгоритма.ДобавитьЗначение(ВыборкаДанных, "ВыборкаДанных");

ПолучитьВыборкуДокументов(, ВходящиеПараметрыАлгоритма);

Мне вобще уже кажется, что можно вместо двух ПВД и двух ПКО обойтись одним ПВД и одним ПКО.. Выложите свои правила обмена, и если получится - md*шники исходной и результирующих баз, я попробую сам.
20. volha-77 19 25.03.14 22:18 Сейчас в теме
(19) спасибо за ответ. можно я Вам мд-шники на e-mail отправлю? Мой адрес volha-77@mail.ru. Напишите что-нибудь туда пож., а я обратно скину. Правила выкладываю.
Прикрепленные файлы:
ПравилаОбменаДанными1.xml
21. volha-77 19 26.03.14 00:03 Сейчас в теме
22. M_Volkov 5 07.02.19 11:27 Сейчас в теме
Столкнулся с проблемой при обмене 7-них баз одной конфигурации: не переносятся не предопределенные счета, созданных не в конфигураторе. Эта проблема решаема КД2?
23. demon_infernal 41 07.02.19 15:01 Сейчас в теме
Решаема. Для плана счетов нужно создать ПКС для реквизита "код" (или любого другого реквизита, по которому нужно искать счет в базе-приемнике) и указать, что по нему производится поиск.
Прикрепленные файлы:
24. M_Volkov 5 07.02.19 15:30 Сейчас в теме
(23) Не помогает!? Создал новое ПКО Основной (старое ПКО с заполненой вкладкой "Конвертация значений" переименовал в ОсновнойПредопределенный) с ПКС: Код, Наименование, ПометкаУдаления, с поиском по коду, с пустой вкладкой "Конвертация значений". Ошибки выгрузки: "Значение не найдено: 80.1"... исчезли, но не предопределенные счета не переносятся, в документах счета пустые!?
25. M_Volkov 5 08.02.19 12:52 Сейчас в теме
(23) Смотрю файл выгрузки, где счет предопределенный:
- <Свойство Имя="КоррСчет" Тип="ПланСчетовСсылка.Основной">
<Значение>86.3</Значение>
</Свойство>

а где нет:
- <Свойство Имя="КоррСчет" Тип="ПланСчетовСсылка.Основной">
- <Ссылка Нпп="42">
- <Свойство Имя="Код" Тип="Строка">
<Пусто />
</Свойство>
</Ссылка>
</Свойство>

Дописал в ПКС_Основной_Код_ПередВыгрузкойСвойства
Значение = Источник.Код;

стало:
- <Свойство Имя="КоррСчет" Тип="ПланСчетовСсылка.Основной">
- <Ссылка Нпп="10">
- <Свойство Имя="Код" Тип="Строка">
<Значение>80.1</Значение>
</Свойство>
</Ссылка>
</Свойство>

но не предопределенные счета не грузятся, пустые!? Что прописать в ПКО_Основной_ПослеЗагрузкиОбъекта?
26. пользователь 10.02.19 16:30
Сообщение было скрыто модератором.
...
Оставьте свое сообщение