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