Версия для печати темы (https://pro1c.org.ua/index.php?s=b408002a7127d41077fbfdf578854370&showtopic=66736)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ прописать значение в другом справочнике

Автор: 4andriy 22.09.21, 20:57

работаю с справочником "сотрудники"
есть поле ввода из справочника "договора"
для каждого сотрубника есть номер договора: Договор 1 и т.д...
нужно вручную прописать значение номера договора и добавить табельный номер
сделал через кнопку, но не записывает новое значение

//------------------------------------------------------------------    
Процедура договор()
Если ПустоеЗначение(ТекущийЭлемент())=1 Тогда
Возврат;
КонецЕсли;  
Если ТекущийЭлемент().ЭтоГруппа()=1 Тогда
Возврат;
КонецЕсли;    

Элемент=СоздатьОбъект("Справочник.Сотрудники");
Элемент.найтиЭлемент(ТекущийЭлемент());

Если ПустоеЗначение(Элемент.Договор)=0 Тогда
Сообщить(Элемент.Договор.Тип);//вижу номер
Элемент.Элемент.Договор.Тип=Элемент.Элемент.Договор.Тип+ТабНомер;//запись в другой справочник не идет
Элемент.Записать();  
КонецЕсли;

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

Автор: 1983air 27.09.21, 11:33

Цитата(4andriy @ 22.09.21, 21:57) *
Элемент.Элемент.Договор.Тип=Элемент.Элемент.Договор.Тип+ТабНомер;//запись в другой справочник не идет

А почему Элемент.Элемент? Может достаточно одного Элемент?
Элемент.Договор.Тип=Элемент.Договор.Тип+ТабНомер;//запись в другой справочник не идет
Это фрагмент из рабочего модуля скопирован или из головы написан?

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

Автор: 4andriy 27.09.21, 12:09

1983air @ Сегодня, 12:33 * ,

Процедура сотрудникномер()
Если ПустоеЗначение(ТекущийЭлемент())=1 Тогда
Возврат;
КонецЕсли;  
Если ТекущийЭлемент().ЭтоГруппа()=1 Тогда
Возврат;
КонецЕсли;    
//открыли весь справочник
Элемент=СоздатьОбъект("Справочник.Сотрудники");//справочник номер 1 в котором я нахожусь
Элемент.найтиЭлемент(ТекущийЭлемент());//выбрали текущую запись

Если ПустоеЗначение(Элемент.Договор)=0 Тогда//поле ввода в котором выбрано значение из справочника 2
Сообщить(Элемент.Договор);//вижу значение которое есть на форме
Сообщить(Элемент.Договор.Текст);//вижу значение которое хочу поправить
Элемент.Договор.Текст=Элемент.Договор.Текст+ТабНомер;//хочу прописать то что мне надо
Элемент.Записать();//должна быть запись но не работает
КонецЕсли;

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

Автор: 1983air 27.09.21, 13:11

4andriy @ Сегодня, 13:09 * ,
А, ну да! Так работать не будет, если все-таки верно понял, что нужно.
Необходимо искать не в справочнике Сотрудников, а в Договорах - и уже его корректировать и записывать.

Автор: 4andriy 27.09.21, 13:33

1983air @ Сегодня, 14:11 * ,
да, надо найти в договорах строку которая выбрана в поле ввода и там изменить

Автор: denis84 27.09.21, 15:43

Вы хотите из справочника сотрудники изменить справочник договора? то Вам необходимо в этих договорах и искать, а не в сотрудниках.

Автор: 4andriy 27.09.21, 15:54

denis84 @ Сегодня, 16:43 * ,
да, и нужная строка которую нужно поправить уже выбрана в поле ввода

Автор: 4andriy 27.09.21, 20:29

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

  СпрСотр = СоздатьОбъект("Справочник.Сотрудники");

СпрСотр.НайтиЭлемент(Сотрудник);
СпрСотр.НайтиПоКоду(123);
СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович");
СпрСотр.НайтиПоРеквизиту("Оклад", 5000);

//если элемент найден, он становится текущим и его можно прочитать так:
Если СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович")=1 Тогда
........НайденныйСотр = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Автор: 1983air 27.09.21, 23:40

Цитата(4andriy @ 27.09.21, 14:33) *
да, надо найти в договорах строку которая выбрана в поле ввода и там изменить

Так найдите. Путь похож на правильный.
Цитата(denis84 @ 27.09.21, 16:43) *
Вам необходимо в этих договорах и искать, а не в сотрудниках.

Именно!
Цитата(4andriy @ 27.09.21, 21:29) *
нашел код который наверно можно адаптировать под задачу

Предыдущий тоже можно. Думаю, даже легче и быстрее.
Или Вы ищете, кто сделает это вместо Вас?! 32000000.gif

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua