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

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

Автор witcher, 18 мая 2018, 15:46

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

witcher

Есть документ ПриемНаРаботуСписком, с табличной частью Работники. С помощью конструктора движений создан код

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
   
      Движения.КадровыеПеремещения.Записывать = Истина;
    Движения.КадровыеПеремещения.Очистить();

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

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

   Движения.КадровыеПеремещения.Загрузить(ТабПриемНаРаботу);
   
в результате выводится ошибка "ошибка при вызове метода контекста выполнить"
что я делаю не так?


KOI8-R

|   ЗНАЧЕНИЕ(ВидДвиженияКадровыеПеремещения) КАК ВидДвижения,
вот, что вы делаете не так.

witcher

Цитата: KOI8-R от 18 мая 2018, 16:21
|   ЗНАЧЕНИЕ(ВидДвиженияКадровыеПеремещения) КАК ВидДвижения,
вот, что вы делаете не так.
а поконкретнее, если не сложно:)

KOI8-R

Цитата: witcher от 18 мая 2018, 16:51
Цитата: KOI8-R от 18 мая 2018, 16:21
|   ЗНАЧЕНИЕ(ВидДвиженияКадровыеПеремещения) КАК ВидДвижения,
вот, что вы делаете не так.
а поконкретнее, если не сложно:)
Соизволь ка мне добыть, то чаво не может быть.
Запиши себе на память, чтобы в спешке не забыть! (с)

Ну а поконкретнее - нет такой объектной сущности ВидДвиженияКадровыеПеремещения. Система не понимает, чего вы хотите, чтобы она вам выбрала.
А, еще и в этой строке косяк будет:
|   ПриемНаРаботуСпискомРаботники.Перечисления.ПричиныИзмененияСостояния.ПриемНаРаботу,
Потому что в табличной части не существует реквизита "Перечисление", и это еще не считая запятой после последнего реквизита запроса...
В общем возьмите конструктор запроса и формируйте запрос, не пишите его руками, у вас пока не получается.

witcher

Спасибо огромное, буду разбираться. Только начала изучать эту тему:xfbnsdfb:

Теги:

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

Рейтинг@Mail.ru

Поиск