7.7 Выгрузка из ПУБ в Бух

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Norvin, 6 авг 2012.

  1. TopicStarter Overlay
    Norvin
    Offline

    Norvin

    Регистрация:
    26 июл 2012
    Сообщения:
    33
    Симпатии:
    1
    Баллы:
    1
    Из ПУБа выгружаются два документа - реализация и счет-фактура. Необходимо сделать документы не проведенными, с реализацией все нормально, но вот при выгрузке счета-фактуры не получается сделать его не проведенным. О том что есть "СделатьНеПроведенным" знаю...
    Код:
    СчетФакт.Новый();
    СчетФакт.ДатаДок=СчетФактураДата;
    СчетФакт.НомерДок=СчетФактураНомер;
    СчетФакт.ВерсияОбъекта="7.70.500";
    СчетФакт.Записать(); 
    ОткрытьФорму(СчетФакт.ТекущийДокумент(), Параметр,0);
    Документ проводиться при срабатывании "ОткрытьФорму"
  2. TopicStarter Overlay
    Norvin
    Offline

    Norvin

    Регистрация:
    26 июл 2012
    Сообщения:
    33
    Симпатии:
    1
    Баллы:
    1
    Один из вариантов решения - добавить перебор всех записанных этой обработкой документов, но, на мой взгляд, это дополнительное время обработки... Можно ли как-нибудь сделать, что бы этот же документ не проводился сразу?
    Код:
    Пока СчетФакт.ПолучитьДокумент() = 1 Цикл
    Если СчетФакт.Проведен()=1 Тогда
    СчетФакт.СделатьНеПроведенным();
    КонецЕсли;
    КонецЦикла;
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Все можно. Смотрите Проведуру ВводНаОснвании
  4. TopicStarter Overlay
    Norvin
    Offline

    Norvin

    Регистрация:
    26 июл 2012
    Сообщения:
    33
    Симпатии:
    1
    Баллы:
    1
    Если вы о том, о чем я подумал, тогда я не дал достаточно информации. В конфигураторе БУХ мне не разрешено менять что-либо.
  5. TopicStarter Overlay
    Norvin
    Offline

    Norvin

    Регистрация:
    26 июл 2012
    Сообщения:
    33
    Симпатии:
    1
    Баллы:
    1
    Решил оставить этот цикл, т.к. при заполнении счет-фактуры иногда выдает одного контрагента (хотя он не упоминается, наверное крутой какой-то) и решил заполнять их из ОЛЕ счета-фактуры.
    Код:
     Пока СчетФакт.ПолучитьДокумент() = 1 Цикл
    Если СокрЛП(СФОле.Контрагент.ИНН)<>СокрЛП(СФОле.Грузополучатель.ИНН) Тогда
    Если СокрЛП(СФОле.Контрагент.ИНН)<>"" Тогда
    Если Кон.НайтиПоРеквизиту("ИНН",СокрЛП(СФОле.Контрагент.ИНН),1)=1 Тогда
    СчетФакт.Контрагент=Кон.ТекущийЭлемент();
    Иначе
    Кон.Новый();
    Кон.Наименование=СокрЛП(СФОле.Контрагент.Наименование);
    Кон.ИНН=СокрЛП(СФОле.Контрагент.ИНН);
    Кон.Записать();
    СчетФакт.Контрагент=Кон.ТекущийЭлемент();
    КонецЕсли;
    КонецЕсли;
    Если СокрЛП(СФОле.Грузополучатель.ИНН)<>"" Тогда
    Если Кон.НайтиПоРеквизиту("ИНН",СокрЛП(СФОле.Грузополучатель.ИНН),1)=1 Тогда
    СчетФакт.Грузополучатель=Кон.ТекущийЭлемент();
    Иначе
    Кон.Новый();
    Кон.Наименование=СокрЛП(СФОле.Грузополучатель.Наименование);
    Кон.ИНН=СокрЛП(СФОле.Грузополучатель.ИНН);
    Кон.Записать();
    СчетФакт.Грузополучатель=Кон.ТекущийЭлемент();
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    Если СчетФакт.Проведен()=1 Тогда
    СчетФакт.СделатьНеПроведенным();
    КонецЕсли;
    КонецЦикла;
    Вот код заполнения, но он не сохраняет контрагенотв из ОЛЕ... Подскажите, пожалуйста, что я пропустил?
  6. TopicStarter Overlay
    Norvin
    Offline

    Norvin

    Регистрация:
    26 июл 2012
    Сообщения:
    33
    Симпатии:
    1
    Баллы:
    1
    Добавил "СчетФакт.Записать()", так он мне теперь в обе счет-фактуры пихает одного и того же грузополучателя, последнего. Похоже куда-то не туда я "записать" запихнул))
  7. TopicStarter Overlay
    Norvin
    Offline

    Norvin

    Регистрация:
    26 июл 2012
    Сообщения:
    33
    Симпатии:
    1
    Баллы:
    1
    на всякий случай выкладываю саму обработку, в копилке нашел только обработки вида выгрузка-загрузка, эта работает напрямую, из базы в которую необходимо произвести выгрузку Посмотреть вложение 11844

    Вложения:

    • Проба.ert
      Размер файла:
      205,5 КБ
      Просмотров:
      20
  8. TopicStarter Overlay
    Norvin
    Offline

    Norvin

    Регистрация:
    26 июл 2012
    Сообщения:
    33
    Симпатии:
    1
    Баллы:
    1
    Проблема с контрагентом не решена, все так же появляется "левый" =)) Сам документ реализации срабатывает нормально, но счет-фактура ставит не того контрагента, пытаюсь вручную создать счет-фактуру на основании того же документа, та же беда, все тот же контрагент... Изменял контрагентов в ПУБе, так у большинства он выдает в БУХе не правильные, но иногда выдает все же правильные
    Код:
    СчетФакт.Новый;
    СчетФакт.ДатаДок;
    СчетФакт.СчетФактураНомер;
    СчетФакт.ВерсияОбъекта"7.70.500";
    СчетФакт.Контрагент = Кон;
    СчетФакт.Грузополучатель = Груз;
    СчетФакт.Записать();
    //ОткрытьФорму(СчетФакт.ТекущийДокумент(), Параметр,0);
    ;
    "Груз" и "Кон" брались из счета-фактуры в ПУБе, так он записывает нормальные контрагенты, но необходимо что бы счет-фактура была на основании определенного документа, а при задании документов он меняет и этих контрагентов... Подскажите, пожалуйста, какую конструкцию необходимо использовать после "ОткрытьФорму", что бы изменить контрагентов?
  9. TopicStarter Overlay
    Norvin
    Offline

    Norvin

    Регистрация:
    26 июл 2012
    Сообщения:
    33
    Симпатии:
    1
    Баллы:
    1
    Код:
    .................................................
    .................................................
    Пока СФОле.ПолучитьДокумент()=1 Цикл
    Если СокрЛП(Строка(СФОле.ДокументОснование.НомерДок))= СокрЛП(Строка(Докум1.НомерДок)) Тогда
    СчетФактураНомер="Д"+СокрЛП(Строка(СФОле.НомерДок));
    СчетФактураДата=СФОле.ДатаДок;
    ЕстьСФ=1;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Если ЕстьСФ=1 Тогда
    Если СчетФакт.ВыбратьДокументы(НачДата,КонДата)=1 Тогда
    Если СчетФакт.НайтиПоНомеру(СчетФактураНомер,СчетФактураДата)=1 Тогда
    Если СчетФакт.Проведен()=1 Тогда
    СчетФакт.СделатьНеПроведенным();
    КонецЕсли;
    Если СчетФакт.ПометкаУдаления()=1 Тогда
    СчетФакт.СнятьПометкуУдаления();
    КонецЕсли;
    СчетФакт.ДатаДок=СчетФактураДата;
    СчетФакт.НомерДок=СчетФактураНомер;
    СчетФакт.ВерсияОбъекта="7.70.500";
    СчетФакт.Записать();
    ОткрытьФорму(СчетФакт.ТекущийДокумент(), Параметр,0);
    Форма.Закрыть();
    Иначе 
    СчетФакт.Новый();
    СчетФакт.ДатаДок=СчетФактураДата;
    СчетФакт.НомерДок=СчетФактураНомер;
    СчетФакт.ВерсияОбъекта="7.70.500";
    СчетФакт.Записать(); 
    ОткрытьФорму(СчетФакт.ТекущийДокумент(), Параметр,0);
    Форма.Закрыть();
    КонецЕсли;
    Иначе
    СчетФакт.Новый();
    СчетФакт.ДатаДок=СчетФактураДата;
    СчетФакт.НомерДок=СчетФактураНомер;
    СчетФакт.ВерсияОбъекта="7.70.500";			  
    СчетФакт.Записать();
    ОткрытьФорму(СчетФакт.ТекущийДокумент(), Параметр,0);
    Форма.Закрыть();
    КонецЕсли;
    Сообщить("Записана "+ СчетФакт);
    ТекстСообщений.ДобавитьСтроку("Проведена "+СчетФакт);
    Иначе
    Сообщить("СчетФактура для "+Параметр+" не найдена");
    ТекстСообщений.ДобавитьСтроку("СчетФактура для "+СокрЛП(Строка(Приход))+" не найдена");
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    ааа=1;
    Для Номер1=1 По ПереченьДокументы.РазмерСписка() Цикл
    Стр1="";
    ПереченьДокументы.ПолучитьЗначение(Номер1,Стр1);
    Докум1=ПереченьДокументы.Получить(Стр1);
    СФОле.ВыбратьДокументы(НачДата,КонДата);
    ЕстьС = 0;
    Пока СФОле.ПолучитьДокумент()=1 Цикл
    Если СокрЛП(Строка(СФОле.ДокументОснование.НомерДок))= СокрЛП(Строка(Докум1.НомерДок)) Тогда
    СчетФактураНомер="Д"+СокрЛП(Строка(СФОле.НомерДок));
    СчетФактураДата=СФОле.ДатаДок;
    ЕстьС=1;
    Если СокрЛП(СФОле.Контрагент.ИНН)<>"" Тогда
    Если Кон.НайтиПоРеквизиту("ИНН",СокрЛП(СФОле.Контрагент.ИНН),1)=1 Тогда
    Контрг=Кон.ТекущийЭлемент();
    КонецЕсли;
    КонецЕсли;
    Если СокрЛП(СФОле.Грузополучатель.ИНН)<>"" Тогда
    Если Кон.НайтиПоРеквизиту("ИНН",СокрЛП(СФОле.Грузополучатель.ИНН),1)=1 Тогда
    Груз=Кон.ТекущийЭлемент();
    Иначе
    Кон.Новый();
    Кон.Наименование=СокрЛП(СФОле.Грузополучатель.Наименование);
    Кон.ИНН=СокрЛП(СФОле.Грузополучатель.ИНН);
    Кон.Записать();
    Груз=Кон.ТекущийЭлемент();
    КонецЕсли;
    КонецЕсли;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Если ЕстьС=1 Тогда
    Если СчетФакт.ВыбратьДокументы(НачДата,КонДата)=1 Тогда
    Если СчетФакт.НайтиПоНомеру(СчетФактураНомер,СчетФактураДата)=1 Тогда
    Если СчетФакт.Проведен()=1 Тогда
    СчетФакт.СделатьНеПроведенным();
    КонецЕсли;
    СчетФакт.Контрагент = Контрг;
    СчетФакт.Грузополучатель = Груз;
    СчетФакт.ВерсияОбъекта="7.70.500";
    СчетФакт.Записать();
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
  10. TopicStarter Overlay
    Norvin
    Offline

    Norvin

    Регистрация:
    26 июл 2012
    Сообщения:
    33
    Симпатии:
    1
    Баллы:
    1
    Код, по которому заполняется счет-фактура. Глупо, но попытался сделать цикл заного, но уже с существующими счетами-фактур... Если заккоментирую строку " ОткрытьФорму", тогда все нормально, он вставляет контрагентов, но с ней он не меняет мне их... Вернее даже так, в журнале в строке отображается должный контрагент, открываю саму счет-фактуру - там все тот же "левый" контрагент =))) не успел отредактировать =))))
  11. TopicStarter Overlay
    Norvin
    Offline

    Norvin

    Регистрация:
    26 июл 2012
    Сообщения:
    33
    Симпатии:
    1
    Баллы:
    1

    Вложения:

  12. TopicStarter Overlay
    Norvin
    Offline

    Norvin

    Регистрация:
    26 июл 2012
    Сообщения:
    33
    Симпатии:
    1
    Баллы:
    1
    Ошибка где-то здесь, визуально он отображает этот договор, но не использует его.
    Код:
     Договор=СоздатьОбъект("Справочник.Договоры"); 
    Договор.ИспользоватьВладельца(Объект.Контрагент);
    Если Договор.НайтиПоНаименованию(СокрЛП(Док.Договор.Наименование),0,1)=1 Тогда
    Объект.Договор=Договор.ТекущийЭлемент();
    Иначе
    Объект.Договор=Объект.Контрагент.ДоговорОсновной;
    КонецЕсли;
  13. TopicStarter Overlay
    Norvin
    Offline

    Norvin

    Регистрация:
    26 июл 2012
    Сообщения:
    33
    Симпатии:
    1
    Баллы:
    1
    Проблему решил жесткой привязкой к договору
    Код:
    Дог=СоздатьОбъект("Справочник.Договоры"); 
    Дог.ИспользоватьВладельца(Объект.Контрагент);
    Дог.ВыбратьЭлементы();
    Пока Дог.ПолучитьЭлемент() = 1 Цикл
    Если СокрЛП(Дог.Наименование) = СокрЛП(Строка(Док.Договор.Наименование)) Тогда
    Объект.Договор = Дог.ТекущийЭлемент();
    Прервать;
    Иначе
    Дог.Новый() ;
    Дог.Наименование = "Поставка ГП, товаров, услуг";
    Дог.ВидДоговора = "Поставка ГП, товаров, услуг";
    Дог.Записать(); 
    Объект.Договор = Дог.ТекущийЭлемент(); 
    Прервать;
    КонецЕсли;
    КонецЦикла;

Поделиться этой страницей