Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
14 Июн 2021, 23:45
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
МультиВход
 
collapse

Автор Тема: Сравнение двух документов из разных баз  (Прочитано 1671 раз)

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

Оффлайн LES

  • *
  • Регистрация: 2017-01-26
  • Сообщений: 20
  • РЕПУТАЦИЯ: 0
  • Профессия: Ученик 1С
Здравствуйте
Есть два документа, которые берутся из разных баз при помощи запросов. Результат выборки записывается в табличную часть Данные, а далее из этой табличной части выводится в макет ПФ. Нужно сравнить эти документы и если их номера равны, то в макете он должны выводиться в 1 строку.
Как реализовать это сравнение? Сравнение при помощи цикла не очень подходит, т.к. большое количество документов. Спасибо!

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

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

   Пока Выборка.Следующий() Цикл

      НоваяСтрока = Объект.Данные.Добавить();
      НоваяСтрока.Номер       = Выборка.Номер;
      НоваяСтрока.Дата       = Выборка.Дата;
      НоваяСтрока.Ссылка       = Выборка.Ссылка;

   КонецЦикла;
   
   Запрос = Новый Запрос();   
   Запрос.Текст =
   "ВЫБРАТЬ
   |   Док2.Ссылка,
   |   Док2.Номер,
   |   Док2.Дата
   |ИЗ
   |   Документ.Док2 КАК Док2
   |ГДЕ
   |   Док2.Дата МЕЖДУ &Дата1 И &Дата2
   |   И Док2.Проведен
   |
   |УПОРЯДОЧИТЬ ПО
   |   Дата";

   Запрос.УстановитьПараметр("Дата1", НачалоДня(Объект.ВыбПериод.ДатаНачала));
   Запрос.УстановитьПараметр("Дата2", КонецДня(Объект.ВыбПериод.ДатаОкончания));
   
   Выборка2 = Запрос.Выполнить().Выбрать();

   Пока Выборка2.Следующий() Цикл
         
         НоваяСтрока = Объект.Данные.Добавить();
         НоваяСтрока.Номер       = Выборка2.Номер;
         НоваяСтрока.Дата       = Выборка2.Дата;
         НоваяСтрока.Ссылка       = Выборка2.Ссылка;      
      
   КонецЦикла;
   
   база = неопределено;
   
   ТабРезультат.Очистить();
   
   текОбъект = ЭтаФорма.РеквизитФормыВЗначение("Объект");
   Макет = текОбъект.ПолучитьМакет("Макет");   
   
   ОбластьШапка = Макет.получитьОбласть("Заголовок");
   ТабРезультат.Вывести(ОбластьШапка);
   
   Объект.Данные.Сортировать("Дата");
   
   ОбластьСтрока = Макет.ПолучитьОбласть("Строка");

   для Каждого Строка из Объект.Данные Цикл
      
      ОбластьСтрока.Параметры.Номер       = Строка.Номер;
      ОбластьСтрока.Параметры.Дата       = Строка.Дата;

      ТабРезультат.Вывести(ОбластьСтрока);
      
   КонецЦикла;


Оффлайн LexaK

  • *****
  • Регистрация: 2012-05-16
  • Сообщений: 2564
  • РЕПУТАЦИЯ: 820
  • КПД: 32%
  • Профессия: Программист 1С
вы выводите номер и дату,
когда номера равны это понятно, а если у документов с одинаковыми номерами разные даты?
что в этом случае будете выводить?

а вообще после получения данных из внешней базы и помещения их таблицу Данные, просто передайте эту таблицу во второй запрос и сравнивайте номера как вам надо, при этом используйте полное соединение
примерно так
выбрать 
    Таб.Номер,
    Таб.Дата
поместить Таб
из &Таблица Таб
;
выбрать
    ЕстьNull(Док.Номер,Таб.Номер) как Номер,
    Таб.Дата как Дата1,
    Док.Дата как Дата2
из Таб
полное соединение
   Документ.Док2 КАК Док
по Док.Номер = Таб.Номер
ГДЕ
   Док.Дата МЕЖДУ &Дата1 И &Дата2
   И Док.Проведен
УПОРЯДОЧИТЬ ПО
   1 //по номеру



Добавлено: 13 Июн 2017, 09:33


  Запрос.УстановитьПараметр("Дата1", НачалоДня(Объект.ВыбПериод.ДатаНачала));
  Запрос.УстановитьПараметр("Дата2", КонецДня(Объект.ВыбПериод.ДатаОкончания));
  Запрос.УстановитьПараметр("Таблица", Объект.Данные);


Помогло? - Нажми СПАСИБО (под аватаром) !!!
                       :)


Теги:
 

Что необходимо сделать для того, чтобы при оформлении документов менеджер мог ви

Автор DDDРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 3418
Последний ответ 25 Ноя 2008, 10:51
от DDD
1C 8.2 Вывод данных в форму списка документов

Автор Max-sliMРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 10
Просмотров: 11470
Последний ответ 26 Окт 2010, 18:17
от progmikon
Подпись документов ЭЦП

Автор KonstatineРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1408
Последний ответ 16 Авг 2019, 15:02
от Геннадий ОбьГЭС
Как запретить печать непроведенных документов Бух 2.0

Автор YamunaРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 226
Последний ответ 01 Дек 2020, 07:08
от Геннадий ОбьГЭС
Проведение документов в управление малым предпритием.

Автор Kamarali AnatoliРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 812
Последний ответ 02 Ноя 2016, 10:18
от LexaK

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Последние вакансии

* Том 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
72 Сообщений
LexaK
62 Сообщений
antoneus antoneus
31 Сообщений
Ивашка
27 Сообщений
KATERINA 861
23 Сообщений
neek666
23 Сообщений
alexandr_ll
15 Сообщений
SSC
15 Сообщений
Алексей_1985_06
11 Сообщений
BuhRust
8 Сообщений

* Кто онлайн

  • Точка Гостей: 220
  • Точка Скрытых: 0
  • Точка Пользователей: 1
  • Точка Сейчас на форуме:

* Облако тэгов

* Инструменты

* Дополнительно

Поиск