Добрый день. Помогите пожалуйста новичку с конвертацией.
Мне необходимо выгружать движения документа.
Как я поняла для этого необходимо привязываться к документам-регистраторам.
Таким образом получается, в базе источнике нужно регистрировать в плане обмена сам документ регистратор (сразу вопрос, обязательно ли регистрировать в плане обмена регистр накопления или движения должны сами подтягиваться?)
Далее в конвертации создаю ПКО док1-док2 и в его ПКС добавляю движения по моему регистру. Далее как я поняла нужно прописать ПВД, но здесь вопрос такой - ПВД должно быть только для документов или для регистра должно быть отдельное правило? Буду очень благодарна, если вы немножко мне проясните порядок действий, потому что пока мои разнообразные манипуляции к результату не привели.
(1) tyushik, а что мешает выгружать документы и проведить их в приемнике? Тогда он сразу создаст проводки по регистрам. Вот тут почитай http://infostart.ru/public/21069/
Единственное, что можно там добавить, так это проверку на пометку на удаление и статус проведения (такие документы проводить нам не надо)) и только проведенные документы записывать в параметр
Нет такой вариант мне не подойдет, у меня с одной стороны УТ - с другой УТ базовая. Документ, регистрирующий движения, - самописный, соответственно в базовую я его добавить не могу. Хочу выгружать самописный документ в Коррекрировку записей регистра. Сам регистр накопления типовой.
Так, вы создаете ПКО ТвойДокумент ---> КорректировкаРегистров, затем в приемнике его проводите и он делает все необходимые проводки. Или я опять вас неправильно понял?)
Как это ничего не содержит?) А для чего же тогда она нужна?) Там же указываются, какие регистры редактируются и создаются соответствующие табличные части) А обязательно нужно в корректировку переносить? КД - отличный вариант для переноса данных между конфами, независимо от того, типовые они или нет. Если документ дописан в одной конфе - это не означает, что его нельзя перенести в другую
(8) И? Задача сводится к тому, чтобы правильно заполнить документ в приемнике (и не обязательно это означает, что необходимо редактировать конфу). Если бы везде одни и те же реквизиты были с одинаковыми названиями, то бы и КД не нужна была бы
И? Задача сводится к тому, чтобы правильно заполнить документ в приемнике (и не обязательно это означает, что необходимо редактировать конфу).
Документ "Корректировка записей регистров" является всего лишь регистратором для всех регистров - как его "правильно" заполнить (а точнее его движения) в общем-то и есть вопрос.
(12) Не, в (9) я имел в виду не корректировку, а тот документ, который соответствует тому самописному, ибо корректировку заполнять будет посложнее (на первый взгляд)
tyushik, а подскажите, какого плана изменения в УТшке? Что-то добавлено, переименовано, удалено? (в том документе, что хотите в Корректировку перенести)
1) Как было сказано выше - создаем ПКО "ТвойДокумент ---> КорректировкаРегистров".
2) На каждый набор движений необходимый для документа создаем ПКС Источник - пусто,приемник параметр с произвольным именем (Желательно с именем регистра). Ставим галочку ПолучатьИзВходящихДанных.
3) Создаем для нашего ПКО ПВД и там пишем:
ВходящиеДанные = Новый Структура;
//Для Каждой нужной таблицы движений
Запрос =Новый Запрос;
Зпрос.Текст = "ВЫБРАТЬ
*(или бла-бла-бла все нужные поля с нужными псевдонимами)
ИЗ РегистрыНакопления.ИмяРегистра КАК Регистр
Где
Регистр.Регистратор = &ССылка"
Запрос.УстановитьПараметр("ССылка", Объект.Ссылка);
ВходящиеДанные.Вставить("ИмяПараметраТаблицы, как задано в ПКС", Запрос.Выполнить().Выгрузить());
ВыгрузитьПоПравилу(Объект,,ВходящиеДанные,,ИмяПКО);//ИмяПКО по умолчанию должно получится "ТвойДокумент ---> КорректировкаРегистров"
Показать
4) Возвращаемся в наше ПКО и там в ПослеЗагрузки() пишем:
Объект.Записать();
//Для каждого нашего движения
ТаблицаДвижения = ПараметрыОбъекта["ИмяПараметраКакЗаданоВПКС"];
ТаблицаДвижения.ЗаполнитьЗначения("Регистратор", Объект.ССылка);//Если в таблице нет колонки, соответственно ее добавить и не забыть тоже самое с периодом.
//и тут надо еще не забыть для отображения в форме заполнить ТЧ ТаблицаРегистровНакопления и свединия если есть
СтрокаТЧ = ТаблицаРегистровНакопления.Добавить();
СтрокаТЧ.Имя = "ИмяРегистра";
СтрокаТЧ.Представление = "СинонимРегистра"
Показать
В общем схему набросал. Писал сходу, синтаксису прошу не доверять))) Главное, чтоб идея была понятна.
Буду вопросы, прокомментирую участки подробнее.
(16)У меня такая же задача стоит. Попробовала по этой схеме.
2) На каждый набор движений необходимый для документа создаем ПКС Источник - пусто,приемник параметр с произвольным именем (Желательно с именем регистра). Ставим галочку ПолучатьИзВходящихДанных.
Параметр сделала. Передаю в него таблицу значений, полученную запросом. Отладчиком проверила - таблица значений формируется. Но в файле обмена параметр не заполняется, и вообще не выгружается. Когда передаю в него строковое значение (для проверки) - он выгружается в файл. Передаю таблицу значений - не выгружается.
Вот я.... Получилось создать корректировку записей регистров с движениями. Нужно было когда выгружаешь метаданные конфигурации снять галки с не выгружать данные регистров накопления и не выгружать движения документа. Потом в ПКО добавляем группу движений нужного регистра, как обычную табличную часть, в ней создаем ПКС для всех колонок регистра.
(16) В ПВД в структуру ВходящиеДанные добавляем таблицу движений регистра, которая пойдет не в параметр, а в эту табличную часть движений. А дальше все как обычно, когда данные передаются не из источника, а из входящих данных в документ.
Можно ещё посмотреть "Книга знаний. Как правильно пользоваться переносом остатков 7.7 - 8.0 с помощью КД 2.0". Там как раз подробно описывается как создать документ корректировка регистров, у меня с первого раза не получилось, потому что движений документа то я не выгрузила)
(16) Не отработал данный вариант, прописал заполнение набора таким образом:
УправленческаяОрганизация = Справочники.Организации.УправленческаяОрганизация;
Объект.Организация = УправленческаяОрганизация;
Объект.Записать();
Регистратор = Объект.Ссылка;
Набор = РегистрыНакопления.ДанныеОНачисленияхДляРасчетаСреднегоЗаработкаОбщий.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Регистратор);
Набор.Прочитать();
Для каждого Строка Из Набор Цикл
Строка.Организация = УправленческаяОрганизация;
КонецЦикла;
Набор.Записать();
Создаю ПВД, Объект выборки пустой, способ выборки произвольный алгоритм, правило конвертации КорректировкаЗаписейРегистров. (у меня загружается регистр ЗаказыПокупателей в УПП) Перед обработкой пишу.
//Табличня часть документа ТаблицаРегистровНакопления
ТаблицаРегистровНакопления = Новый ТаблицаЗначений;
ТаблицаРегистровНакопления.Колонки.Добавить("Имя");
ТаблицаРегистровНакопления.Колонки.Добавить("Представление");
НоваяСтрока = ТаблицаРегистровНакопления.Добавить();
НоваяСтрока.Имя = "ЗаказыПокупателей";
НоваяСтрока.Представление = "Заказы покупателей";
//таблица движений по регистру Заказы покупателей
ЗаказыПокупателей = Новый ТаблицаЗначений;
ЗаказыПокупателей.Колонки.Добавить("ДоговорКонтрагента"); //и т.д. все колонки, кроме регистратора, не забыть ВидДвижения и Период
Запрос = Новый Запрос;
//тут запрос, получаеющий нужные данные, у меня это остатки на период, потом любым способом помещаем результат в таблицу значений ЗаказыПокупателей
//теперь собственно данные для выгрузки:
ВходящиеДанные = Новый Структура("Комментарий,Дата,ТаблицаРегистровНакопления,ЗаказыПокупателей");
ВходящиеДанные.Комментарий = "комментарий";
ВходящиеДанные.Дата = НачалоДня(Параметры.ДатаОстатковКонецДня);
ВходящиеДанные.ТаблицаРегистровНакопления = ТаблицаРегистровНакопления;
ВходящиеДанные.ЗаказыПокупателей = ЗаказыПокупателей;
ВыгрузитьПоПравилу(,, ВходящиеДанные,, "КорректировкаЗаписейРегистров");
Показать
тут всё. в самом ПКО КорректировкаЗаписейРегистров. Источник - пусто, приемнки документ корректировки. Никакого кода в обработчиках нет. В ПКС добавлены: Комментарий - получать из входящих данных, Дата - получать из входящих данный. И две табличные части - ТаблицаРегистровНакопления и ЗаказыПокупателей. Галки получать из входящих данных для табличных частей нет. В ПКС ПередОбработкой указываем
и так для всех нужных колонок, кроме Регистратор. Регистратор не добавляем в табличную часть вообще!!! При загрузке он сам привязывается к выгруженному документу.
для тч ТаблицаРегистровНакопления аналогично всё. Её можно и в коде конечно задать, как Ice-D предлагал, но у меня по этому правилу разные регистры выгружаются, проще ее в ПВД определять.
(19) Подскажите пжл., у меня нет в источнике перечисления на которое ссылается измерение, оно только в приемнике как постфактум обработать заполнение этого измерения, в ПКО после загрузки?
(19) всё получилось, легче легкого, только пришлось md обновить с движениями по регистрам в источнике, и флажок поставить "Получать из внешних данных", т.к. конфиг КА, а в ней нет отдельных ТЧ для каждого регистра. Жирный плюс тебе добрый человек, кста моменты по коду есть, где можно проще сделать с фиксированной структурой
Хочу выгрузить движения документа расчет себестоимости в документ корректировка записей регистров.
1.Создал ПКО Расчет себестоимости-Корректировка записей регистров.
2.Создаю ПВД для этого правила
3.В событии перед выгрузкой пишу запрос на отбор движений регистров по регистратору
Как передать параметр регистратор в запросе в Правилах выгрузки данных Перед выгрузкой данных:
Запрос.Текст = "ВЫБРАТЬ
| ПартииТоваровНаСкладах.Номенклатура,
| ПартииТоваровНаСкладах.Стоимость,
| ПартииТоваровНаСкладах.Склад,
| ПартииТоваровНаСкладах.Количество
|ИЗ
| РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
|ГДЕ
| ПартииТоваровНаСкладах.Регистратор.Ссылка = &ДокСсылка";
Запрос.УстановитьПараметр("ДокСсылка",Объект);
Неверные параметры в операции сравнения.Нелзья сравнивать поля неограниченной дляины или поля несвоп типов.
1) Выгружаете файл конфигурации с установленными галками "Выгружать движения по документам" (или как-то так в обработке выгрузки конфигурации).
2) в этом случае в ПКО для документов можно будет выбрать ПКГС движения по различным регистрам.
Работа с правилами в этом случае будет аналогична, как если бы Вы проставляли соответствия для табличных частей.
Никаких отборов писать не придется (если конечно регистры документа источника и приемника более менее одинаковые)
(23) adva, пробовал через движения, не получилось. Когда пробовал через движения заполнял таб. часть корректировки
ТабЧастьТаблицаРегистровНакопления = Объект.ТаблицаРегистровНакопления;
СтрокаТЧ = ТабЧастьТаблицаРегистровНакопления.Добавить();
СтрокаТЧ.Имя = "ПартииТоваровНаСкладах";
СтрокаТЧ.Представление = "Партии товаров на складах (управленческий учет)";
1.Создаем ПКО РасчетСебестоимостиКорректировкаЗаписейРегистров
2.Добавлем параметр ПартииТоваровНаСкладах- получать из входящих данных, источник пустой
3.Создаем ПВД РасчетСебестоимостиКорректировкаЗаписейРегистров
ВходящиеДанные = Новый Структура;
ТаблицаДвижений = Новый ТаблицаЗначений;
ТаблицаДвижений.Колонки.Добавить("Номенклатура");
ТаблицаДвижений.Колонки.Добавить("Стоимость");
ТаблицаДвижений.Колонки.Добавить("Склад");
ТаблицаДвижений.Колонки.Добавить("Количество");
//Передаем данные в параметр
ВыгрузитьПоПравилу(Объект,Неопределено,ВходящиеДанные,Неопределено,"РасчетСебестоимостиКорректировкаЗаписейРегистров",,,);
4.В ПКО после загрузки
ТабЧастьТаблицаРегистровНакопления = Объект.ТаблицаРегистровНакопления;
СтрокаТЧ = ТабЧастьТаблицаРегистровНакопления.Добавить();
СтрокаТЧ.Имя = "ПартииТоваровНаСкладах";
СтрокаТЧ.Представление = "Партии товаров на складах (управленческий учет)";
Для Каждого СтрокаТЧ ИЗ ТаблицаДвижения Цикл
НовДвиж = Объект.Движения.ПартииТоваровНаСкладах.ДобавитьПриход();
НовДвиж.Период = Объект.Дата;
НовДвиж.Номенклатура = СтрокаТЧ.Номенклатура;
НовДвиж.Стоимость=СтрокаТЧ.Стоимость;
НовДвиж.Склад=СтрокаТЧ.Склад;
НовДвиж.Количество=СтрокаТЧ.Количество;
КонецЦикла;
Объект.Записать();
5.Таблица значений "ПартииТоваровНаСкладах" при ПВД пункта 3 формируется- проверял отладчиком.
Но при выполнении пункта 4 ПараметрыОбъекта["ПартииТоваровНаСкладах"] после загрузки
При обмене получаем ошибку - "Получение элемента по индексу для значения не определено".
Вопрос как заполнить таблицу движений после загрузки?
Вопрос про параметр после загрузки решен- сделано через табличную часть. Остается вопрос про условие в запросе. Как написать регистратор подобно " &ссылка"?
С движениями вопрос мог не получиться по той причине, что документы после загрузки перепроводились. Тут надо смотреть файл выгрузки, если в нем содержатся нужные данные, то какая-то проблема при загрузке. Хотя раз вопрос решен, то изучать это смысла нет.
(27) У меня нет в источнике перечисления на которое ссылается измерение, оно только в приемнике как постфактум обработать заполнение этого измерения, в ПКО после загрузки?
Всем привет. Подскажите, пожалуйста, возможно ли в самом документе передать проводки. Предыстория такая: документы из УТ в Бух выгружаются криво (разъехались партии). В 8 из 10 документов бухи правят руками проводки. Поэтому хочу попробовать при обмене сразу формировать нужные проводки, но не через корректировку записей регистров, а напрямую к документу
(29) Yimaida, Решено. Схема такая же как и выгрузка в операцию. Единственное, надо чтобы описание конфы было полное (со всеми галочками в обработке выгрузки), тогда видна таблица движений в документе.
А как быть с тем, что при загрузке документов они попадают в регистр "Отложенные движения" и система их потом проводит? Есть желание выгружать готовые проводки и не пытаться перепроводить документ, т.к. для некоторых документов это просто невозможно (например, сторнированные документы в ЗУП).