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

проведение документа

Автор Dimon777, 24 сен 2013, 13:11

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

Dimon777

Здравствуйте! подскажите пожалуйста, вот мне нужно сделать так: если стоит пометка на удаление у документа увольнения, то начисление проводим, а если пометка не стоит и документ не проведен,то должен не проводить. пишу следующий код :
  Если Сотрудник = Сотрудник1 и ВыборкаСтрокДокумента.Проведен = Ложь и ПометкаУдаления = Ложь Тогда

    Отказ = Истина;
                    Сообщить("Провести неудалось т.к. есть приказ на увольнение");

ИначеЕсли ПометкаУдаления = Истина Тогда
     Проведение = Истина;
  КонецЕсли;

подскажите пожалуйста в чем ошибка может быть? потому что все равно не дает провести документ даже если есть пометка.

LordWizard

Помеченные на удаление документы не проводятся ни в одной конфигурации. Сначала надо снять ПометкаУдаления.

Док.ПометкаУдаления = Ложь;
Правильно ведите учет или пишите программы и вам воздастся!...

(Кстати - кнопочку Сказать Спасибо - никто не отменял)

Dimon777

нет, вы не поняли. если есть помеченные на удаление док.увольнения , то тогда док.начисление нужно провести,а если они просто есть и не проведены, тогда нужно отказать в проведении.
вот он мне в обоих случаях и не проводит, а нужно чтоб в первом случае документ провелся...

LordWizard

Что за конфигурация и приведи полностью текст процедуры пожалуйста.
Правильно ведите учет или пишите программы и вам воздастся!...

(Кстати - кнопочку Сказать Спасибо - никто не отменял)

Dimon777

Зарплата, делаю в процедуре ОбработкаПроведения
Запрос = Новый Запрос;
Запрос.Текст =
   "ВЫБРАТЬ
   | УвольнениеИзОрганизаций.Ссылка,
   | УвольнениеИзОрганизаций.Проведен,
   | УвольнениеИзОрганизаций.Дата,
   | УвольнениеИзОрганизаций.РаботникиОрганизации.(
   | Сотрудник,
   | ДатаУвольнения
   | )
   |ИЗ
   | Документ.УвольнениеИзОрганизаций КАК УвольнениеИзОрганизаций";

   ВыборкаСтрокДокумента = Запрос.Выполнить().Выбрать();
   Пока ВыборкаСтрокДокумента.Следующий() Цикл
   Для Каждого ТекущаяСтрока из ВыборкаСтрокДокумента.Ссылка.РаботникиОрганизации Цикл
    Для каждого СтрокаДокумент Из Начисления Цикл
                  Сотрудник = ТекущаяСтрока.Сотрудник;
          Сотрудник1 = СтрокаДокумент.Сотрудник;
  Если Сотрудник = Сотрудник1 и ВыборкаСтрокДокумента.Проведен = Ложь и ПометкаУдаления = Ложь Тогда
    Отказ = Истина;
                    Сообщить("Провести неудалось т.к. есть приказ на увольнение");
ИначеЕсли ПометкаУдаления = Истина Тогда
Проведение = Истина;
  КонецЕсли;
        КонецЦикла;   
           КонецЦикла;
       КонецЦикла;

LordWizard

Вопрос один: Зачем??? ведь все механизмы нормально в ЗУПе работают?
Последовательность:
1. Приказ об увольнении.
2. Расчет сотрудника при увольнении.
3. Начисление ЗП уволенного сотрудника.
P.S.: Дважды уже сотрудник за месяц не попадет в документ Начисление ЗП!
Добавлено: 24 сен 2013, 14:02


Да и еще. Хотя бы выборку делайте за какой-то рабочий период месяца, а не все


ГДЕ
  УвольнениеИзОрганизаций.ДатаДок МЕЖДУ &ДатаНачала И &ДатаКонца
Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала);
Запрос.Установитьпараметр("ДатаКонца",ДатаКонца);
Правильно ведите учет или пишите программы и вам воздастся!...

(Кстати - кнопочку Сказать Спасибо - никто не отменял)

Dimon777

мне просто нужно чтоб документ провелся.... как написать это условие? что я не так написал?

LordWizard

1. Оба дока имеют Таблы. И соответственно тебе нужно будет сравнивать содержание таблиц.
Если нашли хоть одного одинакового Сотрика проверяем на следуующее


Если  ДокУвольнения.ПометкаУдаления ИЛИ ДокУвольнения.проведен() Тогда
       ДокНачисления.Записать(РежимЗаписиДокумента.ОтменаПроведения);
Иначе
        ДокНачисления.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;


что-то типа этого
Правильно ведите учет или пишите программы и вам воздастся!...

(Кстати - кнопочку Сказать Спасибо - никто не отменял)

Теги:

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

Рейтинг@Mail.ru

Поиск