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

Выгрузка Документа из Бухгалтерии в Экологию

Автор Vasylii, 10 ноя 2022, 12:36

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

Vasylii

antoneus, по сути так если есть такой контрагент с инн и кпп то мы ищем его там и подставляем если нет то записываем

antoneus

А почему, если мы ищем его там, запрос выполняем здесь?

Vasylii

antoneus, мы ищем его здесь если есть и есть он там все ок, если нет то записываем новый

antoneus

Так. Значит, если он есть в текущей базе - будет так:

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   
    Если ВыборкаДетальныеЗаписи.Количество() = 1 тогда//в текущей базе контрагент есть
       
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            ИскомыйКонтрагент = ВыборкаДетальныеЗаписи.Ссылка;//получили ссылку на контрагента в текущей базе
        КонецЦикла;
       
    ИначеЕсли  ВыборкаДетальныеЗаписи.Количество() > 1 тогда
        ИскомыйКонтрагент = Подключение.Справочники.Контрагенты.НайтиПоРеквизиту("Систем_КодБухгалтерии", Контрагент.Код);
    КонецЕсли;   
   
   
    Если ИскомыйКонтрагент = Подключение.Справочники.Контрагенты.ПустаяСсылка() тогда//искомый контрагент - ссылка в текущей базе, он не равен пустой ссылке из подключения
        ИскомыйКонтрагент = Подключение.Справочники.Контрагенты.СоздатьЭлемент();
    Иначе
        ИскомыйКонтрагент = ИскомыйКонтрагент.ПолучитьОбъект();//получили объект контрагента в текущей базе
    КонецЕсли;
......

    //потом записываем контрагента в текущей базе

    ИскомыйКонтрагент.Систем_КодБухгалтерии = Контрагент.Код;//этот реквизит точно в текущей базе есть?
    ИскомыйКонтрагент.Наименование          = Контрагент.Наименование;;
  //и так далее

Если контрагента в текущей базе нет:

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   
    Если ВыборкаДетальныеЗаписи.Количество() = 1 тогда// условие не выполняется
       
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            ИскомыйКонтрагент = ВыборкаДетальныеЗаписи.Ссылка;
        КонецЦикла;
       
    ИначеЕсли  ВыборкаДетальныеЗаписи.Количество() > 1 тогда //условие тоже не выполняется
        ИскомыйКонтрагент = Подключение.Справочники.Контрагенты.НайтиПоРеквизиту("Систем_КодБухгалтерии", Контрагент.Код);
    КонецЕсли;

    Если ИскомыйКонтрагент = Подключение.Справочники.Контрагенты.ПустаяСсылка() тогда//ИскомыйКонтрагент = неопределено или что там валяется в этой переменной. Условие не выполняется
        ИскомыйКонтрагент = Подключение.Справочники.Контрагенты.СоздатьЭлемент();
    Иначе//а это выполняется
        ИскомыйКонтрагент = ИскомыйКонтрагент.ПолучитьОбъект();
    КонецЕсли;

Кажется, задумка все-таки другая была.

Vasylii

antoneus, все в точности как первый варианта кода ток в другой базе

Vasylii

я еще не понимаю как он может передавать значение в этот реквизит если он не доступен

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

Рейтинг@Mail.ru

Поиск