|
Проблема с двумя ДС и хождение формы на сервер. | ☑ | ||
---|---|---|---|---|
0
Alex174
05.06.22
✎
18:31
|
Всем привет! Есть у меня обработка. В ней на форме 2 динамических списка и два сигнализатора. Первый ДС - Заказы, второй - Материалы. Суть такая: выбираем заказ, потом выбираем материал и если в заказе используется данный материал, то включаем зеленую подсветку элемента, когда материал не используется - выключаем зеленую и включаем красную на втором элементе. Это я победил, немного криво но работает.
Проблема которую не могу решить второй день: При активизации строки в ДС Заказы, сбрасывается выделение в ДС Материалы. И при этом нужно сделать невидимыми оба квадрата сигнализатора. Вот скрин https://pastenow.ru/def05e20c8116823b34eeffc2915c68c Вот код который работает, но не сбрасывает выделение при смене строки в ДС Заказы. Хелп ми плиз! Если добавляю Сброс() в ЗаказыПриАктивизацииСтроки(Элемент) тогда вообще все перестает работать т.к. форма летает с сервере на сервер для отрисовки и при возвращении происходит активизация строки в Заказах.. Какой то замкнутый круг.. &НаКлиенте Перем МатериалыИзЗаказа_Массив; &НаКлиенте Перем СсылкаНаДокумент; &НаКлиенте Процедура ПриОткрытии(Отказ) ПервоеОткрытие = Истина; ВклВыкл_МатериалИспользуется("Выкл"); ВклВыкл_МатериалНЕИспользуется("Выкл"); //ПодключитьОбработчикОжидания("Сброс", 1, Ложь); КонецПроцедуры &НаКлиенте Процедура ЗаказыПриАктивизацииСтроки(Элемент) СсылкаНаДокумент = Элементы.Заказы.ТекущиеДанные.Ссылка; МатериалыИзЗаказа_Массив = МассивМатериаловИзЗаказа(СсылкаНаДокумент); Элементы.Материал.ВыделенныеСтроки.Очистить(); КонецПроцедуры &НаКлиенте Процедура МатериалПриАктивизацииЯчейки(Элемент) Если ПервоеОткрытие Тогда Элемент.ВыделенныеСтроки.Очистить(); ПервоеОткрытие = Ложь; Иначе Результат = МатериалыИзЗаказа_Массив.Найти(Элементы.Материал.ТекущиеДанные.Ссылка); Если Результат = Неопределено Тогда ВклВыкл_МатериалИспользуется("Выкл"); ВклВыкл_МатериалНЕИспользуется("Вкл"); Иначе ВклВыкл_МатериалИспользуется("Вкл"); ВклВыкл_МатериалНЕИспользуется("Выкл"); КонецЕсли; КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция МассивМатериаловИзЗаказа(СсылкаНаДокумент) МассивМатериалов = Новый Массив; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказМатериал.Номенклатура КАК Номенклатура |ИЗ | Документ.Заказ.Материал КАК ЗаказМатериал |ГДЕ | ЗаказМатериал.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", СсылкаНаДокумент); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл МассивМатериалов.Добавить(ВыборкаДетальныеЗаписи.Номенклатура); КонецЦикла; Возврат МассивМатериалов КонецФункции &НаКлиенте Процедура ВклВыкл_МатериалИспользуется(ЗначениеТумблера) Если ЗначениеТумблера = "Вкл" Тогда Элементы.МатериалИспользуется.ЦветФона = Новый Цвет(0, 255, 22); Элементы.МатериалИспользуется.ЦветТекста = Новый Цвет(0, 0, 0); СостояниеКнопкиИспользуется = Истина; ИначеЕсли ЗначениеТумблера = "Выкл" Тогда Элементы.МатериалИспользуется.ЦветФона = Новый Цвет(255, 255, 255); Элементы.МатериалИспользуется.ЦветТекста = Новый Цвет(255, 255, 255); СостояниеКнопкиИспользуется = Ложь; КонецЕсли; КонецПроцедуры // ВклВыклМатериалИспользуется() &НаКлиенте Процедура ВклВыкл_МатериалНЕИспользуется(ЗначениеТумблера) Если ЗначениеТумблера = "Вкл" Тогда Элементы.МатериалНеИспользуется.ЦветФона = Новый Цвет(255, 0, 0); Элементы.МатериалНеИспользуется.ЦветТекста = Новый Цвет(255, 255, 255); СостояниеКнопкиНЕИспользуется = Истина; ИначеЕсли ЗначениеТумблера = "Выкл" Тогда Элементы.МатериалНеИспользуется.ЦветФона = Новый Цвет(255, 255, 255); Элементы.МатериалНеИспользуется.ЦветТекста = Новый Цвет(255, 255, 255); СостояниеКнопкиНЕИспользуется = Ложь; КонецЕсли; КонецПроцедуры // ВклВыклМатериалИспользуется() &НаКлиенте Процедура Сброс() ВклВыкл_МатериалИспользуется("Выкл"); ВклВыкл_МатериалНЕИспользуется("Выкл"); КонецПроцедуры |
|||
1
Бабрак Кармаль
05.06.22
✎
19:19
|
Надо читать синтакс помощник. Там русским языком написано:
ТаблицаФормы (FormTable) ПриАктивизацииСтроки (OnActivateRow) Синтаксис: ПриАктивизацииСтроки() Описание: Вызывается при активизации строки таблицы. Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент). Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере, а также изменять свойства, которые могут привести к серверному вызову |
|||
2
Alex174
05.06.22
✎
19:22
|
Точняк... Читал ведь, и что нельзя серверные вызовы использовать читал... Спасибо мил человек)
|
|||
3
Бабрак Кармаль
05.06.22
✎
19:25
|
(2) Это еще не все
ЦветФона (BackColor) Использование: Чтение и запись. Описание: Тип: Цвет. Цвет фона. Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер. Изменение свойства на клиенте требует обращения к серверу. |
|||
4
Бабрак Кармаль
05.06.22
✎
19:26
|
Регистрируй при активизации однократный обработчик ожидания на минимальное время и из него уже твори что хочешь
|
|||
5
Бабрак Кармаль
05.06.22
✎
19:28
|
И галочку в конфигураторе включи: https://ibb.co/D9Rh3st
|
|||
6
Alex174
05.06.22
✎
20:55
|
(4) На спасли обработчики. Такое-же зацикливание происходит... Сделал на списках значений, нифига не поменялось...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |