Прямой запрос на выборку подчиненных документов

26.05.11

Разработка - Запросы

Иногда необходимо получить список или таблицу документов, подчиненных выбранному. Для этого в глобальном модуле была написана функция с прямым запросом на выборку подчиненных документов. Работает только в SQL версии и при установленной внешней компоненте 1С++ !

 

 

 

 

 

//глобальные переменные

 

Перем RS Экспорт ;
Перем RSподч Экспорт ;
Перем RSДвиж Экспорт ;
Перем МетаДата Экспорт ;  

 

Функция глВыбратьПодчиненныеДокументы(Док,ВидДок="",УдПров=1) Экспорт
 Перем ТЗ;
 RSподч = СоздатьОбъект("ODBCRecordset");
    ТекстЗапроса="
    |SELECT
    |   TabJ.IDDOC as ИдДокумента
    |  ,TabJ.IDDOCDEF as ВидДокумента
    |FROM
    | _1SCRDOC as Отбор (NOLOCK)
    |INNER JOIN
    | _1SJOURN As TabJ (NOLOCK) ON Отбор.ChildID = TabJ.IDDOC
    |WHERE {Условие}
 |";
 Если ВидДок <> "" Тогда
        стр = "(Отбор.ParentVal=?)  AND (TabJ.IDDOCDEF=?) AND (Отбор.MDID=0) AND (TabJ.Closed&1>=?) AND (TabJ.ISMARK=0)";
 Иначе
  стр = "(Отбор.ParentVal=?) AND (Отбор.MDID=0) AND (TabJ.Closed&1>=?) AND (TabJ.ISMARK=0)";
 КонецЕсли;
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "{Условие}", стр) ;
    //Если ПустоеЗначение(ДатаНач)=0 Тогда
    //    ТекстЗапроса = ТекстЗапроса + "AND TabJ.DATE_TIME_IDDOC>=МетаДата.ПолучитьСтрИзДаты(ДатаНач)";
    //КонецЕсли;
    //Если ПустоеЗначение(ДатаКон)=0 Тогда
    //    ТекстЗапроса = ТекстЗапроса + "AND TabJ.DATE_TIME_IDDOC<МетаДата.ПолучитьСтрИзДаты(ДатаКон+1)";
    //КонецЕсли;
 RSподч.Подготовить(ТекстЗапроса) ;
 RSподч.ДобПараметр(1,14,23,0) ;
 RSподч.ДобПараметр(1,3,4,0) ;
 RSподч.ДобПараметр(1,2,1,0) ;
 RSподч.ДобПараметр(1,2,1,0) ;
 
    ТЗЗапрос =СоздатьОбъект("ТаблицаЗначений");
    ТЗЗапрос.НоваяКолонка("Документ");
    RSподч.УстПараметр(1, МетаДата.ЗначениеВСамуюДлиннуюСтрокуБД(Док.ТекущийДокумент()), 1) ;
 Если ВидДок <> "" Тогда
     RSподч.УстПараметр(2, МетаДата.ИДДокумента(ВидДок)) ;
    КонецЕсли;  
 RSподч.УстПараметр(3, ?(УдПров=2,1,0)) ;
 ТЗ = RSподч.ВыполнитьИнструкцию(ТекстЗапроса);
    Если  ПустоеЗначение(ТЗ) = 1 Тогда
  Возврат 0;
 Иначе
     ТЗ.ВыбратьСтроки();
     Пока ТЗ.ПолучитьСтроку() = 1 Цикл
         ТЗЗапрос.НоваяСтрока();
         ТЗЗапрос.Документ=МетаДата.ЗначениеИзСтрокиБД(12,ТЗ.ВидДокумента,ТЗ.ИдДокумента);
     КонецЦикла;
     RSподч.Закрыть();
     Возврат ТЗЗапрос;
 КонецЕсли; 
КонецФункции

 

См. также

Микро консоль для запросов к MySQL базе из 1С: Предприятие 7.7

Инструментарий разработчика Запросы Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Обработка, позволяющая выполнять запросы к базе, лежащей в MySQL, для 1С:Предприятие 7.7.

10.08.2022    2936    4    crocolo    0    

2

.Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д.

Запросы Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Очень часто нужно при работе с HTTP сервисами или сайтами использовать Асинхронные HTTP запросы, отправку на сервер нескольких файлов, использование сжатия трафика. Эта статья про то, как этого легко добиться.

09.03.2016    37661    Serginio    22    

44

Универсальный способ сравнения таблиц

Универсальные функции Запросы Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

На эту тему уже есть статьи, но этот способ нигде не описан. Хотя я его использую с тех пор, как занимаюсь программированием. Его преимущество в простоте и универсальности: можно применять на 1С, SQL, а также в любом другом языке программирования.

05.07.2015    21652    json    3    

22

Пример получения остатков по складу по запросу по почте из программы 1С 7.7.

Запросы Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Пример получения остатков по складу по запросу по почте из программы 1С 7.7. Для получения остатков необходимо пользователю с любого почтовика (с любого "мыла") отправить текст сообщения GiveMyStockBalance_ForAnalize на почтовый адрес определенный в Константа.СерверПолучения. Программа выдаст остатки (можно переписать функцию для выдачи любых данных) в формате xls на почту указанную в константе Константа.СерверОтправки. Программа может быть полезна в тех организациях где трудно или невозможно осуществить прямой доступ к 1С сотрудников для просмотра необходимых данных. Также можно организовать некий почтамт - запрос для клиентов - при посылке определенного логина клиентом на его почту будет автоматически выслана информация, например, акт сверки с клиентов, или процент выполнения его заказа и т.д.

3 стартмани

25.03.2014    25149    5    protexprotex    3    

5

Реализация условий в прямых запросах к журналу расчета.

Зарплата Запросы Расчет 7.7 1С:Зарплата и кадры 7.7 Абонемент ($m)

Обзор методов реализации условий и функций с условиями в обращениях к журналу расчетов при помощи прямого запроса.

1 стартмани

06.12.2012    14086    nicotin    5    

9

Универсальный отчет - Конструктор запросов для 1С 7.7

Запросы Платформа 1С v7.7 Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Абонемент ($m)

Универсальный отчет для конфигураций на платформе 1С 7.7. Умеет обращатся к справочникам, документам, регистрам и журналам расчетов. Удобен для быстрого получения каких либо данных, которые можно получить посредствам запроса. Предусмотренна возможность сохранения настроек.

1 стартмани

14.04.2012    33861    303    set2333    16    

11
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1448 26.05.11 10:53 Сейчас в теме
Почему не указано, что только для СКЛ?
2. Vix 28 26.05.11 11:09 Сейчас в теме
3. Зеленоград 27.11.15 13:01 Сейчас в теме
Спасибо, буду использовать. Скорость сравнивал?
4. Vix 28 08.01.16 16:57 Сейчас в теме
(3) Зеленоград, Давно это было, но скорость в десятки раз была выше стандартных запросов 1С
5. EddL 29.09.17 18:36 Сейчас в теме
Если период небольшой скорость не сильно отличается
6. Cерый 25 10.03.21 18:43 Сейчас в теме
Благодарю Вас!
МетаДата = СоздатьОбъект("MetaDataWork");
AddParam/ДобПараметр, SetParam/УстПараметр - возможно, могло быть более развернуто (конечно, краткость - сестра таланта ...)
Оставьте свое сообщение