|
Почему 1с зависает? | ☑ | ||
---|---|---|---|---|
0
pro3ri
23.12.15
✎
09:33
|
ДОбрый день!
На форме есть кнопка "подбор". &НаКлиенте Процедура Подбор(Команда) ПараметрыПодбора = Новый Структура("ЗакрыватьПриВыборе,МножественныйВыбор", Ложь, Истина); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",ПараметрыПодбора, Элементы.Товары); КонецПроцедуры &НаКлиенте Процедура ТоварыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Для каждого Элемент Из ВыбранноеЗначение Цикл Строка = Объект.Товары.Добавить(); Строка.Номенклатура = Элемент; Строка.Количество = 1; Строка.Цена = РаботаСДокументами.ПодстановкаЦеныСервер(Элемент, ?((Не ЗначениеЗаполнено(Объект.ВидПрайсаНоменклатуры)),ПолучениеКонстанты(), Объект.ВидПрайсаНоменклатуры), Объект.Дата); КонецЦикла; КонецПроцедуры &НаСервереБезКонтекста Функция ПолучениеКонстанты() Возврат Константы.ОсновнаяЦенаНоменклатуры.Получить(); КонецФункции// ПолучениеКонстанты()() при Множественном выборе система зависает, конфигуратор работает. Похоже на зацикливание, Как победить? |
|||
1
Godofsin
23.12.15
✎
09:37
|
Прям зависает намертво?
|
|||
2
pro3ri
23.12.15
✎
09:39
|
(1) прям мистика какая-то теперь работает, похоже проблема была в
Возврат Константы.ОсновнаяЦенаНоменклатуры.Получить(); |
|||
3
Godofsin
23.12.15
✎
09:40
|
(2) Освяти сервак. Демоны, не иначе ))))
|
|||
4
pro3ri
23.12.15
✎
09:40
|
файловая
|
|||
5
Рэйв
23.12.15
✎
09:41
|
(2)Нафиг ты в цикл вызов константы вставил? Получил бы один раз перед циклом
|
|||
6
Lexey_
23.12.15
✎
09:41
|
(0)
1.Убрать точки останова? 2. Называть переменные именами, отличными от имен параметров (Элемент) 3. Избавиться от запроса в цикле |
|||
7
Stim
23.12.15
✎
09:43
|
1С зависает не потому что 1С, а потому что зависает
|
|||
8
pro3ri
23.12.15
✎
09:53
|
(6) всем спасибо, так сделал:
&НаКлиенте Процедура Подбор(Команда) ПараметрыПодбора = Новый Структура("ЗакрыватьПриВыборе,МножественныйВыбор", Ложь, Истина); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",ПараметрыПодбора, Элементы.Товары); КонецПроцедуры &НаКлиенте Процедура ДобавитьСтрокуТовары(Элемент,ВидПрайсаНоменклатуры) Строка = Объект.Товары.Добавить(); Строка.Номенклатура = Элемент; Строка.Количество = 1; Строка.Цена = РаботаСДокументами.ПодстановкаЦеныСервер(Элемент, ВидПрайсаНоменклатуры, Объект.Дата); КонецПроцедуры // ДобавитьСтрокуТовары() &НаКлиенте Процедура ТоварыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) ВидПрайсаНоменклатуры = ?((Не ЗначениеЗаполнено(Объект.ВидПрайсаНоменклатуры)),ПолучениеКонстанты(), Объект.ВидПрайсаНоменклатуры); Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.Номенклатура") Тогда ДобавитьСтрокуТовары (Элемент,ВидПрайсаНоменклатуры); Иначе Для каждого Товар Из ВыбранноеЗначение Цикл ДобавитьСтрокуТовары(Товар,ВидПрайсаНоменклатуры); КонецЦикла; КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция ПолучениеКонстанты() Возврат Константы.ОсновнаяЦенаНоменклатуры.Получить(); КонецФункции// ПолучениеКонстанты()() |
|||
9
Stim
23.12.15
✎
10:09
|
(8) а ты попробуй первоначальный вариант вместо
&НаСервереБезКонтекста Функция ПолучениеКонстанты() написать &НаСервере Функция ПолучениеКонстанты() а то походу ты лезешь на сервер без данных формы, а когда возвращаешься обратно, то считываются заново все выбранные значения и цикл получается бесконечным |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |