Вопрос с запросом

Новая тема
Показывать по сообщений
> все данные кинуть в SQL server 2003 и считать в нем через SQL запросы (благо ADO есть)<br> <br>Дурь.<br> <br>> ...система начинает превращаться в черный ящик<br> <br>Прежде чем лезть в систему нужно учиться.
Условия нужно накладываnm на виртуальную таблицу<br> <br> <br><pre>РегистрБухгалтерии.Хозрасчетный.Остатки(&Период,&Счет , Субконто1 = &Номенклатура И Субконто2 = &Склад , )<br><br></pre><br><br>Как-то так.... но не проверял.<br>и счет можно не передавать писать в самом запросе чтото вроде ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыНаСкладах)
"Я сделал так:<br><pre>    Выборка = Документы.ОтчетПроизводстваЗаСмену.Выбрать(НачПериода,КонПериода);<br>    <br>    Пока Выборка.Следующий() Цикл<br>        Документ = Выборка.ПолучитьОбъект();<br>        Попытка <br>            Документ.Записать(РежимЗаписиДокумента.Проведение);<br>        Исключение<br>            ЗапросОстатки = Новый Запрос;<br>            ЗапросОстатки.Текст = <br>            "ВЫБРАТЬ<br>            |    ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК Количество,<br>            |    ХозрасчетныйОстаткиИОбороты.Субконто1.Ссылка КАК Номенклатура,<br>            |    ХозрасчетныйОстаткиИОбороты.Субконто2.Ссылка КАК Склад<br>            |ИЗ<br>            |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, Период, , Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстаткиИОбороты<br>            |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ<br>            |            Склады.Ссылка КАК Ссылка<br>            |        ИЗ<br>            |            Справочник.Склады КАК Склады<br>            |        ГДЕ<br>            |            Склады.ПометкаУдаления = ЛОЖЬ<br>            |            И Склады.Ссылка <> &ВыборкаСклад) КАК Склады<br>            |        ПО ХозрасчетныйОстаткиИОбороты.Субконто2.Ссылка = Склады.Ссылка<br>            |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ<br>            |            ОтчетПроизводстваЗаСмену.Материалы.(<br>            |                Номенклатура КАК Номенклатура<br>            |            ) КАК Материалы<br>            |        ИЗ<br>            |            Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену<br>            |        ГДЕ<br>            |            ОтчетПроизводстваЗаСмену.Ссылка = &Ссылка<br>            |            И ОтчетПроизводстваЗаСмену.Проведен = ИСТИНА) КАК ОтчетПроизводства<br>            |        ПО ХозрасчетныйОстаткиИОбороты.Субконто1.Ссылка = ОтчетПроизводства.Материалы.Номенклатура.Ссылка<br>            |<br>            |УПОРЯДОЧИТЬ ПО<br>            |    Номенклатура,<br>            |    Количество УБЫВ";<br>            ЗапросОстатки.УстановитьПараметр("НачПериода", Выборка.Дата-1);<br>            ЗапросОстатки.УстановитьПараметр("конПериода", Выборка.Дата-1);<br>            ЗапросОстатки.УстановитьПараметр("Ссылка", Выборка.Ссылка);<br>            ЗапросОстатки.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01"));<br>            ЗапросОстатки.УстановитьПараметр("ВыборкаСклад", Выборка.Склад);<br>            <br>            ТЗ = ЗапросОстатки.Выполнить().Выгрузить();<br></pre><br><br><br>Суть этого в следующем: выбираем список документов за период. Если документ при проведении выдал ошибку, то идем в запрос. Для каждой номенклатуры в ТЧ документа находим именно отрицательные остатки - 99% документ не перепровелся именно поэтому, а далее дело техники.<br>Все равно запрос получился в цикле, потому что нужно перебрать все документы за выбранный период, и в каждом документе свою ТЧ, и по результатам мы получаем количество, которого на складе в момент проведения нет. А значит, нужно искать на другом складе, чтобы оборотка была красивой, а не сплошь красной. Вторым запросом для номенклатуры, количества которой не хватает на складе, мы ищем альтернативу на других складах, и перемещаем её. В результате документ проводицца красиво.<br>Наверно, объяснил сумбурно - я уже полтора суток на ногах, и думать, честно говоря, лень.<br>Однако, по сравнению с первым предложенным вариантом этот запрос работает раз в десять быстрееэ"
> по сравнению с первым предложенным вариантом этот запрос работает раз в десять быстрееэ<br>его можно сделать еще быстрее, если вынести склады и документы во временные таблицы
Читают тему
(гостей: 1)

Быстрый переход