Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> 1c 8.2 вешает сервер терминалов          
meverikxp Подменю пользователя
сообщение 02.02.11, 11:14
Сообщение #1

Оратор
Иконка группы
Группа: Местный
Сообщений: 334
Из: Ровно
Спасибо сказали: 10 раз
Рейтинг: 0

Здравствуйте, в УТ сделал запрос который выполняется при изменении поля номенклатуры:
Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
|Номенклатура, ТипЦен, Цена
|ИЗ
|РегистрСведений.ЦеныНоменклатуры.СрезПоследних
|ГДЕ Номенклатура = &Номенклатура";
Для Каждого СтрТовары Из Товары Цикл
    
     ТекНоменклатура = СтрТовары.Номенклатура;
     Запрос.УстановитьПараметр("Номенклатура", ТекНоменклатура);
     Выборка = Запрос.Выполнить().Выбрать();
     Пока Выборка.Следующий() Цикл
        
         Если Выборка.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупка") Тогда
             
             СтрТовары.Закупка = Выборка.Цена;
                       
          КонецЕсли;
          
           Если Выборка.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Роздрібний") Тогда
            
              СтрТовары.Продажа = Выборка.Цена;
                            
            КонецЕсли;
                 
     КонецЦикла;
    
    
КонецЦикла;

И в результате этого запроса тупо висит сервер, и проц компьютера на котором заходили в сервер тоже загружен на 100%, но если не изменять номенклатуру, то все работает нормально, подскажите в чем может быть проблема?


Signature
Самая нелюбимая пословица сапёров: одна нога здесь, другая там...

Vofka Подменю пользователя
сообщение 02.02.11, 11:19
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Попробуйте сделать запрос так:
|ВЫБРАТЬ
|Номенклатура, ТипЦен, Цена
|ИЗ
|РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = &Номенклатура)

logist Подменю пользователя
сообщение 02.02.11, 11:27
Сообщение #3

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Вы изобрели авианосец для перевозки пары зернышек. Вообще, то что Вы сделали это жуть.

Вам нужно при изменении номенклатуры вызывать процедуру которая два раза отфильтрует регистр по номенклатуре, в каждом случае с отдельной ценой, и подставить в нужные значения строки.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 02.02.11, 11:31
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата
Вообще, то что Вы сделали это жуть.

В принципе да, я сразу код особо не разбирал.

DartRomanius Подменю пользователя
сообщение 02.02.11, 11:49
Сообщение #5

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Для Каждого СтрТовары Из Товары Цикл


Так как телепаты в отпуску... smile.gif

вопрос? а это что перебирается в цикле то?

ЗЫ: и некоторые операции можно в теле запроса указать наверное... smile.gif


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

Batchir Подменю пользователя
сообщение 02.02.11, 11:52
Сообщение #6

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Посмотрите общий модуль Ценообразование процедуру ПолучитьЦенуНоменклатуры.
Весь код у Вас приведется к виду:
СтрТовары.Закупка = Ценообразование.ПолучитьЦенуНоменклатуры(<параметры процедуры>);
СтрТовары.Продажа = Ценообразование.ПолучитьЦенуНоменклатуры(<параметры процедуры>);

meverikxp Подменю пользователя
сообщение 02.02.11, 11:53
Сообщение #7

Оратор
Иконка группы
Группа: Местный
Сообщений: 334
Из: Ровно
Спасибо сказали: 10 раз
Рейтинг: 0

Цитата(logist @ 02.02.11, 12:27) *
Вы изобрели авианосец для перевозки пары зернышек. Вообще, то что Вы сделали это жуть.

Вам нужно при изменении номенклатуры вызывать процедуру которая два раза отфильтрует регистр по номенклатуре, в каждом случае с отдельной ценой, и подставить в нужные значения строки.

Проблему я решил, как оказалось дело было не в этом запросе.
Но почему лучше сделать отбор, а не запрос?


Signature
Самая нелюбимая пословица сапёров: одна нога здесь, другая там...

logist Подменю пользователя
сообщение 02.02.11, 12:26
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(DartRomanius @ 02.02.11, 11:49) *
Для Каждого СтрТовары Из Товары Цикл


Так как телепаты в отпуску... smile.gif

вопрос? а это что перебирается в цикле то?

Телепаты на месте, перебирается ТЧ "Товары", начальная школа 2-й класс.

Цитата(meverikxp @ 02.02.11, 11:53) *
Проблему я решил, как оказалось дело было не в этом запросе.

Расскажите как решили, нам очень интересно.

Цитата(meverikxp @ 02.02.11, 11:53) *
Но почему лучше сделать отбор, а не запрос?

Ну представьте, Вы делаете салат, достаете из холодильника 10 продуктов, а потом выбираете 2 из них которые будут необходимы... Наверное лучше будет из холодильника достать сразу только 2 продукта.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

meverikxp Подменю пользователя
сообщение 02.02.11, 12:54
Сообщение #9

Оратор
Иконка группы
Группа: Местный
Сообщений: 334
Из: Ровно
Спасибо сказали: 10 раз
Рейтинг: 0

Цитата(logist @ 02.02.11, 13:26) *
Ну представьте, Вы делаете салат, достаете из холодильника 10 продуктов, а потом выбираете 2 из них которые будут необходимы... Наверное лучше будет из холодильника достать сразу только 2 продукта.

А как результаты отбора поместить в ячейки?


Signature
Самая нелюбимая пословица сапёров: одна нога здесь, другая там...

meverikxp Подменю пользователя
сообщение 02.02.11, 12:59
Сообщение #10

Оратор
Иконка группы
Группа: Местный
Сообщений: 334
Из: Ровно
Спасибо сказали: 10 раз
Рейтинг: 0

Цитата(logist @ 02.02.11, 13:26) *
Расскажите как решили, нам очень интересно.

Проблема бала в том что в Процедурам ПриВыводеСтроки()
сделал цикл и он "Зацыклелся"


Signature
Самая нелюбимая пословица сапёров: одна нога здесь, другая там...

logist Подменю пользователя
сообщение 02.02.11, 13:25
Сообщение #11

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(meverikxp @ 02.02.11, 12:59) *
Проблема бала в том что в Процедурам ПриВыводеСтроки()
сделал цикл и он "Зацыклелся"

А что Вы вообще делаете? если не секрет..

Цитата(meverikxp @ 02.02.11, 12:54) *
А как результаты отбора поместить в ячейки?

как-то так:
ОтборРегистра = РегистрыСведений.ИмяРегистра.СрезПоследних(Дата,СтруктураОтбора)
СтрокаТЧ = Элементы.Товары.ТекущаяСтрока
СтрокаТЧ.Цена = ОтборРегистра.Цена
СтрокаТЧ.Цена2 = ОтборРегистра.Цена2


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Batchir Подменю пользователя
сообщение 02.02.11, 13:38
Сообщение #12

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

функция в общем модуле Ценообразование имеет вид
ПолучитьЦенуНоменклатуры(Номенклатура, ХарактеристикаНоменклатуры = Неопределено, Знач ТипЦен,
ДатаПараметр = Неопределено, ЕдиницаИзмерения = Неопределено, Валюта = Неопределено, Курс = 0, Кратность = 1, ПроцентСкидкиНаценки = 0, ДоговорКонтрагента = Неопределено, УсловиеПродаж = Неопределено)

Вот код для Вашего случая
Для Каждого СтрТовары Из Товары Цикл
     ТекНоменклатура = СтрТовары.Номенклатура;
     ТипЦенЗакупочная = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупка");
     ТипЦенРозничная = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Роздрібний");
     СтрТовары.Закупка = Ценообразование.ПолучитьЦенуНоменклатуры(ТекНоменклатура,,ТипЦенЗакупочная);
     СтрТовары.Продажа = Ценообразование.ПолучитьЦенуНоменклатуры(ТекНоменклатура,,ТипЦенРозничная);
КонецЦикла;

Jaffar Подменю пользователя
сообщение 14.02.11, 13:14
Сообщение #13

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(meverikxp @ 02.02.11, 12:14) *
Здравствуйте, в УТ сделал запрос который выполняется при изменении поля номенклатуры:
...
И в результате этого запроса тупо висит сервер, и проц компьютера на котором заходили в сервер тоже загружен на 100%, но если не изменять номенклатуру, то все работает нормально, подскажите в чем может быть проблема?

А почему никто не сказал, что вызывать запрос ВНУТРИ цикла - это моветон? Почему бы (если очень уж хочется сделать это запросом) не выгрузить всю номенклатуру в массив/таблицу значений и не передать ее в запрос одним параметром?

Цитата(Batchir @ 02.02.11, 14:38) *
функция в общем модуле Ценообразование имеет вид
ПолучитьЦенуНоменклатуры(Номенклатура, ХарактеристикаНоменклатуры = Неопределено, Знач ТипЦен,
ДатаПараметр = Неопределено, ЕдиницаИзмерения = Неопределено, Валюта = Неопределено, Курс = 0, Кратность = 1, ПроцентСкидкиНаценки = 0, ДоговорКонтрагента = Неопределено, УсловиеПродаж = Неопределено)


Я бы сделал это чуть изящнее:
ТипЦенЗакупочная = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупка");
ТипЦенРозничная = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Роздрібний");
Для Каждого СтрТовары Из Товары Цикл
     ТекНоменклатура = СтрТовары.Номенклатура;
     СтрТовары.Закупка = Ценообразование.ПолучитьЦенуНоменклатуры(ТекНоменклатура,,ТипЦенЗакупочная);
     СтрТовары.Продажа = Ценообразование.ПолучитьЦенуНоменклатуры(ТекНоменклатура,,ТипЦенРозничная);
КонецЦикла;

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 11:51
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!