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

Изменить запись регистра сведений

Автор СерьезныйЧеловек, 18 ноя 2010, 13:06

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

СерьезныйЧеловек

Здравствуйте!
Такой вопрос.У меня есть два документа обучения сотрудников. Один документ планирование обучения при проведении или записи в регистре создает запись в регистре и пишет в него планируюмую дату прохождения обучения. Второй докумет проводится когда человек прошел уже обучения, т.е здесь вводится фактическая дата прохождения обучения. Так вот я выташил запись из регистра созданную первым документом и мне теперь в него нужно внести запись фактической даты прохождения обучения сотрудником. В регистре два поля плановая дата прохождения обучения и фактическая дата прохождения обучения. Как это сделать?

mdv

А регистр сведений какой? Подчиненный регистратору или независимый? Периодический или нет?

СерьезныйЧеловек

Регистр непериодический, подчиненный регистратору.

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


      Выборка=Запрос.Выполнить().Выбрать();
      Выборка.Следующий();
      //Выборка.КонецОбученияФакт = ТекДата;
           
   
   КонецЦикла;
КонецПроцедуры

Вообщем в регистре два поля одно называется конецобучения, а другое конец обучения факт.
Первое поле заполняется в регистре когда проводится документ планирование обучения сотрудника, второе поле когда проводится документ  прохождение обучения. Так вот я ввожу в документе прохождение обучения сотрудника, там у мне происходит проверка есть ли этот сотрудник в плане или нет, если нет то не проводится, если есть то проводится. Когда документ проводится, то нужно найти запись с сотрудником созданную документом планирование и ввести туда фактическую дату прохождения.
В моем коде я в запрос передаю сотрудника и его курс обучения, запрос мне вытягивает запись из регистра сведении. Как мне сделать так чтоы можно было уже в созданной записи в регистре добавить фактическую дату обучения???

СерьезныйЧеловек

//Выборка.КонецОбученияФакт = ТекДата; такой записью пытался изменить строку полученную запросом из регистра сведений, но не получилось пишет ошибку...

mohock

Цитата: СерьезныйЧеловек от 19 ноя 2010, 11:53
Вообщем в регистре два поля одно называется конецобучения, а другое конец обучения факт.
Первое поле заполняется в регистре когда проводится документ планирование обучения сотрудника, второе поле когда проводится документ  прохождение обучения. Так вот я ввожу в документе прохождение обучения сотрудника, там у мне происходит проверка есть ли этот сотрудник в плане или нет, если нет то не проводится, если есть то проводится. Когда документ проводится, то нужно найти запись с сотрудником созданную документом планирование и ввести туда фактическую дату прохождения.
В моем коде я в запрос передаю сотрудника и его курс обучения, запрос мне вытягивает запись из регистра сведении. Как мне сделать так чтоы можно было уже в созданной записи в регистре добавить фактическую дату обучения???

  В общем к решению вопроса с т.з. 1С вы подошли не правильно. А что у вас будет происходить при отмене проведения первого или второго документа?
  Поэтому, я бы рекомендовал сделать регистр сведений периодическим, периодом и датой. При проведении первого документа добавится строка в регистр и период заполнится датой начала обучения, а дата - планируемой датой завершения обучения. Затем при проведении вторго документа оба поля заполнятся одной датой - датой завершения обучения.
  Если иметь ссылку первого документа во втором, то легко будет получить планируемую и фактическую даты используя срез первых и последних по общей ссылке на первый документ (запросом :)).

mohock

Уточняю. В регистре должно быть еще одно поле - ссылка на первый документ. Это поле и будет содержать параметр отбора создаваемого запроса - ссылку. Т.е. запрос по срезу последних и первых будет искать записи только с этой ссылкой.
  В результате если пользователь снимет с проведения любой документ - в регистре удалится строка связанная с этим документом. Если пользователь захочет удалить первый документ, то по контролю ссылок ему прийдется удалять и второй. Так что этот регистр можно сделать еще и подчиненным регистратору...

Теги:

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

Рейтинг@Mail.ru

Поиск