По теме из базы знаний
Найденные решения
(1) OrenLiTo, Советую перейти на прямые запросы. Работает в разы быстрее. Вот небольшой пример поиска самой свежей (последней партии) по регистру остатков.
//инициализируем текст прямого параметризированного запроса для получения последней (самой свежей) партии товара на Основном складе
ТекстЗапросаПоследняяПартия="
|DECLARE @Tov Char(9)
|SET @Tov = ?
|SELECT TOP 1
| $РегОст.Партия AS [Партия $Документ]
|FROM
| $РегистрИтоги.ОстаткиТоваров AS РегОст
| LEFT JOIN _1SJourn AS Журнал ON
| Журнал.IDDoc=Right($РегОст.Партия,9)
|WHERE
| РегОст.Period = :ДатаТА AND
| $РегОст.Товар = @Tov AND
| $РегОст.Склад = :ОснСкл AND
| $РегОст.ОстатокТовара > 0
|ORDER BY Журнал.DocNo Desc
|";
ЗапросSQLПоследняяПартия = СоздатьОбъект("ODBCRecordset");
ЗапросSQLПоследняяПартия.УстановитьТекстовыйПараметр("ДатаТА",НачМесяца(ПолучитьДатуТА()));
ЗапросSQLПоследняяПартия.УстановитьТекстовыйПараметр("ОснСкл",Константа.ОснСклад);
ЗапросSQLПоследняяПартия.Подготовить(ТекстЗапросаПоследняяПартия);
ЗапросSQLПоследняяПартия.ДобПараметр(1,14,9,0);
ЗапросSQLПоследняяПартия.РежимRPC(1);
Регистр остатков имеет 3 измерения: Товар, Склад, Партия. (партия это ссылка на документ прихода). Запрос возвращает ссылку на последний документ прихода по которому имеются остатки на складе. Раньше этот запрос выполнялся стандартными методами 1с. После перехода на прямой запрос ускорение было порядка 10 раз. Так что советую потратить неделю-две времени на изучение прямых запросов. Потраченное на это время, окупится сторицей.
//инициализируем текст прямого параметризированного запроса для получения последней (самой свежей) партии товара на Основном складе
ТекстЗапросаПоследняяПартия="
|DECLARE @Tov Char(9)
|SET @Tov = ?
|SELECT TOP 1
| $РегОст.Партия AS [Партия $Документ]
|FROM
| $РегистрИтоги.ОстаткиТоваров AS РегОст
| LEFT JOIN _1SJourn AS Журнал ON
| Журнал.IDDoc=Right($РегОст.Партия,9)
|WHERE
| РегОст.Period = :ДатаТА AND
| $РегОст.Товар = @Tov AND
| $РегОст.Склад = :ОснСкл AND
| $РегОст.ОстатокТовара > 0
|ORDER BY Журнал.DocNo Desc
|";
ЗапросSQLПоследняяПартия = СоздатьОбъект("ODBCRecordset");
ЗапросSQLПоследняяПартия.УстановитьТекстовыйПараметр("ДатаТА",НачМесяца(ПолучитьДатуТА()));
ЗапросSQLПоследняяПартия.УстановитьТекстовыйПараметр("ОснСкл",Константа.ОснСклад);
ЗапросSQLПоследняяПартия.Подготовить(ТекстЗапросаПоследняяПартия);
ЗапросSQLПоследняяПартия.ДобПараметр(1,14,9,0);
ЗапросSQLПоследняяПартия.РежимRPC(1);
Регистр остатков имеет 3 измерения: Товар, Склад, Партия. (партия это ссылка на документ прихода). Запрос возвращает ссылку на последний документ прихода по которому имеются остатки на складе. Раньше этот запрос выполнялся стандартными методами 1с. После перехода на прямой запрос ускорение было порядка 10 раз. Так что советую потратить неделю-две времени на изучение прямых запросов. Потраченное на это время, окупится сторицей.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) OrenLiTo, Советую перейти на прямые запросы. Работает в разы быстрее. Вот небольшой пример поиска самой свежей (последней партии) по регистру остатков.
//инициализируем текст прямого параметризированного запроса для получения последней (самой свежей) партии товара на Основном складе
ТекстЗапросаПоследняяПартия="
|DECLARE @Tov Char(9)
|SET @Tov = ?
|SELECT TOP 1
| $РегОст.Партия AS [Партия $Документ]
|FROM
| $РегистрИтоги.ОстаткиТоваров AS РегОст
| LEFT JOIN _1SJourn AS Журнал ON
| Журнал.IDDoc=Right($РегОст.Партия,9)
|WHERE
| РегОст.Period = :ДатаТА AND
| $РегОст.Товар = @Tov AND
| $РегОст.Склад = :ОснСкл AND
| $РегОст.ОстатокТовара > 0
|ORDER BY Журнал.DocNo Desc
|";
ЗапросSQLПоследняяПартия = СоздатьОбъект("ODBCRecordset");
ЗапросSQLПоследняяПартия.УстановитьТекстовыйПараметр("ДатаТА",НачМесяца(ПолучитьДатуТА()));
ЗапросSQLПоследняяПартия.УстановитьТекстовыйПараметр("ОснСкл",Константа.ОснСклад);
ЗапросSQLПоследняяПартия.Подготовить(ТекстЗапросаПоследняяПартия);
ЗапросSQLПоследняяПартия.ДобПараметр(1,14,9,0);
ЗапросSQLПоследняяПартия.РежимRPC(1);
Регистр остатков имеет 3 измерения: Товар, Склад, Партия. (партия это ссылка на документ прихода). Запрос возвращает ссылку на последний документ прихода по которому имеются остатки на складе. Раньше этот запрос выполнялся стандартными методами 1с. После перехода на прямой запрос ускорение было порядка 10 раз. Так что советую потратить неделю-две времени на изучение прямых запросов. Потраченное на это время, окупится сторицей.
//инициализируем текст прямого параметризированного запроса для получения последней (самой свежей) партии товара на Основном складе
ТекстЗапросаПоследняяПартия="
|DECLARE @Tov Char(9)
|SET @Tov = ?
|SELECT TOP 1
| $РегОст.Партия AS [Партия $Документ]
|FROM
| $РегистрИтоги.ОстаткиТоваров AS РегОст
| LEFT JOIN _1SJourn AS Журнал ON
| Журнал.IDDoc=Right($РегОст.Партия,9)
|WHERE
| РегОст.Period = :ДатаТА AND
| $РегОст.Товар = @Tov AND
| $РегОст.Склад = :ОснСкл AND
| $РегОст.ОстатокТовара > 0
|ORDER BY Журнал.DocNo Desc
|";
ЗапросSQLПоследняяПартия = СоздатьОбъект("ODBCRecordset");
ЗапросSQLПоследняяПартия.УстановитьТекстовыйПараметр("ДатаТА",НачМесяца(ПолучитьДатуТА()));
ЗапросSQLПоследняяПартия.УстановитьТекстовыйПараметр("ОснСкл",Константа.ОснСклад);
ЗапросSQLПоследняяПартия.Подготовить(ТекстЗапросаПоследняяПартия);
ЗапросSQLПоследняяПартия.ДобПараметр(1,14,9,0);
ЗапросSQLПоследняяПартия.РежимRPC(1);
Регистр остатков имеет 3 измерения: Товар, Склад, Партия. (партия это ссылка на документ прихода). Запрос возвращает ссылку на последний документ прихода по которому имеются остатки на складе. Раньше этот запрос выполнялся стандартными методами 1с. После перехода на прямой запрос ускорение было порядка 10 раз. Так что советую потратить неделю-две времени на изучение прямых запросов. Потраченное на это время, окупится сторицей.
Прошу прощения. Не правильно описал ситуацию. Конфигурация полностью самописная. В регистрации пишутся цены с привычкой к документу поступления. На данный момент задача решается следующим образом:
Для каждого товара запросом выбираются все документы поступления и из них в цикле ищутся последние. Работает это ОЧЕНЬ долго. И вот хочу совета, как это сделать по правильному
Для каждого товара запросом выбираются все документы поступления и из них в цикле ищутся последние. Работает это ОЧЕНЬ долго. И вот хочу совета, как это сделать по правильному
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот