|
Конвертация документа Операция Бух и его проводки | ☑ | ||
---|---|---|---|---|
0
wmzdeadman
22.12.11
✎
18:26
|
Суть такая. Есть документ поступление товаров. Необходимо перегрузить его в свернутом виде, ввиде документа операция бух с проводками. база источник - КА (1.0). база приемник - КА (1.1). Делаю в конвертации. Создал ПКО - ОперацияБух, создал все необходимые ПКС. В ПВД ПередОбработкой делаю Выборкуданных, где есть все нужные реквизиты для заполнения и таблица Хозрасчетный для подсовывания движений по регистру. В ПКО ставлю галку "Не запоминать выгруженные объекты". В итоге перегрузка есть, движений нет. Как скормить движения документу?
|
|||
1
Господин ПЖ
22.12.11
✎
18:28
|
перенос операции - не такой простой секос как хотелось бы... взять из типовых переносов
|
|||
2
wmzdeadman
22.12.11
✎
18:31
|
смотрел типовые. не воткну как правильно надо переносить бух регистр
|
|||
3
wmzdeadman
22.12.11
✎
21:40
|
подниму тему
|
|||
4
vmv
22.12.11
✎
21:45
|
я сделал скрытую табличную часть аналогичную по структуре регистру в документе операция и грузил в нее, потом подписчик ПередЗаписью() проверял если табличная часть не пуста - заполни регисстр из этой ТЧ и запиши, потом очисти ТЧ по желанию в этом же подписчике.
на производительность плевать, если тч очищать после загрузки, то и хрен с ней с лишней табличной частью, зато все влетает пулей, да и голова не болит. |
|||
5
vmv
22.12.11
✎
21:47
|
"В итоге перегрузка есть, движений нет"(с)
верность этого постулата и причину нет легко проверить открываешь регистр бухи и ищешь движения по регистратору, если их нет, то данные упали не туда и нужно правильно скормить измерения, субконто на проводках и пр. |
|||
6
wmzdeadman
22.12.11
✎
21:50
|
(4) а что... как вариант, если уж совсем не добью...
|
|||
7
wmzdeadman
22.12.11
✎
21:51
|
(5) документ операция появляется в базе-приемнике, но там только номер, дата, сумма, содержание.... движений нет.
|
|||
8
vmv
22.12.11
✎
22:12
|
(7) варианта всего два
1. при загрузке движения вообще не записались в регистр бухгалтерии 2. при загрузке движения записались не по тем измерениям(маловероятно) вот что у меня в подписчике, правда я гружу из эксель с удаленных подразделение в базу так называемая главная книга, где только документы "ОперацияБух" и больше ничего. и там еще пляски с полученим кода счета - рещение не блестящее, но тьотки без претензий // ОбщийМодуль : AddПодписки (2011г.) // Разработчики: ...... Процедура AddПередЗаписьюПланСчетовХозрасчетный(Источник, Отказ) Экспорт Источник.AddКодБезРазделителя = СтрЗаменить(Источник.Код, "-", ""); Источник.AddКодБезРазделителя = СтрЗаменить(Источник.Код, "_", ""); КонецПроцедуры Процедура AddПередЗаписьюОперацияБух(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт Если Источник.AddКорректировка Тогда Возврат; КонецЕсли; Для каждого ПроводкиДокумента из Источник.Движения Цикл Если ТипЗнч(ПроводкиДокумента) <> Тип("РегистрБухгалтерииНаборЗаписей.Хозрасчетный") Тогда Продолжить; КонецЕсли; ТЧ = Источник.AddТабличнаяЧасть; ТЧКоличество = ТЧ.Количество(); ПроводкиДокументаКоличество = ПроводкиДокумента.Количество(); Для Инд = 0 По (ПроводкиДокументаКоличество-1) Цикл Состояние("" + (Инд+1) + "("+ПроводкиДокументаКоличество+")"); Проводка = ПроводкиДокумента[Инд]; Если Не ТЧКоличество Тогда НоваяСтрокаТЧ = ТЧ.Добавить(); НоваяСтрокаТЧ.СчетДт = Проводка.СчетДт; НоваяСтрокаТЧ.СчетКт = Проводка.СчетКт; НоваяСтрокаТЧ.Сумма = Проводка.Сумма; НоваяСтрокаТЧ.Содержание = Проводка.Содержание; НоваяСтрокаТЧ.НомерЖурнала = Проводка.НомерЖурнала; КонецЕсли; ДтСлужебноеЗначениеСубконто1 = ПолучитьСлужебноеЗначениеСубконто1(Проводка.СчетДт, Истина); КтСлужебноеЗначениеСубконто1 = ПолучитьСлужебноеЗначениеСубконто1(Проводка.СчетКт, Ложь); Если ЗначениеЗаполнено(ДтСлужебноеЗначениеСубконто1) Тогда ДтВидСубконто1 = Проводка.СчетДт.ВидыСубконто[0].ВидСубконто; Проводка.СубконтоДт.Вставить(ДтВидСубконто1, ДтСлужебноеЗначениеСубконто1); КонецЕсли; Если ЗначениеЗаполнено(КтСлужебноеЗначениеСубконто1) Тогда КтВидСубконто1 = Проводка.СчетКт.ВидыСубконто[0].ВидСубконто; Проводка.СубконтоКт.Вставить(КтВидСубконто1, КтСлужебноеЗначениеСубконто1); КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры Функция ПолучитьСлужебноеЗначениеСубконто1(Счет, ЭтоДебет) Если Счет.ВидыСубконто.Количество() Тогда ВидыСубконто1 = Счет.ВидыСубконто[0]; ВидыСубконто1ТипЗначения = ВидыСубконто1.ВидСубконто.ТипЗначения; ВидыСубконто1Типы = ВидыСубконто1ТипЗначения.Типы(); Если Не ВидыСубконто1Типы.Количество() Тогда Возврат Неопределено; КонецЕсли; ОбъектМетаданных = Метаданные.НайтиПоТипу(ВидыСубконто1Типы[0]); Если ОбъектМетаданных = Неопределено Тогда Возврат Неопределено; КонецЕсли; Если Метаданные.Справочники.Содержит(ОбъектМетаданных) Тогда МенеждерСубконто1 = Справочники[ОбъектМетаданных.Имя]; Наименование = ?(ЭтоДебет, "Дебет", "Кредит") + "Служебный" + ОбъектМетаданных.Имя; СлужебноеЗначениеСубконто1 = МенеждерСубконто1.НайтиПоНаименованию(Наименование, Истина); Если ЗначениеЗаполнено(СлужебноеЗначениеСубконто1) Тогда Возврат СлужебноеЗначениеСубконто1; КонецЕсли; НовыйЭлемент = МенеждерСубконто1.СоздатьЭлемент(); НовыйЭлемент.УстановитьНовыйКод(); НовыйЭлемент.Наименование = Наименование; Попытка НовыйЭлемент.Записать(); Возврат НовыйЭлемент.Ссылка; Исключение Сообщить("Служебные элементы справочника " + ОбъектМетаданных.Имя + " создать автоматически не удалось"); Возврат Неопределено; КонецПопытки; КонецЕсли; КонецЕсли; Возврат Неопределено; КонецФункции Функция ПолучитьСчетПоКоду(КодСчета) Экспорт КодСчетаТолькоЦифры = ""; Для а = 1 По СтрДлина(КодСчета) Цикл Символ = Сред(КодСчета, а, 1); КодСимвола = КодСимвола(Символ); Если КодСимвола >= 48 И КодСимвола <= 57 Тогда КодСчетаТолькоЦифры = КодСчетаТолькоЦифры + Символ; КонецЕсли; КонецЦикла; СсылкаСчета = ПланыСчетов.Хозрасчетный.НайтиПоРеквизиту("AddКодБезРазделителя", КодСчетаТолькоЦифры); Если СсылкаСчета.Пустая() Тогда Сообщить("Не найдет счет: " + КодСчета); КонецЕсли; Возврат СсылкаСчета; КонецФункции Процедура СоздатьЗаписиРегистраБухгалтерии(Объект, Отказ) Экспорт РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); РегХозрасчетный.Отбор.Регистратор.Значение = Объект.Ссылка; РегХозрасчетный.Очистить(); НомерСтроки = 0; ОбъектAddТабличнаяЧастьКоличество = Объект.AddТабличнаяЧасть.Количество(); Для Каждого СтрокаДанные Из Объект.AddТабличнаяЧасть Цикл НомерСтроки = НомерСтроки + 1; Состояние("Запись: " + НомерСтроки +"("+ОбъектAddТабличнаяЧастьКоличество+")"); РегЗапись = РегХозрасчетный.Добавить(); ЗаполнитьЗначенияСвойств(РегЗапись, СтрокаДанные); РегЗапись.Период = Объект.Дата; РегЗапись.Регистратор = Объект.Ссылка; РегЗапись.Организация = Справочники.Организации.НайтиПоКоду("000000001"); КонецЦикла; РегХозрасчетный.Записать(); КонецПроцедуры |
|||
9
Сияющий Асинхраль
22.12.11
✎
22:22
|
Возьми конвертацию типовую бп 1.6->2.0 там в конвертации ОперацияБух все понятно
|
|||
10
Stim213
22.12.11
✎
22:25
|
(9) шутка года, блин.
вот пример одного из запросов в правилах по переносу 16-20 http://i018.radikal.ru/1112/23/8f2f449da312.jpg |
|||
11
Stim213
22.12.11
✎
22:26
|
зы. автор, стукнись завтра в аську, расскажу
|
|||
12
Сияющий Асинхраль
22.12.11
✎
22:39
|
(16) я по принципу 1.6 -> 2.0 не только операции, но и вводы начальных остатков по нетиповым счетам написал, когда делал бп 2.0 <-> упп. Все работает. Все понятно. Только вчера правил
|
|||
13
Stim213
22.12.11
✎
22:41
|
(12) ну может и понятно. но это не совсем то, по чему следует знакомиться с переносом ручных операций
|
|||
14
Сияющий Асинхраль
22.12.11
✎
22:49
|
А ты сам знакомился? По мне как раз с этим и надо знакомиться, если хочешь спецом стать. А в способ въезжаешь очень быстро, мне получаса хватило, чтобы по аналогии свой вариант написать
|
|||
15
Stim213
22.12.11
✎
23:04
|
(14) я учился таким выкрутаса на КД на более простых примерах, и щетаю, так лучше для каждого. от простого к сложному.
|
|||
16
Сияющий Асинхраль
22.12.11
✎
23:42
|
Да что ты там сложного то нашел? Одна маленькая процедурка строчек на 70 из которых половина элементарный запрос. Хотя ХЗ, я как то стал относиться просто - если меньше 1000 строчек, то все просто :-)
|
|||
17
Steel_Wheel
23.12.11
✎
00:23
|
Я сегодня все-таки со Стимом соглашусь. В КД может быть много неявных зависимостей (ПВД, алгоритмы и тп). Если есть простой наглядный способ, лучше начать с него. Оптимизировать и потом можно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |