8.х БП Перепродажа между фирмами

Тема в разделе ""1С:Бухгалтерия БП"", создана пользователем Snegur, 26 апр 2017.

  1. TopicStarter Overlay
    Snegur
    Offline

    Snegur Опытный в 1С

    Регистрация:
    20 июн 2016
    Сообщения:
    253
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте
    обработка должна найти документ с одинаковыми параметрами и перезаписать их(поступление и реализация) и если такой перепродажи не было ещё,то создать новые и заполнить их
    Сейчас у меня перезаписывается только документ реализации
    А поступление постоянно дублируется, Помогите найти ошибку почему ?
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Если НЕ ЗначениеЗаполнено(Поступление)
    ИЛИ НЕ ЗначениеЗаполнено(Покупатель)
    ИЛИ НЕ ЗначениеЗаполнено(Поставщик)
    ИЛИ НЕ ЗначениеЗаполнено(ОрганизацияПолучатель)Тогда
    ВызватьИсключение "Не все значения заполнены";
    КонецЕсли;

    Если не Поступление.Организация <> ОрганизацияПолучатель Тогда
    ВызватьИсключение "Поступление и Поставщик не должны быть одинаковые";
    КонецЕсли;

    Запрос = Новый запрос("
    |ВЫБРАТЬ
    | Договоры.Ссылка
    |ИЗ
    | Справочник.ДоговорыКонтрагентов КАК Договоры
    |ГДЕ
    | Договоры.Владелец = &Владелец
    | И Договоры.Организация = &Организация
    | И Договоры.ВидДоговора = &ВидДоговора
    | ");
    Запрос.УстановитьПараметр("Владелец", Покупатель);
    Запрос.УстановитьПараметр("Организация", Поступление.Организация);
    Запрос.УстановитьПараметр("ВидДоговора", Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);

    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Если НЕ ВыборкаДетальныеЗаписи.Следующий()Тогда
    ВызватьИсключение "У " + Строка(Покупатель) + " не найден договор с " + Строка(Поступление.Организация);
    ИНАЧЕ
    Договор1 = ВыборкаДетальныеЗаписи.Ссылка;
    КонецЕсли;

    Запрос.УстановитьПараметр("Владелец", Поставщик);
    Запрос.УстановитьПараметр("Организация", ОрганизацияПолучатель);
    Запрос.УстановитьПараметр("ВидДоговора", Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком);

    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Если НЕ ВыборкаДетальныеЗаписи.Следующий()Тогда
    ВызватьИсключение "У " + Строка(Поставщик) + " не найден договор с " + Строка(ОрганизацияПолучатель);
    ИНАЧЕ
    Договор2 = ВыборкаДетальныеЗаписи.Ссылка;
    КонецЕсли;

    Если НЕ Поступление.Проведен Тогда
    ВызватьИсключение "Проведите Документ";
    КонецЕсли;

    Запрос = Новый запрос("
    |ВЫБРАТЬ Первые 1
    | ПоступлениеТоваров.Ссылка КАК Ссылка
    |ИЗ
    | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваров
    |ГДЕ
    | ПоступлениеТоваров.Сделка.Сделка = &Поступление
    | И ПоступлениеТоваров.Сделка.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
    | ");

    Запрос.УстановитьПараметр("Поступление", Поступление);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Если ВыборкаДетальныеЗаписи.Следующий()Тогда
    Режим = РежимДиалогаВопрос.ДаНет;
    Ответ = Вопрос("Вы действительно хотите перезаписать документ ПерепродажаСобственнойФирме?",Режим,0);
    Если Ответ = КодВозвратаДиалога.Да Тогда
    РТиУ = ВыборкаДетальныеЗаписи.Ссылка.Сделка.ПолучитьОбъект();
    ПТиУ = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
    Иначе
    Возврат;
    КонецЕсли;
    Иначе
    РТиУ = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
    ПТиУ = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    КонецЕсли;

    РТиУ.Заполнить(Поступление);
    РТиУ.Дата = ТекущаяДата();
    РТиУ.Организация = Поступление.Организация;
    РТиУ.ДоговорКонтрагента = Договор1;
    РТиУ.Контрагент = Покупатель;
    РТиУ.Ответственный = ПараметрыСеанса.ТекущийПользователь;
    РТиУ.Склад = Поступление.СкладОрдер;
    РТиУ.УчитыватьНДС = Поступление.УчитыватьНДС;
    РТиУ.СуммаВключаетНДС = Поступление.СуммаВключаетНДС;
    РТиУ.Сделка = Поступление.Ссылка;
    РТиУ.ОтражатьВБухгалтерскомУчете = Поступление.ОтражатьВБухгалтерскомУчете;
    РТиУ.ОтражатьВНалоговомУчете = Поступление.ОтражатьВНалоговомУчете;
    РТиУ.ОтражатьВУправленческомУчете = Поступление.ОтражатьВУправленческомУчете;

    РТиУ.Товары.Очистить();

    Для Каждого СтрокаТЧ Из Поступление.Товары Цикл
    НС = РТиУ.Товары.Добавить();
    ЗаполнитьЗначенияСвойств(НС , СтрокаТЧ);
    НС.СпособСписанияОстаткаТоваров = Перечисления.СпособыСписанияОстаткаТоваров.СоСклада;
    КонецЦикла;

    РТиУ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
    РТиУ.ПолучитьФорму().Открыть();
    РТиУ.Комментарий = "# ПерепродажаСобственнойФирме";

    ПТиУ = Поступление.Скопировать();
    ПТиУ.Организация = ОрганизацияПолучатель;
    ПТиУ.Контрагент = Поставщик;
    ПТиУ.ДоговорКонтрагента = Договор2;
    ПТиУ.Ответственный = ПараметрыСеанса.ТекущийПользователь;
    ПТиУ.Дата = РТиУ.Дата + 1;
    ПТиУ.Комментарий = "# ПерепродажаСобственнойФирме";

    ПТиУ.Сделка = РТиУ.Ссылка;
    ПТиУ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
    ПТиУ.ПолучитьФорму().Открыть();

    КонецПроцедуры;

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