|
Конвертация даных | ☑ | ||
---|---|---|---|---|
0
Aleksei_Pro
20.07.13
✎
09:13
|
Ребят подсакжите , пишу перед выгрузкой код:
Если ПолучитьЗначение(ВходящиеДанные,"ДокументОснование").Вид() = "ПоступлениеМатериалов" Тогда ИмяПКО = "дор_ПоступлениеТоваровУслуг_материалов"; ИначеЕсли ПолучитьЗначение(ВходящиеДанные,"ДокументОснование").Вид() = "ПоступлениеОборудования" Тогда ИмяПКО ="дор_ПоступлениеТоваровУслуг_оборудование"; ИначеЕслиПолучитьЗначение(ВходящиеДанные,"ДокументОснование").Вид() = "ПоступлениеОС" Тогда ИмяПКО = "дор_ПоступлениеОС"; ИначеЕсли ПолучитьЗначение(ВходящиеДанные,"ДокументОснование").Вид() = "ПоступлениеТоваров" Тогда ИмяПКО = "дор_ПоступлениеТоваровУслуг"; Иначе КонецЕсли; Значение = ПолучитьЗначение(ВходящиеДанные,"ДокументОснование"); Источник ставлю пустой , приемник выбираю , флаг стоит "Получить из входящих данных" , документ в отладчике попадает , правило устанавливается , но почему то не выгружает реквизит "ДокументОснование" - подскажите в чем проблема! |
|||
1
Aleksei_Pro
20.07.13
✎
09:15
|
(0) вот так устанавливаю:
ВходящиеДанные = СоздатьОбъект("СписокЗначений"); ВходящиеДанные.Установить("Номер",Док.НомерДокВходящий); ВходящиеДанные.Установить("Дата",Док.ДатаДок); ВходящиеДанные.Установить("Контрагент", Док.Контрагент); ВходящиеДанные.Установить("ДоговорКонтрагента",Док.Договор); ВходящиеДанные.Установить("Комментарий" ,"Создан на основании документа - " + Строка(Док)) ; ВходящиеДанные.Установить("СуммаДокумента" , Док.Итог("Всего")); ВалютаДокумента = ?(ПустоеЗначение(Док.Договор.ВалютаДоговора) = 0,Док.Договор.ВалютаДоговора,Параметры.Рубли); ВходящиеДанные.Установить("ВалютаДокумента" ,ВалютаДокумента); ВходящиеДанные.Установить("ВидСчетаФактуры","НаПоступление"); ВходящиеДанные.Установить("ДокументОснование",Док); ВходящиеДанные.Установить("ДатаВходящегоДокумента", Док.ДатаДокВходящий); ВходящиеДанные.Установить("НомерВходящегоДокумента" , Док.НомерДокВходящий); ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("ДокументОснование"); ТЗ.НоваяСтрока(); ТЗ.ДокументОснование = Док; ВходящиеДанные.Установить("ДокументыОснования" , ТЗ); ВыгрузитьПоПравилу(,, ВходящиеДанные,, "дор_СчетФактураПолученный_ДляПоступлений"); |
|||
2
Rie
модератор
20.07.13
✎
09:17
|
(1) Кто такой Док?
|
|||
3
Aleksei_Pro
20.07.13
✎
09:19
|
Перед обработкой:
Док = СоздатьОбъект("Документ.ПоступлениеТоваров"); Док.ВыбратьДокументы(Параметры.Датанач,Параметры.ДатаКон); Пока Док.ПолучитьДокумент() = 1 Цикл Если СокрЛП(Док.ДатаНомерСчетаФактуры)<>""Тогда +...(1) КонецЦикла; |
|||
4
Aleksei_Pro
20.07.13
✎
09:23
|
Есть мысли почему не выгружает?
|
|||
5
Rie
модератор
20.07.13
✎
09:25
|
(4) Не Док используй, а Док.ТекущийДокумент()
|
|||
6
Aleksei_Pro
20.07.13
✎
09:37
|
Спасибо большое)
|
|||
7
Aleksei_Pro
20.07.13
✎
09:42
|
Ребят еще вопросик. После загрузки документа "БухСправка" пишу заполнение НУ:
// НУ //СторнируемыйНаборЗаписейБУ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); //СторнируемыйНаборЗаписейБУ.Отбор.Регистратор.Значение = Объект.Ссылка; //СторнируемыйНаборЗаписейБУ.Прочитать(); //СторнируемыйНаборЗаписейНУ = РегистрыБухгалтерии.Налоговый.СоздатьНаборЗаписей(); //СторнируемыйНаборЗаписейНУ.Отбор.Регистратор.Значение = Объект.Ссылка; //СторнируемыйНаборЗаписейНУ.Прочитать(); //СторнируемыйНаборЗаписейНУ.Очистить(); //НалоговыйУчет.ЗаполнитьДанныеНалоговогоУчетаПоБухгалтерскомуУчету(СторнируемыйНаборЗаписейНУ, СторнируемыйНаборЗаписейБУ, Объект.Дата); //ТЗ = СторнируемыйНаборЗаписейНУ.Выгрузить(); //ТЗ.ЗаполнитьЗначения(Объект.Дата,"Период"); //СторнируемыйНаборЗаписейНУ.Загрузить(ТЗ); //СторнируемыйНаборЗаписейНУ.Записать(); Почему пишет не установлен владелец? |
|||
8
Rie
модератор
20.07.13
✎
10:03
|
В обработчике ПослеЗагрузки объект ещё не записан в базу. Соответственно, Ссылка - пустая.
|
|||
9
Aleksei_Pro
20.07.13
✎
10:05
|
Спасибо нашел
|
|||
10
Aleksei_Pro
20.07.13
✎
10:15
|
А в какую лучше процедуру записать?
|
|||
11
Aleksei_Pro
20.07.13
✎
10:16
|
В ПослеЗагрузкиданных?
|
|||
12
Rie
модератор
20.07.13
✎
10:17
|
(10) А зачем это делать при загрузке? Регистры подчинены регистратору. Вот пусть при проведении он с ними и разберётся.
|
|||
13
Aleksei_Pro
20.07.13
✎
10:22
|
Это же бухгалтерская справка , там не прокатит так!
|
|||
14
Rie
модератор
20.07.13
✎
10:24
|
(13) Прошу прощения, не обратил внимание.
Тогда, похоже, придётся заниматься этим как раз ПослеЗагрузкиДанных. |
|||
15
Aleksei_Pro
20.07.13
✎
10:26
|
Нет , процедура ПослеЗагрузкиОбъекта:
// НУ Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда Если Объект.Метаданные().Имя = "ОперацияБух" Тогда СторнируемыйНаборЗаписейБУ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); СторнируемыйНаборЗаписейБУ.Отбор.Регистратор.Значение = Объект.Ссылка; СторнируемыйНаборЗаписейБУ.Прочитать(); СторнируемыйНаборЗаписейНУ = РегистрыБухгалтерии.Налоговый.СоздатьНаборЗаписей(); СторнируемыйНаборЗаписейНУ.Отбор.Регистратор.Значение = Объект.Ссылка; СторнируемыйНаборЗаписейНУ.Прочитать(); СторнируемыйНаборЗаписейНУ.Очистить(); НалоговыйУчет.ЗаполнитьДанныеНалоговогоУчетаПоБухгалтерскомуУчету(СторнируемыйНаборЗаписейНУ, СторнируемыйНаборЗаписейБУ, Объект.Дата); ТЗ = СторнируемыйНаборЗаписейНУ.Выгрузить(); ТЗ.ЗаполнитьЗначения(Объект.Дата,"Период"); СторнируемыйНаборЗаписейНУ.Загрузить(ТЗ); СторнируемыйНаборЗаписейНУ.Записать(); КонецЕсли; КонецЕсли; Спасибо , что помогли! |
|||
16
Aleksei_Pro
20.07.13
✎
10:29
|
Что то не помогло!
|
|||
17
Aleksei_Pro
20.07.13
✎
10:30
|
Или это функция тоже еще объект не записала.?
|
|||
18
Rie
модератор
20.07.13
✎
10:32
|
(16) ПослеЗагрузкиОбъекта вызывается перед ПослеЗагрузки у объекта. Так что в ней объект ещё не записан.
Составь список документов, в ПослеЗагрузкиДанных - пробегись по списку и поудаляй всё из регистра. |
|||
19
Aleksei_Pro
20.07.13
✎
10:35
|
Да , я так и сделал.
Спасибо за помощь. |
|||
20
Aleksei_Pro
20.07.13
✎
10:35
|
Извините если отклек у вас минутки времени)))
|
|||
21
Aleksei_Pro
20.07.13
✎
10:41
|
А что Параметры.Датанач,Параметры.ДатаКон не доступны после зугрузки данных? Он пишет что не обнаружено
|
|||
22
Aleksei_Pro
20.07.13
✎
11:20
|
Почему пишу ПослеЗагрузкиОбъекта:
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда Если Объект.Метаданные().Имя = "ОперацияБух" Тогда Параметры.МассивДокументовКПроведению.Добавить(Объект); КонецЕсли; КонецЕсли; Затем после выгрузки данных пишу: Для каждого ДокументКПроведению Из Параметры.МассивДокументовКПроведению цикл ДокументОбъектКПроведению = ДокументКПроведению.ПолучитьОбъект(); СторнируемыйНаборЗаписейБУ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); СторнируемыйНаборЗаписейБУ.Отбор.Регистратор.Значение = ДокументОбъектКПроведению.Ссылка; СторнируемыйНаборЗаписейБУ.Прочитать(); СторнируемыйНаборЗаписейНУ = РегистрыБухгалтерии.Налоговый.СоздатьНаборЗаписей(); СторнируемыйНаборЗаписейНУ.Отбор.Регистратор.Значение = ДокументОбъектКПроведению.Ссылка; СторнируемыйНаборЗаписейНУ.Прочитать(); СторнируемыйНаборЗаписейНУ.Очистить(); НалоговыйУчет.ЗаполнитьДанныеНалоговогоУчетаПоБухгалтерскомуУчету(СторнируемыйНаборЗаписейНУ, СторнируемыйНаборЗаписейБУ, ДокументОбъектКПроведению.Дата); ТЗ = СторнируемыйНаборЗаписейНУ.Выгрузить(); ТЗ.ЗаполнитьЗначения(ДокументОбъектКПроведению.Дата,"Период"); СторнируемыйНаборЗаписейНУ.Загрузить(ТЗ); СторнируемыйНаборЗаписейНУ.Записать(); КонецЦикла; И пишет переменная не определена МассивДокументовКПроведению . В чем дело? |
|||
23
Aleksei_Pro
20.07.13
✎
11:23
|
После загрузки параметров пишу:
Параметры.Вставить("МассивДокументовКПроведению",Новый Массив); |
|||
24
Aleksei_Pro
20.07.13
✎
19:13
|
Ребят подскажите как правильно загрнать определенный вид документов в массив и потом в процедуре после загрузке данных их провести ( обработать)?
Я делал как в (22) не сработало. |
|||
25
Aleksey
20.07.13
✎
19:52
|
не после выгрузки данных, а После загрузки данных
|
|||
26
Aleksey
20.07.13
✎
19:56
|
Параметры.Вставить("МассивДокументовКПроведению",Новый Массив); - это ты проинициализировал массив
затем после загрузки поступление Параметры.МассивДокументовКПроведению.Добавить(Объект) |
|||
27
Aleksei_Pro
21.07.13
✎
11:43
|
(26) Я пробовал если добавить в после загрузки в документ то он ругается и выдает ошибку:
ТипОбъекта = Операция (бухгалтерский и налоговый учет) Объект = Операция (бухгалтерский и налоговый учет) от 01.01.2013 12:00:30 Обработчик = ПослеЗагрузкиОбъекта ОписаниеОшибки = Значение не является значением объектного типа (Добавить) ПозицияМодуля = (33) КодСообщения = 21 А сделал так : Параметры.МассивДокументовКПроведению.Добавить(Объект) |
|||
28
Aleksei_Pro
21.07.13
✎
11:56
|
Ребят если есть опыт подскажте, как правильно и в каких фукгциях прописать.
|
|||
29
Aleksey
21.07.13
✎
12:36
|
а какое отношения имеет операция к проведению?
|
|||
30
К_Дач
21.07.13
✎
12:37
|
Если ты хочешь проводить документы, вновь созданные в базе-приемнике, то для этого оптимально использовать регистрацию в узле плана обмена. Новый доки попадут в таблицу регистрации после записи в приемнике. Пишешь обработку, где смотришь эту таблицу и дальше можешь проводить и все остальное.
|
|||
31
Aleksey
21.07.13
✎
12:47
|
(30) Ну проведением можно разрудить на этапе выгрузке, вот только у операции нет ТЧ и там нечего проводить, ибо запись идет непосредственно в регистр
|
|||
32
К_Дач
21.07.13
✎
12:54
|
(31) Тогда целесообразно написать ПКО вида (ДокументИсточник - РегистрБухгалтерииЗапись), тогда при выгрузке все доки сразу будут записываться в регистр. Можно управлять активностью записи. А все свойства подтягивать рекурсивно, написав соответсвующие ПКО
|
|||
33
Aleksei_Pro
21.07.13
✎
17:43
|
Мне нужно после загрузки "ОперацийБУХ" ( бухгалтерская справка ) выполнить вот этот код:
Для каждого ДокументКПроведению Из Параметры.МассивДокументовКПроведению цикл ДокументОбъектКПроведению = ДокументКПроведению.ПолучитьОбъект(); СторнируемыйНаборЗаписейБУ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); СторнируемыйНаборЗаписейБУ.Отбор.Регистратор.Значение = ДокументОбъектКПроведению.Ссылка; СторнируемыйНаборЗаписейБУ.Прочитать(); СторнируемыйНаборЗаписейНУ = РегистрыБухгалтерии.Налоговый.СоздатьНаборЗаписей(); СторнируемыйНаборЗаписейНУ.Отбор.Регистратор.Значение = ДокументОбъектКПроведению.Ссылка; СторнируемыйНаборЗаписейНУ.Прочитать(); СторнируемыйНаборЗаписейНУ.Очистить(); НалоговыйУчет.ЗаполнитьДанныеНалоговогоУчетаПоБухгалтерскомуУчету(СторнируемыйНаборЗаписейНУ, СторнируемыйНаборЗаписейБУ, ДокументОбъектКПроведению.Дата); ТЗ = СторнируемыйНаборЗаписейНУ.Выгрузить(); ТЗ.ЗаполнитьЗначения(ДокументОбъектКПроведению.Дата,"Период"); СторнируемыйНаборЗаписейНУ.Загрузить(ТЗ); СторнируемыйНаборЗаписейНУ.Записать(); КонецЦикла; |
|||
34
GenV
21.07.13
✎
22:42
|
(33)
Можно сделать так: - При выгрузке заполнять твой массив документов в параметре. - Создать одно/несколько ПКО в которых в после загрузки будет выполняться указанный код для "Объект.Ссылка". ПКО будет только искать ссылку и ничего не менять, документы должны выгружаться раньше. Можно и существующие ПКО использовать, но тогда нужно передавать флаг, что в "Посл загрузки объекта" у этого ПКО должен выполняться указанный код (можно через "ПараметрыОбъекта" флаг булево передавать). - В "После выгрузки данных" выполнять выгрузку каждого документа из массива в параметре по созданным ПКО. Тогда в после загрузки для каждого документы выполниться код. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |