8.х ОБМЕН Конвертация данных - перенос движений документов

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем eViLL, 2 июн 2014.

  1. TopicStarter Overlay
    eViLL
    Offline

    eViLL Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    264
    Симпатии:
    2
    Баллы:
    29
    Переношу самописные документы (они одинаковые в двух нетиповых конфигурациях УПП как и регистры) и нужно вместе с документами перенести движения их по двум регистрам бухгалтерии и регистру накопления. Никак не пойму как в конвертации сделать чтобы движения документа тоже захватывались. Переносятся только документы.
    --- Объединение сообщений, 2 июн 2014 ---
    Я добавил эти регистры вручную (автоматом они не создаются) сопоставил их реквизиты. Добавил правила выгрузки (автоматом). Не хотят выгружаться всё равно.
    Последнее редактирование: 2 июн 2014
  2. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    Вопрос. Зачем?
  3. TopicStarter Overlay
    eViLL
    Offline

    eViLL Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    264
    Симпатии:
    2
    Баллы:
    29
    вот такая вот хреновая ситуация что ни у кого нету прав перепровести документы в закрытом периоде. Надо всё сделать задним числом.
  4. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    В смысле ни у кого? С полными правами нет пользователя чтоли?
  5. TopicStarter Overlay
    eViLL
    Offline

    eViLL Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    264
    Симпатии:
    2
    Баллы:
    29
    будем считать что нет
  6. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    Мой мозг с трудом понимает такое. Ну да ладно. В процедуре ПередОбработкой нужного правила выгрузки данных пишите код, в котором выбираете нужные документы со всеми необходимыми реквизитами, а также выбираете данные из регистров нужных. Затем с помощью ВыгрузитьПоПравилу выгружаете и документы и регистры с регистратором.
  7. TopicStarter Overlay
    eViLL
    Offline

    eViLL Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    264
    Симпатии:
    2
    Баллы:
    29
    Подробнее. Чтоэто?
    --- Объединение сообщений, 2 июн 2014 ---
    Мммм... запросом?
  8. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    Хорошо.
    Есть "правила конвертации свойств" и есть "правила выгрузки данных". В "правиле Выгрузки данных" необходимо прописать код, в котором Вы создадите структуру с данными и выгрузите по правилу (это функция такая). Выгрузите по правилу конвертации свойств.
    Приблизительно как то так:
    Код:
    тОтборСклад = "";
    Если ЗначениеЗаполнено(Параметры.Склад) Тогда
        тОтборСклад = тОтборСклад + " И ПоступлениеТоваровУслуг.Склад = &Склад ";
    КонецЕсли;
    тОтборОрганизация = "";
    Если ЗначениеЗаполнено(Параметры.Организация) Тогда
        тОтборОрганизация = тОтборОрганизация + " И ПоступлениеТоваровУслуг.Организация = &Организация ";
    КонецЕсли;
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПоступлениеТоваровУслуг.Ссылка,
    |    ПоступлениеТоваровУслуг.НаименованиеДокументаРасхода,
    |    ПоступлениеТоваровУслуг.ПометкаУдаления,
    |    ПоступлениеТоваровУслуг.Номер,
    |    ПоступлениеТоваровУслуг.Дата,
    |    ПоступлениеТоваровУслуг.УчитыватьНДС,
    |    ПоступлениеТоваровУслуг.ДоговорКонтрагента,
    |    ПоступлениеТоваровУслуг.Контрагент,
    |    ПоступлениеТоваровУслуг.Склад,
    |    ПоступлениеТоваровУслуг.СуммаДокумента,
    |    ПоступлениеТоваровУслуг.Грузоотправитель,
    |    ПоступлениеТоваровУслуг.Грузополучатель,
    |    ПоступлениеТоваровУслуг.ДатаВходящегоДокумента,
    |    ПоступлениеТоваровУслуг.НомерВходящегоДокумента,
    |    ПоступлениеТоваровУслуг.Организация,
    |    ПоступлениеТоваровУслуг.Ответственный
    |ИЗ
    |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    |ГДЕ
    |    ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    |    И ПоступлениеТоваровУслуг.Проведен
    |    И ПоступлениеТоваровУслуг.АвансовыйОтчет " + тОтборСклад + "" + тОтборОрганизация +"
    |
    |СГРУППИРОВАТЬ ПО
    |    ПоступлениеТоваровУслуг.Ссылка,
    |    ПоступлениеТоваровУслуг.НаименованиеДокументаРасхода,
    |    ПоступлениеТоваровУслуг.ПометкаУдаления,
    |    ПоступлениеТоваровУслуг.Номер,
    |    ПоступлениеТоваровУслуг.Дата,
    |    ПоступлениеТоваровУслуг.УчитыватьНДС,
    |    ПоступлениеТоваровУслуг.ДоговорКонтрагента,
    |    ПоступлениеТоваровУслуг.Контрагент,
    |    ПоступлениеТоваровУслуг.Склад,
    |    ПоступлениеТоваровУслуг.СуммаДокумента,
    |    ПоступлениеТоваровУслуг.Грузоотправитель,
    |    ПоступлениеТоваровУслуг.Грузополучатель,
    |    ПоступлениеТоваровУслуг.ДатаВходящегоДокумента,
    |    ПоступлениеТоваровУслуг.НомерВходящегоДокумента,
    |    ПоступлениеТоваровУслуг.Организация,
    |    ПоступлениеТоваровУслуг.Ответственный";
    Запрос.УстановитьПараметр("ДатаНачала"   , ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ДатаОкончания));
    Запрос.УстановитьПараметр("Организация"  , Параметры.Организация);
    Запрос.УстановитьПараметр("Склад"        , Параметры.Склад);
    РезультатЗапроса = Запрос.Выполнить();
    Если НЕ РезультатЗапроса.Пустой() Тогда
        Параметры.Выгрузка_АвансовыйОтчет_ПрошлаУспешно = Истина;
        Сообщить("НАЧАЛО ВЫГРУЗКИ. АВАНСОВЫЙ ОТЧЕТ... " + ТекущаяДата());
        ВыборкаПоступлений = Запрос.Выполнить().Выбрать();
        Пока ВыборкаПоступлений.Следующий() Цикл
            ЗапросТоваров = Новый Запрос;
            ЗапросТоваров.Текст =
            "ВЫБРАТЬ
            |    ПоступлениеТоваровУслугТовары.Номенклатура,
            |    ПоступлениеТоваровУслугТовары.ЕдиницаИзмерения,
            |    ПоступлениеТоваровУслугТовары.Коэффициент,
            |    ПоступлениеТоваровУслугТовары.Количество,
            |    ПоступлениеТоваровУслугТовары.Цена,
            |    ПоступлениеТоваровУслугТовары.Сумма,
            |    ПоступлениеТоваровУслугТовары.СтавкаНДС,
            |    ПоступлениеТоваровУслугТовары.СуммаНДС
            |ИЗ
            |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
            |ГДЕ
            |    ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка";
            ЗапросТоваров.УстановитьПараметр("Ссылка", ВыборкаПоступлений.Ссылка);
            Товары = ЗапросТоваров.Выполнить().Выгрузить();
            Товары.Колонки.Добавить("ВидДокВходящий"         , Новый ОписаниеТипов("Строка"));
            Товары.Колонки.Добавить("ДатаВходящегоДокумента" , Новый ОписаниеТипов("Дата"));
            Товары.Колонки.Добавить("НомерВходящегоДокумента", Новый ОписаниеТипов("Строка"));
            Товары.ЗаполнитьЗначения(ВыборкаПоступлений.НаименованиеДокументаРасхода, "ВидДокВходящий");
            Товары.ЗаполнитьЗначения(ВыборкаПоступлений.ДатаВходящегоДокумента      , "ДатаВходящегоДокумента");
            Товары.ЗаполнитьЗначения(ВыборкаПоступлений.НомерВходящегоДокумента     , "НомерВходящегоДокумента");
            ВходящиеДанныеАвансовогоОтчета = Новый Структура();
            ВходящиеДанныеАвансовогоОтчета.Вставить("Дата"                   , ВыборкаПоступлений.Дата);
            ВходящиеДанныеАвансовогоОтчета.Вставить("Организация"            , ВыборкаПоступлений.Организация);
            ВходящиеДанныеАвансовогоОтчета.Вставить("Склад"                  , ВыборкаПоступлений.Склад);
            ФизЛицоКод_Параметр = "";
            Выполнить(Алгоритмы.ПолучитьКодФизЛицаАвансовогоОтчетаПоСкладу);
            ВходящиеДанныеАвансовогоОтчета.Вставить("ФизЛицоКод_Параметр"    , ФизЛицоКод_Параметр);
            ВходящиеДанныеАвансовогоОтчета.Вставить("НДСВключенВСтоимость"   , Истина);
            ВходящиеДанныеАвансовогоОтчета.Вставить("НДСПредъявленКВычету"   , Истина);
            ВходящиеДанныеАвансовогоОтчета.Вставить("СуммаВключаетНДС"       , Истина);
            ВходящиеДанныеАвансовогоОтчета.Вставить("УчитыватьНДС"           , Истина);
            ВходящиеДанныеАвансовогоОтчета.Вставить("СуммаДокумента"         , ВыборкаПоступлений.СуммаДокумента);
            Ответственный  = ВыборкаПоступлений.Ответственный;
            Организация    = ВыборкаПоступлений.Организация;
            мОтветственный = Справочники.Пользователи.ПустаяСсылка();
            Выполнить(Алгоритмы.ПолучитьНужногоПользователя);
            ВходящиеДанныеАвансовогоОтчета.Вставить("Ответственный"          , мОтветственный);
            ВходящиеДанныеАвансовогоОтчета.Вставить("Комментарий"            , "");
            ВходящиеДанныеАвансовогоОтчета.Вставить("Товары"                 , Товары);
            ВыгрузитьПоПравилу(ВыборкаПоступлений.Ссылка, , ВходящиеДанныеАвансовогоОтчета, , "АвансовыйОтчет");
            ОбработкаПрерыванияПользователя();
        КонецЦикла;
    Иначе
        Сообщить("За период с " + Формат(ДатаНачала, "ДЛФ=D") + " по " + Формат(ДатаОкончания, "ДЛФ=D") + " не найдено документов ""Авансовый отчет""...", СтатусСообщения.Важное);
    КонецЕсли;
    Это пример процедуры ПередОбработкой из моих правил. Так более или менее понятно?
    eViLL нравится это.
  9. TopicStarter Overlay
    eViLL
    Offline

    eViLL Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    264
    Симпатии:
    2
    Баллы:
    29
    Почитал, да так наглядно, спасибо. В ПКО должно быть поступление товаров и все свойства в ПКС должны быть сопоставлены?
    Я вот подумал, документы я уже перенес, фиг с ними. А если перенести только движения регистров у которых тип регистратора, допустим Документы.МойДокумент? Как такое условие в ПВД задать?
  10. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    Так придется обрабатывать Данные уже в момент загрузки, а не выгрузки. Самый простой вариант это перевыгрузить все. Поиск документов по уникальному идентификатору. И задвоений не будет.
  11. TopicStarter Overlay
    eViLL
    Offline

    eViLL Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    264
    Симпатии:
    2
    Баллы:
    29
    Всмысле перевыгрузить всё? Проблем с документами нет, есть проблемы с их движениями.
  12. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    Я это понимаю. Просто не могу сказать встанут ли движения. Попробуйте, че гадать. Короче. Попробуйте выгружать движения документов. Посмотрните загрузится или нет. Либо придется при загрузке еще ковыряться. Отпишитесь о результаттах. Ну либо с документом перевыгрузите движения.
  13. TopicStarter Overlay
    eViLL
    Offline

    eViLL Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    264
    Симпатии:
    2
    Баллы:
    29
    Ниасиливаю. Решил через эксель файл перегрузить движения регистров по регистратору. :|
  14. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    Поверьте, через конвертацию это куда легче...
  15. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    действие раз - выгрузить описания конфигураций со снятой галкой "не выгружать движения документов"
    действие два - обновить этими описаниями конфигурации в конвертации
    после этого у вас появится возможность прямо в ПКО документа выбрать соответствие наборов записей их движений
    и не надо екселей
  16. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    А так разве перенесутся только движения как ему надо? Придется же документы перевыгружать...
  17. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    а документы перенесутся без замены свойств, если эти свойства в ПКО не делать
    если регистры переносить - все-равно регистратор тащить надо, так что без разницы, так нагляднее
    eViLL нравится это.
  18. TopicStarter Overlay
    eViLL
    Offline

    eViLL Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    264
    Симпатии:
    2
    Баллы:
    29
    То есть ПВД надо для документов-регистраторов делать? При этом в них никакие ПКС не делать?
  19. TopicStarter Overlay
    eViLL
    Offline

    eViLL Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    264
    Симпатии:
    2
    Баллы:
    29
    Нехорошее чувство, когда спустя несколько месяцев начинаешь гуглить такую же проблему, нагугливаешь свою же тему и понимаешь что с тех пор так нифига и не разобрался.-Banghead-
  20. TopicStarter Overlay
    eViLL
    Offline

    eViLL Опытный в 1С

    Регистрация:
    25 фев 2011
    Сообщения:
    264
    Симпатии:
    2
    Баллы:
    29
    На случай если я опять когда нибудь буду гуглить и нагуглю эту тему оставлю сообщение будущему себе:

    Для переноса движений по регистру накопления из копии, при условии что документы по идентификаторам в двух базах одинаковы надо сделать следующее:
    1. Выгрузить структуру баз со снятыми галочками "Не выгружать движения документов" и "Не выгружать регистры накопления". Загрузить в КД.
    2. Создать ПКО для требуемого регистра накопления, в конце создания КД попросит создать автоматически по ссылкам ПКО, согласиться.
    3. Пробежаться по всем созданным ПКО и проставить везде галочки "Не замещать существующие", "Не создавать новые если не найден", "При переносе по ссылке новый не создавать а переносить только ссылку" кроме документа, который является регистратором потерянных движений, и самого переносимого регистра.
    4. В ПКО документа-регистратора потерянных движений удалить ВСЕ ПКС кроме ПКС по движениям требуемого регистра накопления. (проследить что поиск документа-регистратора происходит только по идентификатору, и не по полям поиска).
    5. Создать ПВД для документа-регистратора.
    6. Перегрузить документ-регистратор между базами. Движения должны перекинуться, документ-регистратор остаться без изменений.
    s512 и alexburn нравится это.

Поделиться этой страницей