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

Запись в реквизит документа последнего значения РегСвед.

Автор Алексей_1985_06, 01 фев 2020, 12:19

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

Алексей_1985_06

LexaK - не кидайтесь камнями :btbzdb::btbzdb::btbzdb: Переделал все как Вы сказали....

Помогите написать код, теперь проблемка в следующем: Создан периодический (период: месяц) регистр сведений ВоинскиеЗвания (см.приложение), есть документ в котором при выборе ФамилияИмяОтчества в реквизит ВоинскоеЗвание, из регистра сведений должно записаться ПОСЛЕДНИЕ ЗНАЧЕНИЕ поля ВОИНСКОЕ ЗВАНИЕ.

Помогите дописать, не знаю как реализовать отбор и получения звания по последней дате приказа о присвоении (т.к записи в регистр могут быть сделаны в один день):

&НаКлиенте
Процедура ФамилияИмяОтчествоНарушителяПриИзменении(Элемент) // т.е когда мы выбираеим например "Иванов Иван Иванович", то ссылаемся на объект "Иванов Иван Иванович" затем будем смотреть его реквизиты, которые потом и возвращаем

Объект.НациональностьНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"Национальность");
Объект.ЛичныйНомерНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ЛичныйНомер");
Объект.ДатаРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"ДатаРождения");
Объект.ПрохождениеСлужбыНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ПрохождениеСлужбы");
Объект.МестоРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"МестоРождения");

// ЗДЕСЬ НУЖНА ПОМОЩЬ, КАК ПОЛУЧИТЬ В РЕКВИЗИТ ПОСЛЕДНИЕ ЗНАЧЕНИЕ ИЗ РЕГИСТРА СВЕДЕНИЙ
// Может без запроса это можно реализовать?

Запрос = Новый  Запрос;
Запрос.Текст = "ВЫБРАТЬ
|ВоинскиеЗванияСрезПоследних.ФамилияИмяОтчество КАК ФамилияИмяОтчество,
|ВоинскиеЗванияСрезПоследних.ВоинскоеЗвание КАК ВоинскоеЗвание
|ИЗ
|РегистрСведений.ВоинскиеЗвания.СрезПоследних КАК ВоинскиеЗванияСрезПоследних
|ГДЕ .....


Объект.ВоинскоеЗваниеНарушителя = .....

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



alexandr_ll

Цитата: Алексей_1985_06 от 01 фев 2020, 12:19
LexaK - не кидайтесь камнями :btbzdb::btbzdb::btbzdb: Переделал все как Вы сказали....

Помогите написать код, теперь проблемка в следующем: Создан периодический (период: месяц) регистр сведений ВоинскиеЗвания (см.приложение), есть документ в котором при выборе ФамилияИмяОтчества в реквизит ВоинскоеЗвание, из регистра сведений должно записаться ПОСЛЕДНИЕ ЗНАЧЕНИЕ поля ВОИНСКОЕ ЗВАНИЕ.

Помогите дописать, не знаю как реализовать отбор и получения звания по последней дате приказа о присвоении (т.к записи в регистр могут быть сделаны в один день):

&НаКлиенте
Процедура ФамилияИмяОтчествоНарушителяПриИзменении(Элемент) // т.е когда мы выбираеим например "Иванов Иван Иванович", то ссылаемся на объект "Иванов Иван Иванович" затем будем смотреть его реквизиты, которые потом и возвращаем

Объект.НациональностьНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"Национальность");
Объект.ЛичныйНомерНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ЛичныйНомер");
Объект.ДатаРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"ДатаРождения");
Объект.ПрохождениеСлужбыНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ПрохождениеСлужбы");
Объект.МестоРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"МестоРождения");

// ЗДЕСЬ НУЖНА ПОМОЩЬ, КАК ПОЛУЧИТЬ В РЕКВИЗИТ ПОСЛЕДНИЕ ЗНАЧЕНИЕ ИЗ РЕГИСТРА СВЕДЕНИЙ
// Может без запроса это можно реализовать?

Запрос = Новый  Запрос;
Запрос.Текст = "ВЫБРАТЬ
|ВоинскиеЗванияСрезПоследних.ФамилияИмяОтчество КАК ФамилияИмяОтчество,
|ВоинскиеЗванияСрезПоследних.ВоинскоеЗвание КАК ВоинскоеЗвание
|ИЗ
|РегистрСведений.ВоинскиеЗвания.СрезПоследних КАК ВоинскиеЗванияСрезПоследних
|ГДЕ .....


Объект.ВоинскоеЗваниеНарушителя = .....

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

Синтакс-помощник "ПолучитьПоследнее"

Алексей_1985_06

Цитата: alexandr_ll от 02 фев 2020, 06:08
Цитата: Алексей_1985_06 от 01 фев 2020, 12:19
LexaK - не кидайтесь камнями :btbzdb::btbzdb::btbzdb: Переделал все как Вы сказали....

Помогите написать код, теперь проблемка в следующем: Создан периодический (период: месяц) регистр сведений ВоинскиеЗвания (см.приложение), есть документ в котором при выборе ФамилияИмяОтчества в реквизит ВоинскоеЗвание, из регистра сведений должно записаться ПОСЛЕДНИЕ ЗНАЧЕНИЕ поля ВОИНСКОЕ ЗВАНИЕ.

Помогите дописать, не знаю как реализовать отбор и получения звания по последней дате приказа о присвоении (т.к записи в регистр могут быть сделаны в один день):

&НаКлиенте
Процедура ФамилияИмяОтчествоНарушителяПриИзменении(Элемент) // т.е когда мы выбираеим например "Иванов Иван Иванович", то ссылаемся на объект "Иванов Иван Иванович" затем будем смотреть его реквизиты, которые потом и возвращаем

Объект.НациональностьНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"Национальность");
Объект.ЛичныйНомерНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ЛичныйНомер");
Объект.ДатаРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"ДатаРождения");
Объект.ПрохождениеСлужбыНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ПрохождениеСлужбы");
Объект.МестоРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"МестоРождения");

// ЗДЕСЬ НУЖНА ПОМОЩЬ, КАК ПОЛУЧИТЬ В РЕКВИЗИТ ПОСЛЕДНИЕ ЗНАЧЕНИЕ ИЗ РЕГИСТРА СВЕДЕНИЙ
// Может без запроса это можно реализовать?

Запрос = Новый  Запрос;
Запрос.Текст = "ВЫБРАТЬ
|ВоинскиеЗванияСрезПоследних.ФамилияИмяОтчество КАК ФамилияИмяОтчество,
|ВоинскиеЗванияСрезПоследних.ВоинскоеЗвание КАК ВоинскоеЗвание
|ИЗ
|РегистрСведений.ВоинскиеЗвания.СрезПоследних КАК ВоинскиеЗванияСрезПоследних
|ГДЕ .....


Объект.ВоинскоеЗваниеНарушителя = .....

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

Синтакс-помощник "ПолучитьПоследнее"

Александр, подскажите... ну ни как не догоняю что неправильно делаю (не давно занялся программированием), Очень нужно решить данную задачу....Скрин структуры регистра во вложении...

&НаКлиенте
Процедура ФамилияИмяОтчествоНарушителяПриИзменении(Элемент)
Объект.НациональностьНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"Национальность");
Объект.ЛичныйНомерНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ЛичныйНомер");
Объект.ДатаРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"ДатаРождения");
Объект.МестоРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"МестоРождения");

// НЕ ВЫХОДИТ КАМЕННЫЙ ЦВЕТОК !!! ЧТО ЗДЕСЬ НЕ ТАК?
ВоинскоеЗвание = РегистрыСведений.ВоинскиеЗвания;
ТекущиеЗвание = ВоинскоеЗвание.ПолучитьПоследнее();
Объект.ВоинскоеЗваниеНарушителя = ТекущиеЗвание;

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


alexandr_ll

Цитата: Алексей_1985_06 от 02 фев 2020, 12:34
Цитата: alexandr_ll от 02 фев 2020, 06:08
Цитата: Алексей_1985_06 от 01 фев 2020, 12:19
LexaK - не кидайтесь камнями :btbzdb::btbzdb::btbzdb: Переделал все как Вы сказали....

Помогите написать код, теперь проблемка в следующем: Создан периодический (период: месяц) регистр сведений ВоинскиеЗвания (см.приложение), есть документ в котором при выборе ФамилияИмяОтчества в реквизит ВоинскоеЗвание, из регистра сведений должно записаться ПОСЛЕДНИЕ ЗНАЧЕНИЕ поля ВОИНСКОЕ ЗВАНИЕ.

Помогите дописать, не знаю как реализовать отбор и получения звания по последней дате приказа о присвоении (т.к записи в регистр могут быть сделаны в один день):

&НаКлиенте
Процедура ФамилияИмяОтчествоНарушителяПриИзменении(Элемент) // т.е когда мы выбираеим например "Иванов Иван Иванович", то ссылаемся на объект "Иванов Иван Иванович" затем будем смотреть его реквизиты, которые потом и возвращаем

Объект.НациональностьНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"Национальность");
Объект.ЛичныйНомерНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ЛичныйНомер");
Объект.ДатаРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"ДатаРождения");
Объект.ПрохождениеСлужбыНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ПрохождениеСлужбы");
Объект.МестоРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"МестоРождения");

// ЗДЕСЬ НУЖНА ПОМОЩЬ, КАК ПОЛУЧИТЬ В РЕКВИЗИТ ПОСЛЕДНИЕ ЗНАЧЕНИЕ ИЗ РЕГИСТРА СВЕДЕНИЙ
// Может без запроса это можно реализовать?

Запрос = Новый  Запрос;
Запрос.Текст = "ВЫБРАТЬ
|ВоинскиеЗванияСрезПоследних.ФамилияИмяОтчество КАК ФамилияИмяОтчество,
|ВоинскиеЗванияСрезПоследних.ВоинскоеЗвание КАК ВоинскоеЗвание
|ИЗ
|РегистрСведений.ВоинскиеЗвания.СрезПоследних КАК ВоинскиеЗванияСрезПоследних
|ГДЕ .....


Объект.ВоинскоеЗваниеНарушителя = .....

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

Синтакс-помощник "ПолучитьПоследнее"

Александр, подскажите... ну ни как не догоняю что неправильно делаю (не давно занялся программированием), Очень нужно решить данную задачу....Скрин структуры регистра во вложении...

&НаКлиенте
Процедура ФамилияИмяОтчествоНарушителяПриИзменении(Элемент)
Объект.НациональностьНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"Национальность");
Объект.ЛичныйНомерНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ЛичныйНомер");
Объект.ДатаРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"ДатаРождения");
Объект.МестоРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"МестоРождения");

// НЕ ВЫХОДИТ КАМЕННЫЙ ЦВЕТОК !!! ЧТО ЗДЕСЬ НЕ ТАК?
ВоинскоеЗвание = РегистрыСведений.ВоинскиеЗвания;
ТекущиеЗвание = ВоинскоеЗвание.ПолучитьПоследнее();
Объект.ВоинскоеЗваниеНарушителя = ТекущиеЗвание;

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

Вы синтакс-помощник читали?
Метод "ПолучитьПоследнее" возвращает структуру, а вы присваиваете ее объекту.
Нужно:
Объект.ВоинскоеЗваниеНарушителя = ТекущиеЗвание.ВоинскоеЗвание;
Правда, в таком виде, как у вас метод вернет самую последнюю запись в регистре без выбора конкретного человека и не взирая на дату.
Добавьте в него отбор по нужному человеку и если нужно - по дате.

Алексей_1985_06

Цитата: alexandr_ll от 03 фев 2020, 05:11
Цитата: Алексей_1985_06 от 02 фев 2020, 12:34
Цитата: alexandr_ll от 02 фев 2020, 06:08
Цитата: Алексей_1985_06 от 01 фев 2020, 12:19
LexaK - не кидайтесь камнями :btbzdb::btbzdb::btbzdb: Переделал все как Вы сказали....

Помогите написать код, теперь проблемка в следующем: Создан периодический (период: месяц) регистр сведений ВоинскиеЗвания (см.приложение), есть документ в котором при выборе ФамилияИмяОтчества в реквизит ВоинскоеЗвание, из регистра сведений должно записаться ПОСЛЕДНИЕ ЗНАЧЕНИЕ поля ВОИНСКОЕ ЗВАНИЕ.

Помогите дописать, не знаю как реализовать отбор и получения звания по последней дате приказа о присвоении (т.к записи в регистр могут быть сделаны в один день):

&НаКлиенте
Процедура ФамилияИмяОтчествоНарушителяПриИзменении(Элемент) // т.е когда мы выбираеим например "Иванов Иван Иванович", то ссылаемся на объект "Иванов Иван Иванович" затем будем смотреть его реквизиты, которые потом и возвращаем

Объект.НациональностьНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"Национальность");
Объект.ЛичныйНомерНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ЛичныйНомер");
Объект.ДатаРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"ДатаРождения");
Объект.ПрохождениеСлужбыНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ПрохождениеСлужбы");
Объект.МестоРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"МестоРождения");

// ЗДЕСЬ НУЖНА ПОМОЩЬ, КАК ПОЛУЧИТЬ В РЕКВИЗИТ ПОСЛЕДНИЕ ЗНАЧЕНИЕ ИЗ РЕГИСТРА СВЕДЕНИЙ
// Может без запроса это можно реализовать?

Запрос = Новый  Запрос;
Запрос.Текст = "ВЫБРАТЬ
|ВоинскиеЗванияСрезПоследних.ФамилияИмяОтчество КАК ФамилияИмяОтчество,
|ВоинскиеЗванияСрезПоследних.ВоинскоеЗвание КАК ВоинскоеЗвание
|ИЗ
|РегистрСведений.ВоинскиеЗвания.СрезПоследних КАК ВоинскиеЗванияСрезПоследних
|ГДЕ .....


Объект.ВоинскоеЗваниеНарушителя = .....

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

Синтакс-помощник "ПолучитьПоследнее"

Александр, подскажите... ну ни как не догоняю что неправильно делаю (не давно занялся программированием), Очень нужно решить данную задачу....Скрин структуры регистра во вложении...

&НаКлиенте
Процедура ФамилияИмяОтчествоНарушителяПриИзменении(Элемент)
Объект.НациональностьНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"Национальность");
Объект.ЛичныйНомерНарушителя = ПолучитьЗначениеРеквизитаНаСервере(Объект.ФамилияИмяОтчествоНарушителя,"ЛичныйНомер");
Объект.ДатаРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"ДатаРождения");
Объект.МестоРожденияНарушителя = ПолучитьЗначениеРеквизитаНаСервере (Объект.ФамилияИмяОтчествоНарушителя,"МестоРождения");

// НЕ ВЫХОДИТ КАМЕННЫЙ ЦВЕТОК !!! ЧТО ЗДЕСЬ НЕ ТАК?
ВоинскоеЗвание = РегистрыСведений.ВоинскиеЗвания;
ТекущиеЗвание = ВоинскоеЗвание.ПолучитьПоследнее();
Объект.ВоинскоеЗваниеНарушителя = ТекущиеЗвание;

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

Вы синтакс-помощник читали?
Метод "ПолучитьПоследнее" возвращает структуру, а вы присваиваете ее объекту.
Нужно:
Объект.ВоинскоеЗваниеНарушителя = ТекущиеЗвание.ВоинскоеЗвание;
Правда, в таком виде, как у вас метод вернет самую последнюю запись в регистре без выбора конкретного человека и не взирая на дату.
Добавьте в него отбор по нужному человеку и если нужно - по дате.

Александр, спасибо! Да отбор необходим и по человеку и по дате приказа, подскажите пожалуйста а как это реализовать... Что-то у меня не получается? Новичок в этом деле....

alexandr_ll

Если считать, что "ФамилияИмяОтчество" в регистре имеет тип ссылка на справочник
То примерно так:
Отбор = Новый Структура;
Отбор.Вставить("ФамилияИмяОтчество", Объект.ФамилияИмяОтчество);
Звания   = РегистрыСведений.ВоинскиеЗвания;
ТекЗвание = Звания.ПолучитьПоследнее(НачалоДня(Объект.Дата), Отбор);
Объект.ВоинскоеЗваниеНарушителя = ТекЗвание.ВоинскоеЗвание;

Теги:

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

Рейтинг@Mail.ru

Поиск