Здравствуйте, в УТ сделал запрос который выполняется при изменении поля номенклатуры:
Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ |Номенклатура, ТипЦен, Цена |ИЗ |РегистрСведений.ЦеныНоменклатуры.СрезПоследних |ГДЕ Номенклатура = &Номенклатура"; Для Каждого СтрТовары Из Товары Цикл
ТекНоменклатура = СтрТовары.Номенклатура; Запрос.УстановитьПараметр("Номенклатура", ТекНоменклатура); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл
Если Выборка.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупка") Тогда
СтрТовары.Закупка = Выборка.Цена;
КонецЕсли;
Если Выборка.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Роздрібний") Тогда
СтрТовары.Продажа = Выборка.Цена;
КонецЕсли;
КонецЦикла;
КонецЦикла;
И в результате этого запроса тупо висит сервер, и проц компьютера на котором заходили в сервер тоже загружен на 100%, но если не изменять номенклатуру, то все работает нормально, подскажите в чем может быть проблема?
Самая нелюбимая пословица сапёров: одна нога здесь, другая там...
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Вы изобрели авианосец для перевозки пары зернышек. Вообще, то что Вы сделали это жуть.
Вам нужно при изменении номенклатуры вызывать процедуру которая два раза отфильтрует регистр по номенклатуре, в каждом случае с отдельной ценой, и подставить в нужные значения строки.
Личные бесплатные консультации не даю, для этого есть форум!
Вы изобрели авианосец для перевозки пары зернышек. Вообще, то что Вы сделали это жуть.
Вам нужно при изменении номенклатуры вызывать процедуру которая два раза отфильтрует регистр по номенклатуре, в каждом случае с отдельной ценой, и подставить в нужные значения строки.
Проблему я решил, как оказалось дело было не в этом запросе. Но почему лучше сделать отбор, а не запрос?
Самая нелюбимая пословица сапёров: одна нога здесь, другая там...
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(DartRomanius @ 02.02.11, 11:49)
Для Каждого СтрТовары Из Товары Цикл
Так как телепаты в отпуску...
вопрос? а это что перебирается в цикле то?
Телепаты на месте, перебирается ТЧ "Товары", начальная школа 2-й класс.
Цитата(meverikxp @ 02.02.11, 11:53)
Проблему я решил, как оказалось дело было не в этом запросе.
Расскажите как решили, нам очень интересно.
Цитата(meverikxp @ 02.02.11, 11:53)
Но почему лучше сделать отбор, а не запрос?
Ну представьте, Вы делаете салат, достаете из холодильника 10 продуктов, а потом выбираете 2 из них которые будут необходимы... Наверное лучше будет из холодильника достать сразу только 2 продукта.
Личные бесплатные консультации не даю, для этого есть форум!
Ну представьте, Вы делаете салат, достаете из холодильника 10 продуктов, а потом выбираете 2 из них которые будут необходимы... Наверное лучше будет из холодильника достать сразу только 2 продукта.
А как результаты отбора поместить в ячейки?
Самая нелюбимая пословица сапёров: одна нога здесь, другая там...
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(meverikxp @ 02.02.11, 12:14)
Здравствуйте, в УТ сделал запрос который выполняется при изменении поля номенклатуры: ... И в результате этого запроса тупо висит сервер, и проц компьютера на котором заходили в сервер тоже загружен на 100%, но если не изменять номенклатуру, то все работает нормально, подскажите в чем может быть проблема?
А почему никто не сказал, что вызывать запрос ВНУТРИ цикла - это моветон? Почему бы (если очень уж хочется сделать это запросом) не выгрузить всю номенклатуру в массив/таблицу значений и не передать ее в запрос одним параметром?
Цитата(Batchir @ 02.02.11, 14:38)
функция в общем модуле Ценообразование имеет вид ПолучитьЦенуНоменклатуры(Номенклатура, ХарактеристикаНоменклатуры = Неопределено, Знач ТипЦен, ДатаПараметр = Неопределено, ЕдиницаИзмерения = Неопределено, Валюта = Неопределено, Курс = 0, Кратность = 1, ПроцентСкидкиНаценки = 0, ДоговорКонтрагента = Неопределено, УсловиеПродаж = Неопределено)
Я бы сделал это чуть изящнее:
ТипЦенЗакупочная = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупка"); ТипЦенРозничная = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Роздрібний"); Для Каждого СтрТовары Из Товары Цикл ТекНоменклатура = СтрТовары.Номенклатура; СтрТовары.Закупка = Ценообразование.ПолучитьЦенуНоменклатуры(ТекНоменклатура,,ТипЦенЗакупочная); СтрТовары.Продажа = Ценообразование.ПолучитьЦенуНоменклатуры(ТекНоменклатура,,ТипЦенРозничная); КонецЦикла;
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!