Конвертация движений документа

1. tyushik 12.11.12 10:42 Сейчас в теме
Добрый день. Помогите пожалуйста новичку с конвертацией.
Мне необходимо выгружать движения документа.
Как я поняла для этого необходимо привязываться к документам-регистраторам.
Таким образом получается, в базе источнике нужно регистрировать в плане обмена сам документ регистратор (сразу вопрос, обязательно ли регистрировать в плане обмена регистр накопления или движения должны сами подтягиваться?)
Далее в конвертации создаю ПКО док1-док2 и в его ПКС добавляю движения по моему регистру. Далее как я поняла нужно прописать ПВД, но здесь вопрос такой - ПВД должно быть только для документов или для регистра должно быть отдельное правило? Буду очень благодарна, если вы немножко мне проясните порядок действий, потому что пока мои разнообразные манипуляции к результату не привели.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RocKeR_13 1366 12.11.12 11:04 Сейчас в теме
(1) tyushik, а что мешает выгружать документы и проведить их в приемнике? Тогда он сразу создаст проводки по регистрам. Вот тут почитай http://infostart.ru/public/21069/
3. RocKeR_13 1366 12.11.12 11:06 Сейчас в теме
Единственное, что можно там добавить, так это проверку на пометку на удаление и статус проведения (такие документы проводить нам не надо)) и только проведенные документы записывать в параметр
4. tyushik 12.11.12 11:09 Сейчас в теме
Нет такой вариант мне не подойдет, у меня с одной стороны УТ - с другой УТ базовая. Документ, регистрирующий движения, - самописный, соответственно в базовую я его добавить не могу. Хочу выгружать самописный документ в Коррекрировку записей регистра. Сам регистр накопления типовой.
5. RocKeR_13 1366 12.11.12 11:15 Сейчас в теме
Так, вы создаете ПКО ТвойДокумент ---> КорректировкаРегистров, затем в приемнике его проводите и он делает все необходимые проводки. Или я опять вас неправильно понял?)
6. tyushik 12.11.12 11:23 Сейчас в теме
А на основании каких данных я буду делать движения в приемнике, если Корректировка сама по себе ничего не содержит?
METAL; crosby; +2 Ответить
7. RocKeR_13 1366 12.11.12 11:36 Сейчас в теме
Как это ничего не содержит?) А для чего же тогда она нужна?) Там же указываются, какие регистры редактируются и создаются соответствующие табличные части) А обязательно нужно в корректировку переносить? КД - отличный вариант для переноса данных между конфами, независимо от того, типовые они или нет. Если документ дописан в одной конфе - это не означает, что его нельзя перенести в другую
8. AlX0id 12.11.12 11:39 Сейчас в теме
Если документ дописан в одной конфе - это не означает, что его нельзя перенести в другую

Ключевое слово, что "с одной стороны УТ - с другой УТ базовая", то есть с одной стороны можно доработать конфу, а с другой (в базовой) - нет.
9. RocKeR_13 1366 12.11.12 11:42 Сейчас в теме
(8) И? Задача сводится к тому, чтобы правильно заполнить документ в приемнике (и не обязательно это означает, что необходимо редактировать конфу). Если бы везде одни и те же реквизиты были с одинаковыми названиями, то бы и КД не нужна была бы
12. AlX0id 12.11.12 11:51 Сейчас в теме
(9) RocKeR_13,
И? Задача сводится к тому, чтобы правильно заполнить документ в приемнике (и не обязательно это означает, что необходимо редактировать конфу).

Документ "Корректировка записей регистров" является всего лишь регистратором для всех регистров - как его "правильно" заполнить (а точнее его движения) в общем-то и есть вопрос.
14. RocKeR_13 1366 12.11.12 11:53 Сейчас в теме
(12) Не, в (9) я имел в виду не корректировку, а тот документ, который соответствует тому самописному, ибо корректировку заполнять будет посложнее (на первый взгляд)
10. RocKeR_13 1366 12.11.12 11:45 Сейчас в теме
tyushik, а подскажите, какого плана изменения в УТшке? Что-то добавлено, переименовано, удалено? (в том документе, что хотите в Корректировку перенести)
15. RocKeR_13 1366 12.11.12 11:54 Сейчас в теме
И снова возвращаюсь к (10): что вообще за документ и какого характера изменения
11. tyushik 12.11.12 11:49 Сейчас в теме
Документ Корректировка не содержит никаких данных, в нем физически нельзя ничего заполнить.
13. RocKeR_13 1366 12.11.12 11:51 Сейчас в теме
кгм, повторю вопрос: для чего он нужен?) Вот скрины (правда не из базовой)
16. Ice-D 13.12.12 00:23 Сейчас в теме
Схема примерно такая:

1) Как было сказано выше - создаем ПКО "ТвойДокумент ---> КорректировкаРегистров".

2) На каждый набор движений необходимый для документа создаем ПКС Источник - пусто,приемник параметр с произвольным именем (Желательно с именем регистра). Ставим галочку ПолучатьИзВходящихДанных.

3) Создаем для нашего ПКО ПВД и там пишем:

ВходящиеДанные = Новый Структура;

//Для Каждой нужной таблицы движений
Запрос =Новый Запрос;
Зпрос.Текст = "ВЫБРАТЬ
 *(или бла-бла-бла все нужные поля с нужными псевдонимами)
 ИЗ РегистрыНакопления.ИмяРегистра КАК Регистр
Где 
Регистр.Регистратор = &ССылка"

Запрос.УстановитьПараметр("ССылка", Объект.Ссылка);

ВходящиеДанные.Вставить("ИмяПараметраТаблицы, как задано в ПКС", Запрос.Выполнить().Выгрузить());

ВыгрузитьПоПравилу(Объект,,ВходящиеДанные,,ИмяПКО);//ИмяПКО по умолчанию должно получится "ТвойДокумент ---> КорректировкаРегистров"
Показать


4) Возвращаемся в наше ПКО и там в ПослеЗагрузки() пишем:

Объект.Записать();
//Для каждого нашего движения
ТаблицаДвижения = ПараметрыОбъекта["ИмяПараметраКакЗаданоВПКС"];

ТаблицаДвижения.ЗаполнитьЗначения("Регистратор", Объект.ССылка);//Если в таблице нет колонки, соответственно ее добавить и не забыть тоже самое с периодом.

//и тут надо еще не забыть для отображения в форме заполнить ТЧ ТаблицаРегистровНакопления и свединия если есть

СтрокаТЧ = ТаблицаРегистровНакопления.Добавить();

СтрокаТЧ.Имя = "ИмяРегистра";
СтрокаТЧ.Представление = "СинонимРегистра"
Показать



В общем схему набросал. Писал сходу, синтаксису прошу не доверять))) Главное, чтоб идея была понятна.
Буду вопросы, прокомментирую участки подробнее.
17. neyaka 13.12.12 15:32 Сейчас в теме
(16)У меня такая же задача стоит. Попробовала по этой схеме.

2) На каждый набор движений необходимый для документа создаем ПКС Источник - пусто,приемник параметр с произвольным именем (Желательно с именем регистра). Ставим галочку ПолучатьИзВходящихДанных.

Параметр сделала. Передаю в него таблицу значений, полученную запросом. Отладчиком проверила - таблица значений формируется. Но в файле обмена параметр не заполняется, и вообще не выгружается. Когда передаю в него строковое значение (для проверки) - он выгружается в файл. Передаю таблицу значений - не выгружается.
18. neyaka 14.12.12 08:19 Сейчас в теме
Вот я.... Получилось создать корректировку записей регистров с движениями. Нужно было когда выгружаешь метаданные конфигурации снять галки с не выгружать данные регистров накопления и не выгружать движения документа. Потом в ПКО добавляем группу движений нужного регистра, как обычную табличную часть, в ней создаем ПКС для всех колонок регистра.
(16) В ПВД в структуру ВходящиеДанные добавляем таблицу движений регистра, которая пойдет не в параметр, а в эту табличную часть движений. А дальше все как обычно, когда данные передаются не из источника, а из входящих данных в документ.

Можно ещё посмотреть "Книга знаний. Как правильно пользоваться переносом остатков 7.7 - 8.0 с помощью КД 2.0". Там как раз подробно описывается как создать документ корректировка регистров, у меня с первого раза не получилось, потому что движений документа то я не выгрузила)
36. improg 709 10.09.20 09:12 Сейчас в теме
(16) Не отработал данный вариант, прописал заполнение набора таким образом:


УправленческаяОрганизация = Справочники.Организации.УправленческаяОрганизация;
Объект.Организация = УправленческаяОрганизация;

Объект.Записать();

Регистратор = Объект.Ссылка;
Набор = РегистрыНакопления.ДанныеОНачисленияхДляРасчетаСреднегоЗаработкаОбщий.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Регистратор);
Набор.Прочитать();
Для каждого Строка Из Набор Цикл
	Строка.Организация = УправленческаяОрганизация;
КонецЦикла;
Набор.Записать();
Показать



19. neyaka 14.12.12 09:21 Сейчас в теме
Создаю ПВД, Объект выборки пустой, способ выборки произвольный алгоритм, правило конвертации КорректировкаЗаписейРегистров. (у меня загружается регистр ЗаказыПокупателей в УПП) Перед обработкой пишу.
	//Табличня часть документа ТаблицаРегистровНакопления
	ТаблицаРегистровНакопления = Новый ТаблицаЗначений;
	ТаблицаРегистровНакопления.Колонки.Добавить("Имя");
	ТаблицаРегистровНакопления.Колонки.Добавить("Представление");
	
	НоваяСтрока = ТаблицаРегистровНакопления.Добавить();
	НоваяСтрока.Имя = "ЗаказыПокупателей";
	НоваяСтрока.Представление = "Заказы покупателей";

	//таблица движений по регистру Заказы покупателей
	ЗаказыПокупателей = Новый ТаблицаЗначений;
        ЗаказыПокупателей.Колонки.Добавить("ДоговорКонтрагента"); //и т.д. все колонки, кроме регистратора, не забыть ВидДвижения и Период

Запрос = Новый Запрос;
//тут запрос, получаеющий нужные данные, у меня это остатки на период, потом любым способом помещаем результат в таблицу значений ЗаказыПокупателей 

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


         ВыгрузитьПоПравилу(,, ВходящиеДанные,, "КорректировкаЗаписейРегистров");
Показать



тут всё. в самом ПКО КорректировкаЗаписейРегистров. Источник - пусто, приемнки документ корректировки. Никакого кода в обработчиках нет. В ПКС добавлены: Комментарий - получать из входящих данных, Дата - получать из входящих данный. И две табличные части - ТаблицаРегистровНакопления и ЗаказыПокупателей. Галки получать из входящих данных для табличных частей нет. В ПКС ПередОбработкой указываем

КоллекцияОбъектов = ВходящиеДанные.ЗаказыПокупателей;


и в ПКС колонок табличной части:
Значение = ОбъектКоллекции.ДоговорКонтрагента;


и так для всех нужных колонок, кроме Регистратор. Регистратор не добавляем в табличную часть вообще!!! При загрузке он сам привязывается к выгруженному документу.

для тч ТаблицаРегистровНакопления аналогично всё. Её можно и в коде конечно задать, как Ice-D предлагал, но у меня по этому правилу разные регистры выгружаются, проще ее в ПВД определять.

Проверено, работает.
1Cynep4eJIoBek; METAL; user1553061; improg; SSErmolaev; Artur._4ik; +6 Ответить
31. user1004898 27 28.08.20 10:49 Сейчас в теме
Как-то не совсем вошел в смысл. Случайно нет видео настройки данного процесса?
32. improg 709 04.09.20 13:43 Сейчас в теме
(19) Подскажите пжл., у меня нет в источнике перечисления на которое ссылается измерение, оно только в приемнике как постфактум обработать заполнение этого измерения, в ПКО после загрузки?
34. improg 709 04.09.20 14:48 Сейчас в теме
(32), (33) сделал так в ПКС

Значение = "ИмяПеречисления" вопрос закрыт.
35. improg 709 05.09.20 13:57 Сейчас в теме
(34) Опечатка Значение = "ИмяНужногоЗначенияПеречисления"
38. 1Cynep4eJIoBek 20.06.22 19:47 Сейчас в теме
(19) всё получилось, легче легкого, только пришлось md обновить с движениями по регистрам в источнике, и флажок поставить "Получать из внешних данных", т.к. конфиг КА, а в ней нет отдельных ТЧ для каждого регистра. Жирный плюс тебе добрый человек, кста моменты по коду есть, где можно проще сделать с фиксированной структурой
20. sarun 33 17.01.14 09:44 Сейчас в теме
Хочу выгрузить движения документа расчет себестоимости в документ корректировка записей регистров.
1.Создал ПКО Расчет себестоимости-Корректировка записей регистров.
2.Создаю ПВД для этого правила
3.В событии перед выгрузкой пишу запрос на отбор движений регистров по регистратору
21. sarun 33 17.01.14 13:56 Сейчас в теме
Как передать параметр регистратор в запросе в Правилах выгрузки данных Перед выгрузкой данных:
Запрос.Текст = "ВЫБРАТЬ
| ПартииТоваровНаСкладах.Номенклатура,
| ПартииТоваровНаСкладах.Стоимость,
| ПартииТоваровНаСкладах.Склад,
| ПартииТоваровНаСкладах.Количество
|ИЗ
| РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
|ГДЕ
| ПартииТоваровНаСкладах.Регистратор.Ссылка = &ДокСсылка";

Запрос.УстановитьПараметр("ДокСсылка",Объект);

Неверные параметры в операции сравнения.Нелзья сравнивать поля неограниченной дляины или поля несвоп типов.
22. adva 45 17.01.14 14:28 Сейчас в теме
(21) Может быть ОБъект.Ссылка?
23. adva 45 17.01.14 14:33 Сейчас в теме
А вообще, если я правильно понял задачу, то надо:

1) Выгружаете файл конфигурации с установленными галками "Выгружать движения по документам" (или как-то так в обработке выгрузки конфигурации).
2) в этом случае в ПКО для документов можно будет выбрать ПКГС движения по различным регистрам.

Работа с правилами в этом случае будет аналогична, как если бы Вы проставляли соответствия для табличных частей.

Никаких отборов писать не придется (если конечно регистры документа источника и приемника более менее одинаковые)
24. sarun 33 17.01.14 16:05 Сейчас в теме
(23) adva, пробовал через движения, не получилось. Когда пробовал через движения заполнял таб. часть корректировки
ТабЧастьТаблицаРегистровНакопления = Объект.ТаблицаРегистровНакопления;
СтрокаТЧ = ТабЧастьТаблицаРегистровНакопления.Добавить();
СтрокаТЧ.Имя = "ПартииТоваровНаСкладах";
СтрокаТЧ.Представление = "Партии товаров на складах (управленческий учет)";

но после обмена она не заполняется
25. sarun 33 17.01.14 16:19 Сейчас в теме
1.Создаем ПКО РасчетСебестоимостиКорректировкаЗаписейРегистров
2.Добавлем параметр ПартииТоваровНаСкладах- получать из входящих данных, источник пустой
3.Создаем ПВД РасчетСебестоимостиКорректировкаЗаписейРегистров
ВходящиеДанные = Новый Структура;
ТаблицаДвижений = Новый ТаблицаЗначений;
ТаблицаДвижений.Колонки.Добавить("Номенклатура");
ТаблицаДвижений.Колонки.Добавить("Стоимость");
ТаблицаДвижений.Колонки.Добавить("Склад");
ТаблицаДвижений.Колонки.Добавить("Количество");

Запрос =Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПартииТоваровНаСкладах.Номенклатура,
| ПартииТоваровНаСкладах.Стоимость,
| ПартииТоваровНаСкладах.Склад,
| ПартииТоваровНаСкладах.Количество
|ИЗ
| РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
|ГДЕ
| ПартииТоваровНаСкладах.Регистратор.Номер = &Номер";

Запрос.УстановитьПараметр("Номер","оХС00000005"); //для проверки

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
//Заполняем таблицу значений "ТаблицаДвижений" данными регистра партии товаров на складах из запроса
Пока Выборка.Следующий() Цикл
Строка = ТаблицаДвижений.Добавить();
Строка.Номенклатура = Выборка.Номенклатура;
Строка.Стоимость = Выборка.Стоимость;
Строка.Склад = Выборка.Склад;
Строка.Количество = Выборка.Количество;
КонецЦикла;

//Заполнем параметр "ПартииТоваровНаСкладах" данными таблицы значений
ВходящиеДанные.Вставить("ПартииТоваровНаСкладах", ТаблицаДвижений);

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

4.В ПКО после загрузки

ТабЧастьТаблицаРегистровНакопления = Объект.ТаблицаРегистровНакопления;
СтрокаТЧ = ТабЧастьТаблицаРегистровНакопления.Добавить();
СтрокаТЧ.Имя = "ПартииТоваровНаСкладах";
СтрокаТЧ.Представление = "Партии товаров на складах (управленческий учет)";

Объект.Записать();

ТаблицаДвижения = ПараметрыОбъекта["ПартииТоваровНаСкладах"];
ТаблицаДвижения.ЗаполнитьЗначения("Регистратор", Объект.Ссылка);



Для Каждого СтрокаТЧ ИЗ ТаблицаДвижения Цикл
НовДвиж = Объект.Движения.ПартииТоваровНаСкладах.ДобавитьПриход();
НовДвиж.Период = Объект.Дата;
НовДвиж.Номенклатура = СтрокаТЧ.Номенклатура;
НовДвиж.Стоимость=СтрокаТЧ.Стоимость;
НовДвиж.Склад=СтрокаТЧ.Склад;
НовДвиж.Количество=СтрокаТЧ.Количество;

КонецЦикла;

Объект.Записать();

5.Таблица значений "ПартииТоваровНаСкладах" при ПВД пункта 3 формируется- проверял отладчиком.
Но при выполнении пункта 4 ПараметрыОбъекта["ПартииТоваровНаСкладах"] после загрузки
При обмене получаем ошибку - "Получение элемента по индексу для значения не определено".

Вопрос как заполнить таблицу движений после загрузки?
26. sarun 33 17.01.14 16:59 Сейчас в теме
Вопрос про параметр после загрузки решен- сделано через табличную часть. Остается вопрос про условие в запросе. Как написать регистратор подобно " &ссылка"?
28. adva 45 20.01.14 06:54 Сейчас в теме
(26) Регистратор не может быть ПОДОБНО ссылка

С движениями вопрос мог не получиться по той причине, что документы после загрузки перепроводились. Тут надо смотреть файл выгрузки, если в нем содержатся нужные данные, то какая-то проблема при загрузке. Хотя раз вопрос решен, то изучать это смысла нет.
27. sarun 33 18.01.14 11:04 Сейчас в теме
33. improg 709 04.09.20 14:18 Сейчас в теме
(27) У меня нет в источнике перечисления на которое ссылается измерение, оно только в приемнике как постфактум обработать заполнение этого измерения, в ПКО после загрузки?
29. Yimaida 38 13.02.14 14:32 Сейчас в теме
Всем привет. Подскажите, пожалуйста, возможно ли в самом документе передать проводки. Предыстория такая: документы из УТ в Бух выгружаются криво (разъехались партии). В 8 из 10 документов бухи правят руками проводки. Поэтому хочу попробовать при обмене сразу формировать нужные проводки, но не через корректировку записей регистров, а напрямую к документу
30. Yimaida 38 15.02.14 01:34 Сейчас в теме
(29) Yimaida, Решено. Схема такая же как и выгрузка в операцию. Единственное, надо чтобы описание конфы было полное (со всеми галочками в обработке выгрузки), тогда видна таблица движений в документе.
37. crosby 280 29.10.20 14:49 Сейчас в теме
А как быть с тем, что при загрузке документов они попадают в регистр "Отложенные движения" и система их потом проводит? Есть желание выгружать готовые проводки и не пытаться перепроводить документ, т.к. для некоторых документов это просто невозможно (например, сторнированные документы в ЗУП).
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот