Выбор Движений документа по конкретному регистру, с помощью прямого запроса

26.05.11

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

Чтобы узнать какие движения сделал документ по конкретному регистру, в моем случае это регистр "ОстаткиПоСчетам" (оборотный), была написана следующая функция в глобальном модуле. Работает только для SQL версии и установленной внешнй компонентой 1С++!

 

 

 

 

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

Функция глВыбратьДвиженияДокумента(ВыбДок,ВыбСклад="") Экспорт
 Перем ТЗ;
 RSДвиж = СоздатьОбъект("ODBCRecordset");
 ТекстЗапроса = "
 |SELECT
 |    Рег.IDDoc as [Док $Документ],
 |    Жур.IDDocDef as Док_вид,
 |    $Рег.Склад as [Склад $Справочник.Склады],
 |    $Рег.Количество        as Количество,
 |    $Рег.Отгружено         as Отгружено,
 |    $Рег.Зарезервировано   as Зарезервировано,
 |    $Рег.НаСборку          as НаСборку,
 |    $Рег.Собрано           as Собрано,
 |    $Рег.ОтгруженоПоСкладу as ОтгруженоПоСкладу
 |FROM
 |    $Регистр.ОстаткиПоСчетам as Рег
 |INNER JOIN
 |    _1Sjourn as Жур ON Жур.IDDoc = Рег.IDDoc
 |WHERE {Условие}
// |    Рег.IDDoc = :ВыбДок AND $Рег.Склад = :ВыбСклад
 |";
 Если ВыбСклад <> "" Тогда
        стр = "Рег.IDDoc = :ВыбДок AND $Рег.Склад = :ВыбСклад AND (Жур.ISMARK<=?)";
 Иначе
  стр = "Рег.IDDoc = :ВыбДок AND (Жур.ISMARK<=?)";
 КонецЕсли;
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "{Условие}", стр) ;
    RSДвиж.УстановитьТекстовыйПараметр("ВыбДок",ВыбДок);
 RSДвиж.УстановитьТекстовыйПараметр("ВыбСклад",ВыбСклад);
 ТЗ = RSДвиж.ВыполнитьИнструкцию(ТекстЗапроса);
 ТЗ.Свернуть("Док","Количество,Отгружено,Зарезервировано,НаСборку,Собрано,ОтгруженоПоСкладу");
 Если  ПустоеЗначение(ТЗ) = 1 Тогда
  Возврат 0;
 Иначе
    Возврат ТЗ
    КонецЕсли;  
КонецФункции

 

См. также

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

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

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

10.08.2022    2952    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    37784    Serginio    22    

44

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

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

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

05.07.2015    21707    json    3    

22

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

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

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

3 стартмани

25.03.2014    25169    5    protexprotex    3    

5

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

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

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

1 стартмани

06.12.2012    14098    nicotin    5    

9

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

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

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

1 стартмани

14.04.2012    33896    303    set2333    16    

11
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Noy 1076 26.05.11 13:11 Сейчас в теме
ээээ...
конечно похвально использование прямых запросов, но зачем же постить банальную и абсолютно не универсальную функцию???

вот так не проще?
Функция ПолучитьДвиженияДокументаПоРегистру(Док,Рег) //Док - ссылка, Рег - идентификатор регистра
Запрос = СоздатьОбъект("ODBCRecordset");
МетаДатаВорк=СоздатьОбъект("MetaDataWork");
ТекстЗапроса = "SELECT * FROM $Регистр."+Рег+" where IDDoc = '"+МетаДатаВорк.ЗначениеВСтрокуБД(Док)+"'";
Запрос.АвтоТипизация(1);
ТЗ=СоздатьОбъект("ТаблицаЗначений");
Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗ);
Возврат ТЗ;
КонецФункции // ПолучитьДвиженияДокументаПоРегистру

+
2. Vix 28 26.05.11 13:44 Сейчас в теме
(1)каждый с чегото начинает, и не сразу может сесть и поехать на велосипеде, я только начал осваивать прямые запросы, и первое, что захотел сделать это избавиться от стандартных 1С решений, пусть это является пока не универсальным решением, а для узкой задачи, но все же нашло применение в моем случае. За ваш униварсальный вариант, конечно +5. :) Но я бы к этому универсальному варианту добавил вывод не идентификаторов обектов, а сразу имена. В данном случае вывести документ с именем.

Функция ПолучитьДвиженияДокументаПоРегистру(Док,Рег) Экспорт//Док - ссылка, Рег - идентификатор регистра
Запрос = СоздатьОбъект("ODBCRecordset");
МетаДатаВорк=СоздатьОбъект("MetaDataWork");
ТекстЗапроса = "
|SELECT Рег.IDDoc as [Док $Документ],
| Жур.IDDocDef as Док_вид,
| *
|FROM $Регистр."+Рег+" as Рег
|INNER JOIN
| _1Sjourn as Жур ON Жур.IDDoc = Рег.IDDoc
|WHERE Рег.IDDoc = '"+МетаДатаВорк.ЗначениеВСтрокуБД(Док)+"'
|";
Запрос .АвтоТипизация(1);
ТЗ=СоздатьОбъект("ТаблицаЗначений");
Запрос .ВыполнитьИнструкцию(ТекстЗапроса,ТЗ);
Возврат ТЗ;
КонецФункции // ПолучитьДвиженияДокументаПоРегистру
+
3. Serge_ASB 06.08.18 13:53 Сейчас в теме
Если в запросе к SQL использую группировки (и суммирование в них), как при "разборе" результатов организуется обход по группировкам (аналог пока Запрос.Группировка() = 1 цикл)?
+
4. Vix 28 06.08.18 15:07 Сейчас в теме
(3) http://www.it.homeclub.top/?p=130 почитайте тут. Сначала группируете group BY потом с помощью ROLLUP получаете данные с итогами
Serge_ASB; +1
Внимание! Тема сдана в архив