|
Справочники | ☑ | ||
---|---|---|---|---|
0
st31
05.10.11
✎
07:00
|
Что-то зациклился, не пойму почему ругается. Информация по элементам справочника (в т.ч. и с периодическими)занесена в ТаблицуЗначений. теперь из ТЗ надо информацию обновить в справочнике ОС. Написал следующий код (с сокращениями):
ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл Если СпрОС.НайтиЭлемент(ТЗ.ОС)=1 Тогда Спр=СпрОС.ТекущийЭлемент(); Сообщить("Заполняем элементы справочника "+Спр.Наименование+" с кодом:"+Спр.Код); Спр.ИспользоватьДату(ДатаКон); Если ПустоеЗначение(ТЗ.Группа)=0 тогда Спр.Группа=ТЗ.Группа; КонецЕсли; ... Спр.Записать(); И тут выскакивает непонятное сообщение и обработка прерывается: Спр.Записать(); {M:\.....(465)}: Не выбран элемент! В отладчике смотрел Спр=СпрОС.ТекущийЭлемент(); Спр выбран как элемент справочника. |
|||
1
ДенисЧ
05.10.11
✎
07:02
|
НайтиЭлемент() используй
|
|||
2
chelentano
05.10.11
✎
07:03
|
(0) раболтай с СпрОС, а не с Спр
|
|||
3
chelentano
05.10.11
✎
07:04
|
+(2) убрать Спр=СпрОС.ТекущийЭлемент(); ниже Спр заменить на СпрОС
|
|||
4
st31
05.10.11
✎
07:06
|
(2)Методологически непонятно почему не работает. Я перепозиционировался на новый элемент справочника, который должен отработать или я что-то не понял?
|
|||
5
chelentano
05.10.11
✎
07:07
|
(4) ты работаешь с ссылкой, а надо работать с объектом
|
|||
6
DJ Anthon
05.10.11
✎
07:08
|
(4) это не снеговик ))
|
|||
7
st31
05.10.11
✎
07:09
|
(5)а вариант выбора элемента справочника из ТЗ.ОС пройдет?
ТЗ.НоваяКолонка("ОС","Справочник.ОсновныеСредства"); |
|||
8
st31
05.10.11
✎
07:11
|
т.е.всеюду всесто Спр и СпрОС поставить ТЗ.ОС и далее заполнение элементов, в т.ч. и периодических?
|
|||
9
chelentano
05.10.11
✎
07:19
|
(8) мля...
вкратце: СпрОС = СоздатьОбъект("Справочник.ОсновныеСредства); СпрОС.НайтиЭлемент(ТЗ.ОС); СпрОС.ИспользоватьДату(ДатаКон); СпрОС.Группа=ТЗ.Группа; СпрОС.Записать(); |
|||
10
st31
05.10.11
✎
07:26
|
(9) Так я и поступил. Элемент справочника вроде записался (обаботка прошла полностью).
Когда просматриваю историю записей периодических реквизитов - записей на заданную дату нет. В свойствах реквизитов всюду стоят флажки: -периодический -изменяетсяДокументами -ручноеИзменение ? |
|||
11
chelentano
05.10.11
✎
07:27
|
(10) а я хз как ты там периодические реквизиты записываешь
|
|||
12
st31
05.10.11
✎
07:30
|
Выбрал СпрОС.ИспользоватьДату(ДатаКон);
и присваиваю все значения независимо они периодические или нет. СпрОС = СоздатьОбъект("Справочник.ОсновныеСредства"); задавал раньше. теперь его вставил в цикл. Пока идет обработка, результаты пока не видны. |
|||
13
chelentano
05.10.11
✎
07:31
|
(12) я сейчас точно не помню, но, по-моему, ИспользоватьДату только для получения значений периодических реквизитов
|
|||
14
st31
05.10.11
✎
07:34
|
Выдержка из учебника:
//можно установить дату выборки периодических //реквизитов для всего справочника СпрСотр.ИспользоватьДату(НекаяДата); //тогда ниже уже нельзя использовать Установить и Получить //доступ к периодическим реквизитам становится //такой же, как к обычным реквизитам Катег = СпрСотр.Категория; СпрСотр.Оклад = 6000; |
|||
15
Chum
05.10.11
✎
07:38
|
(12) за создание объектов в цикле в случае. когда не требуются разные объекты - пожизненных эцих с гвоздями.
СпрОС = СоздатьОбъект("Справочник.ОсновныеСредства); СпрОС.ИспользоватьДату(ДатаКон, 1); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл Если ПустоеЗначение(ТЗ.Группа)=0 тогда СпрОС.НайтиЭлемент(ТЗ.ОС); СпрОС.Группа=ТЗ.Группа; СпрОС.Записать(); КонецЕсли; КонецЦикла; ----- СпрОС = СоздатьОбъект("Справочник.ОсновныеСредства); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл Если ПустоеЗначение(ТЗ.Группа) = 0 тогда СпрОС.НайтиЭлемент(ТЗ.ОС); СпрОС.Группа.Установить(ДатаКон,ТЗ.Группа); //СпрОС.Записать(); // не требуется для существующих элементов КонецЕсли; КонецЦикла; |
|||
16
st31
05.10.11
✎
07:39
|
(13) обработка завершена. вставил
СпрОС = СоздатьОбъект("Справочник.ОсновныеСредства); периодические реквизиты заполнились. Благодарю всех :) |
|||
17
st31
05.10.11
✎
07:43
|
(15) В своей обработке я пытался уйти от .Установить(), чтобы на каждом элементе не заморачиваться: периодический он или нет
|
|||
18
Chum
05.10.11
✎
07:46
|
(17) а определить признак "периодический" через метаданные не?
|
|||
19
st31
05.10.11
✎
07:50
|
(18) Не пробывал. Воспользовался (14)- вроде прошло :)
|
|||
20
Chum
05.10.11
✎
07:51
|
(19) более правильно: СпрОС.ИспользоватьДату(ДатаКон, 1);
1 - признак "установить сразу" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |