Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
08 ноя 2024, 10:57

Событие ПриИзменений()

Автор maxxi, 31 окт 2024, 06:29

0 Пользователей и 1 гость просматривают эту тему.

maxxi

ВЫБРАТЬ
ТЧ.Ходимлар КАК Сотрудники,
ТЧ.Клиентлар КАК Клиенты,
ТЧ.Категория КАК Категория,
ТЧ.План1 КАК План1,
ТЧ.План2 КАК План2,
ТЧ.Бонус КАК Бонус,
ТЧ.Штраф КАК Штраф,
ТЧ.РабВремя КАК РабВремя,
ТЧ.Склад КАК Склад,
ТЧ.КоличествоСотрудников КАК КоличествоСотрудников
ПОМЕСТИТЬ вт_Файл
ИЗ
&ТЧ КАК ТЧ
;

Этим запросом заполняю ТЗ, в файле часто ячейка "Штраф" пусто. Поэтому приходится после заполнения ТЗ, заполнить поле ТЗ "Штраф" руками.
Для этого использую событие "ПриИзменений()", например в поле ТЗ "Штраф" , ввожу цифру 50000, но к поле ТЗ "Сумма" это сумма не прибавляется.
Скажите пожалуйста, что я делаю не правильно.

alexandr_ll

maxxi, Зачем нужна ТЗ? Что в процедуре ПриИзменении()?

maxxi

Сперва этим запросом заполняю ТЗ:


&НаСервере
Процедура ВычислениеНаСервере()
   
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТЧ.Сотрудники КАК Сотрудники,
        |    ТЧ.Клиенты КАК Клиенты,
        |    ТЧ.План1 КАК План1,
        |    ТЧ Оклад КАК Оклад,
        |    ТЧ.План2 КАК План2,
        |    ТЧ.Бонус КАК Бонус,
        |    ТЧ.Штраф КАК Штраф,
        |    ТЧ.РабВремя КАК РабВремя,
        |    ТЧ.Склад КАК Склад,
        |    ТЧ.КоличествоСотрудников КАК КоличествоСотрудников
        |ИЗ
        |    &ТЧ КАК ТЧ";

    тзБонусы.Очистить();

    Пока Выборка.Следующий() Цикл
       
        Таб=тзБонусы.Добавить();
       
        Таб.Сотрудники=Выборка.Сотрудники;
       
        Таб.Клиенты=Выборка.Клиенты;
       
        Таб.Оклад=Выборка.Оклад;
       
        Таб.РабВремя=Выборка.РабВремя;
       
        Таб.План1=Выборка.План1;
       
        Таб.План2=Выборка.План2;
       
        Таб.Бонус=Выборка.Бонус;
           
        Таб.Сумма=Окр((Таб.Оклад+Таб.План2+Таб.Бонус+Таб.План1),-3);
                           
    КонецЦикла;



После заполнение поле "Штраф" запускается этот запрос:


&НаСервере
Процедура тзБонусыШтрафПриИзменении(Элемент)
   
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТЧ.Сотрудники КАК Сотрудники,
        |    ТЧ.Клиенты КАК Клиенты,
        |    ТЧ.План1 КАК План1,
        |    ТЧ Оклад КАК Оклад,
        |    ТЧ.План2 КАК План2,
        |    ТЧ.Бонус КАК Бонус,
        |    ТЧ.Штраф КАК Штраф,
        |    ТЧ.РабВремя КАК РабВремя,
        |    ТЧ.Склад КАК Склад,
        |    ТЧ.КоличествоСотрудников КАК КоличествоСотрудников
        |ИЗ
        |    &ТЧ КАК ТЧ";


    Пока Выборка.Следующий() Цикл
       
        Таб=тзБонусы.Добавить();
       
        Таб.Сотрудники=Выборка.Сотрудники;
       
        Таб.Клиенты=Выборка.Клиенты;
       
        Таб.Оклад=Выборка.Оклад;
       
        Таб.РабВремя=Выборка.РабВремя;
       
        Таб.План1=Выборка.План1;
       
        Таб.План2=Выборка.План2;
       
        Таб.Бонус=Выборка.Бонус;
           
        Таб.Сумма=Окр((Таб.Оклад+Таб.План2+Таб.Бонус+Таб.План1-Таб.Штраф),-3);
                           
    КонецЦикла;


alexandr_ll

maxxi, Что такое ТЗБонусы? У вас нет Таб.Штраф=Выборка.Штраф; Где вы хотите увидеть ЖамиХисобланди (не знаю что это такое)?

maxxi

alexandr_ll, исправил код (Перевел на русский язык)

LexaK

maxxi, Этот код, который вы выкладываете - абсолютно не рабочий!
Очень даже не понятно, зачем вы нас дурачите, утверждая что у вас все это работает!
если помогло нажмите: Спасибо!

maxxi

LexaK, рабочий, просто от руки написал. Сорри если я Вас обидел.
Я решил эту задачу, всем спасибо за ответы.

maxxi

LexaK, теперь другая задача стоит перед мной:
&НаКлиенте
Процедура тзБонусы1ПриИзменении(Элемент)

ТекДанные=Элементы.тзБонусы.ТекущиеДанные;


ТекДанные.Сумма=ТекДанные.Сумма+ТекДанные.Штраф;


КонецПроцедуры


код свою функцию выполняет ок.
Но если удалить данные из "ТекДанные.Штраф", тогда "ТекДанные.Сумма" должен вернуться назад.
А это не происходить))))

Максим75

maxxi, а хоть в процедуру попадает?
ну может Вы процедуру написали, но не связали ее с событием табличной части.

maxxi

Максим75, Процедура свою функцию выполняет исправно, но если очистить поле "Штраф", "Сумма" на исходное положение не возвращается.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск