Вопрос с запросом
19.01.2012
10:13
#21
> все данные кинуть в SQL server 2003 и считать в нем через SQL запросы (благо ADO есть)<br> <br>Дурь.<br> <br>> ...система начинает превращаться в черный ящик<br> <br>Прежде чем лезть в систему нужно учиться.
19.01.2012
11:40
#22
Условия нужно накладываnm на виртуальную таблицу<br> <br> <br><pre>РегистрБухгалтерии.Хозрасчетный.Остатки(&Период,&Счет , Субконто1 = &Номенклатура И Субконто2 = &Склад , )<br><br></pre><br><br>Как-то так.... но не проверял.<br>и счет можно не передавать писать в самом запросе чтото вроде ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыНаСкладах)
20.01.2012
16:23
#23
"Я сделал так:<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>Однако, по сравнению с первым предложенным вариантом этот запрос работает раз в десять быстрееэ"
Читают тему
(гостей: 1)