Имя: Пароль:
1C
 
Программное внесение в справочник периодических реквизитов
0 st31
 
06.05.14
11:40
Всем привет. Откликнитесь, кто знает.После большого перерыва в программировании не все получается :-( .                                           В справочнике "Контрагенты" введены два периодических реквизита: ДолжностьЗаказчика и
ФИОЗаказчика.
Делаю перенос с другой базы.Сравниваю, на заданную дату внесены ли соответствующие фамилии и должности и
в случае нобходимости хочу их записать на конкретные даты.
СпрКонтр1=СоздатьОбъект("Справочник.КонтрАгенты");
Если ПустоеЗначение(ТЗ.УНН)=0 Тогда
Если СпрКонтр1.НайтиПоРеквизиту("УНН",СокрЛП(ТЗ.УНН),1)=1 Тогда
СпрКонтр=СпрКонтр1.ТекущийЭлемент();  
//...
Если ((ПустоеЗначение(ТЗ.ДатаДолжностьЗаказчика)=0) и (ПустоеЗначение(ТЗ.ДолжностьЗаказчика)=0))Тогда
Если (СокрЛП(СпрКонтр.ДолжностьЗаказчика.Получить(ТЗ.ДатаДолжностьЗаказчика))<>СокрЛП(ТЗ.ДолжностьЗаказчика)) Тогда
                    СпрКонтр.ДолжностьЗаказчика.Установить(ТЗ.ДатаДолжностьЗаказчика,СокрЛП(ТЗ.ДолжностьЗаказчика));
СпрКонтр.Записать();
КонецЕсли;                              
КонецЕсли;                   
            
Если ((ПустоеЗначение(ТЗ.ДатаФИОЗаказчика)=0) и (ПустоеЗначение(ТЗ.ФИОЗаказчика)=0))Тогда                 
Если (СокрЛП(СпрКонтр.ФИОЗаказчика.Получить(ТЗ.ДатаФИОЗаказчика))<>СокрЛП(ТЗ.ФИОЗаказчика)) Тогда
                    СпрКонтр.ФИОЗаказчика.Установить(ТЗ.ДатаФИОЗаказчика,СокрЛП(ТЗ.ФИОЗаказчика));
СпрКонтр.Записать();
КонецЕсли;                
КонецЕсли;                                                              
Не пропускает в таком варианте, хотя в этих реквизитах справочника стоят флажки: периодический, изменять документами, изменять вручную.          Все время выдает ошибку: СпрКонтр.ФИОЗаказчика.Установить(ТЗ.ДатаФИОЗаказчика,СокрЛП(ТЗ.ФИОЗаказчика)) = Ошибка в выражении!                                               Пробывал в отладчике сделать прямую запись:                                        СпрКонтр = Рога и Копыта ЧП
СпрКонтр.ФИОЗаказчика.Установить('21.02.14',"Иванов В.В.") = Ошибка в выражении!                                                                                                              
СпрКонтр.ФИОЗаказчика = НеизвестныйОбъект                              
Помогите, кто знает причину.
Заранее благодарю за помощь :-)
1 st31
 
06.05.14
11:51
Народ, я понимаю, что устарел с вопросом по 7.7, но может кто поможет, кто знает как это сделать
2 ДенисЧ
 
06.05.14
11:54
Сделай ИспользоватьДату() и просто присавивай, записать потом не забудь
3 st31
 
06.05.14
11:56
Сейчас попробую, а почему через Установить() не катит?
Что не учитываю, чтобы записались периодические реквизиты в справочник?
4 efim16rus
 
06.05.14
11:57
Метод "Установить" можно использовать только для объектов-справочников, созданных функцией СоздатьОбъект.
А у тебя СпрКонтр=СпрКонтр1.ТекущийЭлемент();
Поэтому не работает.
5 efim16rus
 
06.05.14
11:57
Сделай СпрКонтр1.ФИОЗаказчика.Установить('21.02.14',"Иванов В.В.")
6 st31
 
06.05.14
11:59
Благодарю, пробую :-)
7 Chum
 
06.05.14
12:03
СпрКонтр.ИспользоватьДату( НужнаяДата, 1 );

тогда все прокатит и без метода Установить
8 st31
 
06.05.14
12:14
СпрКонтр1.ДолжностьЗаказчика.Установить(ТЗ.ДатаДолжностьЗаказчика,СокрЛП(ТЗ.ДолжностьЗаказчика));
{G:\1C\FILIAL2011\EXTFORMS\ДЛЯ ОТРАБОТКИ\ЗАГРАКТОВИЗЕХЕL.ERT(661)}: Не выбран элемент!
Что-то с использованием СпрКонтр1 не прокатило.                       Интересно почему?
9 Ёпрст
 
06.05.14
12:17
(8) вот этот бред выкини, для начала

>>>СпрКонтр=СпрКонтр1.ТекущийЭлемент();
10 st31
 
06.05.14
12:21
Не вопрос, сейчас попробую :-)
11 Масянька
 
06.05.14
12:22
(9) Ё! Есть такой вопрос: если смотреть на "периодический реквизит" с позиции классического программирования - это класс или ближе к массиву?
12 Ёпрст
 
06.05.14
12:46
(11) это бездарное 1с-овское изобретение..
13 Ёпрст
 
06.05.14
12:47
нужно было по-быстрому слепить - вот и сделали, а потом, забили
14 Масянька
 
06.05.14
12:48
(12) (13) Полностью согласна. Но все же?