8 / 8 / 0
Регистрация: 04.12.2012
Сообщений: 409
|
||||||||||||||||
1 | ||||||||||||||||
1C 8.x ТаблицаФормы (Событие ПередУдалением), РегистрСведенийКлючЗаписи09.06.2013, 18:54. Показов 6704. Ответов 9
Метки нет (Все метки)
Добрый день.
Есть ТаблицаФормы , данные она берет из Динамического Списка который в свою очередь представляет собой - список записей РС. Нужно было чтобы при удалении нескольких строк ТаблицыФормы каждая строка (Которая является РегистрСведенийКлючЗаписи) заносилась в РеквизитФормы (ТЗ) чтобы потом распологая данными об удаленных записях РС можно было изменить другие записи по опр. алгоритму. Воспользовался событием ПередУдалением.
- Смотрел в отладчике : Процедура СписокПередУдалением почему то вызывается 2 раза - а следовательно и вызывается процедура ДобавитьВРеквизит_ТЗВыдСтр_ВсеЗаписи_РСЦенПоНоменкл_ДляИсправления. Почему Событие ПередУдалением вызывается 2 раза? - Вначале в процедуру ДобавитьВРеквизит_ТЗВыдСтр_ВсеЗаписи_РСЦенПоНоменкл_ДляИсправления - передавал МассивКлЗаписей - то есть без кл слова Знач
И была ошибка: Поле Объекта не доступно для записи. Хотя в самой процедуре только присваивал строкам Реквизита формы (тз) значения РегистрСведенийКлючЗаписи по полям соответственно. Почему ошибка ведь я ничего не присваивал а только считывал? (когда написал кл слово знач ошибка исчезла) ???? Заранее премного благодарен.
0
|
09.06.2013, 18:54 | |
Ответы с готовыми решениями:
9
MaskedTextBox1 событие по системным часам - что должно вызывать это событие? Событие выбора строки при выборе мышкой событие обрабатывается два раза Принудительно вызвать событие, если произошло другое событие Как обработать событие click и событие нажития стрелки? |
Модератор
|
|
09.06.2013, 22:24 | 2 |
Читаем синтаксис помощник
ТаблицаФормы (FormTable) ПередУдалением (BeforeDeleteRow) Синтаксис: ПередУдалением(<Отказ>) Параметры: <Отказ> Тип: Булево. Признак отказа от записи объекта. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись объекта выполнена не будет. Значение по умолчанию: Ложь. Описание: Вызывается перед удалением строки или группы строк. Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.
1
|
8 / 8 / 0
Регистрация: 04.12.2012
Сообщений: 409
|
|
09.06.2013, 23:58 [ТС] | 3 |
Dethmontt Уважение. Прочитал не внимательно...
И ошибка (Поле Объекта не доступно для записи) тоже из-за использования серверной процедуры? я правильно понял? Наверно я использовал какой то корявый способ для передачи ВСЕХ выделенных строк (Элемент.ТекущиеДанные использовать нельзя так как там последняя строка которую выделил пользователь). Есть какой нибудь способ (чтобы передать в ТЗ или Массивы все Измерения РС которые содержатся в строках таблицы формы При удаленни НЕСКОЛЬКИХ строк ползователем в форме списка) по проще и прозорливее ??? Заранее благодарен.
0
|
8 / 8 / 0
Регистрация: 04.12.2012
Сообщений: 409
|
||||||||||||||||
10.06.2013, 01:45 [ТС] | 5 | |||||||||||||||
Есть РегистрСведений (ЦенаПоНоменклатуре) . У него есть реквезит - ДинамикаЦены (Который является ПеречислениеСсылка.ДинамикаЦены) . в соответствие с которым : если по сравнению с прошлой записью цена выросла то он присваивается перечислению - ЦенаПовысилась (значение Перечисления ДинамикаЦены). Если Упала - ЦенаПовысилась (значение Перечисления ДинамикаЦены). Если Осталась Неизменной - ЦенаОсталасьНеИзменной (значение Перечисления ДинамикаЦены).
В модуле Набора записей я накодил:
Для каждого ЗаписьРС Из ЭтотОбъект Цикл ОпределитьДинамикуЦены(ЗаписьРС); КонецЦикла; в объекте ЭтотОбъект сушествует тоько одна запись РС у которой необходимо установить ДинамикаЦены (Реквезит - ПеречислениеСсылка.ДинамикаЦены) Функция СерверныйМодуль.ПолучитьПоследнююЦену_ВРСЦенаПоНоменклатуре_ПоДаннымИзмерениям - создает запрос и по таким же измеренииям находит цену которая соответствует данным измерениям (только которя была сделана раньше), и возвращает ее (Если более ранней записи нет то Неопределенно) Вот текст запроса:
Например у нас есть записи в Таблице формы: Число Товар Цена ДинамикаЦены - 01.05 майонез 20 Цена Осталась Неизменной (Так как перед ней нет более ранних записей с такими измерения) - 02.05 майонез 24 Цена Повысилась - 03.05 майонез 23 Цена Понизилась - 04.05 майонез 21 Цена Понизилась Например я выделяю вторую и третью запись и удаляю их запись - 04.05 майонез 21 Цена Понизилась ---- должна измениться ---- - 04.05 майонез 21 Цена Повысилась для того чтобы изменить Реквизит ДинамикаЦены в таких записях (перед которыми удалили записи с такими же измерениями только более ранние) мне нужны измерения удаленных строк ТаблицыФормы (Вероятно В виде ТЗ). Я решил эту проблему так:
И кстати хотя в Синтакс помощнике и написано (В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере). функция работала ,однако почемуто вызывалась два раза и поэтому записи требующие исправления - перезаписывались 2 раза (Хотя и с Верным значением реквизита ДинамикаЦены). Но мне кажется что путь который я избрал для Получения ТЗ (реквизита формы) в которой хранятся удаляемые строки изначально Коряватый. Прошу вас подсказать более естественный путь. заранее премног благодарен
0
|
8 / 8 / 0
Регистрация: 04.12.2012
Сообщений: 409
|
|
12.06.2013, 13:02 [ТС] | 6 |
Добрый день. Я чего то намудрил, так что ли?
0
|
8 / 8 / 0
Регистрация: 04.12.2012
Сообщений: 409
|
|
14.06.2013, 15:57 [ТС] | 8 |
Для того чтобы в любой момент времени можно было из РС получить информацию как изменилась цена по данным измерениям в сравнении с предыдущей записью. а не высчиитывать такой реквизит программно.
Вобщем понимаю что намудрил. Однако заинтерисовал сам вопрос : Как сохранить(и куда лучше? В глобальную переменную или в реквизит формы?) все данные (из выделенных строчек) ТаблицыФормы ПередУдалением? Добавлено через 3 минуты Для последующей манипуляции с этими данными...
0
|
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
|
|
15.06.2013, 03:00 | 9 |
зачем мираж сохранять? пока сохраняешь, динамика изменится... ну, в файл сохрани, для укрепления самооценки
1
|
8 / 8 / 0
Регистрация: 04.12.2012
Сообщений: 409
|
|
15.06.2013, 13:54 [ТС] | 10 |
Понял что намудрил.
0
|
15.06.2013, 13:54 | |
15.06.2013, 13:54 | |
Помогаю со студенческими работами здесь
10
В каждом из n независимых испытаний событие А происходит с вероятностью p. Найти вероятность того, что событие А произошло Если есть форма и есть событие, а процедуры, его обрабатывающей нет в исходниках, то как это событие обрабатывается? Класс: Как обработать событие последнего объекта в форме, не создавая в классе объекта промежуточное событие? Событие при активации textbox. Или событие при изменения фокуса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |