|   |   | 
| 
 | Конвертация даных | ☑ | ||
|---|---|---|---|---|
| 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)
  Можно сделать так: - При выгрузке заполнять твой массив документов в параметре. - Создать одно/несколько ПКО в которых в после загрузки будет выполняться указанный код для "Объект.Ссылка". ПКО будет только искать ссылку и ничего не менять, документы должны выгружаться раньше. Можно и существующие ПКО использовать, но тогда нужно передавать флаг, что в "Посл загрузки объекта" у этого ПКО должен выполняться указанный код (можно через "ПараметрыОбъекта" флаг булево передавать). - В "После выгрузки данных" выполнять выгрузку каждого документа из массива в параметре по созданным ПКО. Тогда в после загрузки для каждого документы выполниться код. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |