Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 12:06

Замена ссылки на договор в документах при обмене УТ -> БП

Автор Overllord, 31 авг 2023, 13:01

0 Пользователей и 1 гость просматривают эту тему.

Overllord

Здравствуйте, помогите советом, уже все перепробовал. Делаю обмен УТ 10.3.79.2 в БП 3.0.141.39 . Задача чтобы из ут не дублировались договоры при выгрузке в бп или хот бы что бы расчеты были в одном договоре контрагента. Пытаюсь в документах реализации, поступление, счет фактуры, счета на оплату вставить код, после загрузке в пко бухгалтерии подменять ссылки на договор.


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

В чем моя ошибка, друзья?

Kvark5d

Overllord, откуда ж мы узнаем в чем ошибка если Вы не описываете что не так? Система выдает ошибку? Не создается новый договор? или ???
Конструкция НовыйДоговор = Новый Справочник.ДоговорыКонтрагентов мне кажется странноватой.
Может так надо: НовыйДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();

Overllord

Kvark5d, ошибку не вылетает никакая, договоры также грузятся в Бугалтерию из УТ, договор так же не создается если нет у контрагента.

fruitella

Думаю в этой строке, конфигуратор случайно не ругался на синтаксическую ошибку?
НовыйДоговор = Новый Справочник.ДоговорыКонтрагентов;

Надо бы дописать СоздатьЭлемент(), новый тоже уберите

Overllord

fruitella, ок, попробую, до создания договора в коде даже не доходит, если договор есть в БП грузит из ут, правила обмена отстой(

Overllord

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

Похожие темы (5)

Рейтинг@Mail.ru

Поиск