Имя: Пароль:
1C
1С v8
Расчет зарплаты. Появление записей
0 wwwqwert2014
 
20.08.14
16:54
Решал задачу по расчету зарплаты 3.22.
Необходимо, чтобы после расчета зарплаты пользователь мог в документе подкорректировать данные.
Выскакивают следующие ошибки:
1. Если 2 раза клацнуть на кнопку "Провести и рассчитать", то будет такая ошибка:
{Документ.НачислениеЗарплаты.Форма.ФормаДокумента.Форма(10)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
по причине:
Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)!
2. В документ Начисление зарплаты 003 нажал на Ручная корректировка для первой строки, потом "провести и рассчитать", потом закрываю окно. Спрашивает "Данные были изменение, сохранить изменение?" Нажимаю "Да" и после этого окошко: "Данные были изменены или удалены другим пользователем"
3. Не рассчитаываются удержания и повляются дубли.
Код процедуры ПровестиИРассчитать:




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

&НаКлиенте
Процедура ПровестиИРассчитать(Команда)
    ПровестиИРассчитатьНаСервере();
КонецПроцедуры




Вот здесь база http://rghost.ru/57571946
1 wwwqwert2014
 
20.08.14
16:54
2 wwwqwert2014
 
20.08.14
19:01
ап
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.