powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Ошибка при переборе периодических реквизитов справочника ?
6 сообщений из 6, страница 1 из 1
Ошибка при переборе периодических реквизитов справочника ?
    #38509924
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, в общем на ваял процедуру которая удаляет значения периодических реквизитов и устанавливает текущее значение на указанную дату:

Процедура Сформировать()
ОС = СоздатьОбъект("Справочник.ОсновныеСредства");
Период=СоздатьОбъект("Периодический");
МетаСпр = Метаданные.Справочник(ОС.Вид());
НекаяДата = Дата("31.12.2012");
ОС.ВыбратьЭлементы();
Пока ОС.ПолучитьЭлемент() = 1 Цикл
Если ОС.ЭтоГруппа() = 1 Тогда
Продолжить;
КонецЕсли;
Сообщить(ОС.Наименование);
Для Инд = 1 По МетаСпр.Реквизит() Цикл
Если МетаСпр.Реквизит(Инд).Периодический = 1 тогда
Период.ИспользоватьОбъект(МетаСпр.Реквизит(Инд).Идентификатор, ОС.ТекущийЭлемент());
Значение = Период.ЗначениеНаДату(РабочаяДата());
Период.ВыбратьЗначения();
Пока Период.ПолучитьЗначение()=1 Цикл
Период.Удалить();
КонецЦикла;
Период.Значение = Значение;
Период.ДатаЗнач = НекаяДата;
Период.Записать();
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры

Проходит несколько элементов справочника все нормально работает, все удаляет и все устанавливает, но на каком то элементе выдает такую ошибку:

Период.Удалить();
{D:\МОИ ОБРАБОТКИ\УДАЛИТЬИСТОРИЮПЕРИОДРЕКВ.ERT(19)}: Значение установлено документом!

Как обойти это ограничение (ну или как правильно назвать это) ?
...
Рейтинг: 0 / 0
Ошибка при переборе периодических реквизитов справочника ?
    #38510012
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно не помню - но в 7 помоему нельзя удалять установелнные документом. Можно только отменить проведение документа или изменить процедуру его проведения.

Может проще пропускать в вашей обработки значения установленные документами? А потом их отдельно удалите.

ps Судя по вашей процедуре - это перенос остатков. Значит нужно вместо старых документов заводить документ ввод остатков по ОС.
...
Рейтинг: 0 / 0
Ошибка при переборе периодических реквизитов справочника ?
    #38510266
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1с, тут просто остатки по основным средствам достаточно много времени вводились , а потом как оказалось амортизация считается только если объект ОС введен в прошлом месяце, т.е. как я понял если ввести объект 31.12.2012 то за январь 2013 можно посчитать амортизацию, а если вводить остатки 01.01.2013 то январь выпадает, так и заладилась идея изменить реквизиты.

Но я столкнулся еще с одной проблемой:
Один из периодических реквизитов данного справочника является "счет затрат", когда я удаляю все записи по данному реквизиту, а потом записываю на другую дату то удаляются субконта по счету, делаю попытки восстановить:

Процедура Сформировать()
Перем Док, Элемент;
ОС = СоздатьОбъект("Справочник.ОсновныеСредства");
Период=СоздатьОбъект("Периодический");
МетаСпр = Метаданные.Справочник(ОС.Вид());
НекаяДата = Дата("31.12.2012");
ОС.ВыбратьЭлементы();
Пока ОС.ПолучитьЭлемент() = 1 Цикл
Если ОС.ЭтоГруппа() = 1 Тогда
Продолжить;
КонецЕсли;
Сообщить(ОС.Код + " "+ ОС.Наименование);
Суб1 = ОС.ТекущийЭлемент().Субконто1;
Суб2 = ОС.ТекущийЭлемент().Субконто2;
Суб3 = ОС.ТекущийЭлемент().Субконто3;
Для Инд = 1 По МетаСпр.Реквизит() Цикл
Если МетаСпр.Реквизит(Инд).Периодический = 1 Тогда
Период.ИспользоватьОбъект(МетаСпр.Реквизит(Инд).Идентификатор, ОС.ТекущийЭлемент());
Значение = Период.ЗначениеНаДату(РабочаяДата());
Период.ВыбратьЗначения();
Пока Период.ПолучитьЗначение()=1 Цикл
Док = Период.ТекущийДокумент();
Если ПустоеЗначение(Док) = 0 Тогда
Сообщить("Док № "+Док.НомерДок+" Документ: "+Док.Операция+" Реквизит: "+МетаСпр.Реквизит(Инд).Идентификатор);
Продолжить;
КонецЕсли;
Период.Удалить();
КонецЦикла;
Период.Значение = Значение;
Период.ДатаЗнач = НекаяДата;
Период.Записать();
КонецЕсли;
КонецЦикла;
ОС.ТекущийЭлемент().НазначитьТип("Субконто1", ВидыСубконто.ЗначениеПоИдентификатору(Суб1));
ОС.ТекущийЭлемент().Субконто1 = Суб1;
ОС.ТекущийЭлемент().НазначитьТип("Субконто2", ВидыСубконто.ЗначениеПоИдентификатору(Суб1));
ОС.ТекущийЭлемент().Субконто2 = Суб2;
ОС.ТекущийЭлемент().НазначитьТип("Субконто3", ВидыСубконто.ЗначениеПоИдентификатору(Суб1));
ОС.ТекущийЭлемент().Субконто3 = Суб3;
ОС.Записать();
КонецЦикла;
КонецПроцедуры

но почему то после прогонки обработкой поля субконто все равно оказываются пусты, подскажите пожалуйста как их можно восстановить (не потерять) ?
...
Рейтинг: 0 / 0
Ошибка при переборе периодических реквизитов справочника ?
    #38510340
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проводки можно поменять. Вернуть субконто... как я понимаю проще всего еще раз провести документы по вводу в эксплуатацию ОС.
...
Рейтинг: 0 / 0
Ошибка при переборе периодических реквизитов справочника ?
    #38510820
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1с,
Не понял что вы имели ввиду, дело в том что справочник Основные средства хранит счет отнесения затрат на амортизацию и субконто по счету затрат, т.е. счет и субконто это справочная информация и от проведения документов она не зависит, как бы я не дела я не могу обратится к полям объект потому что не определяется типы объекта например :
Счет = Элемент.СчетЗатрат;
Суб1 = Элемент.Субконто1;
Суб2 = Элемент.Субконто2;
Суб3 = Элемент.Субконто3;

И в отладчике и процедурой ТипЗначенияСтр(<?>) определяет как неопределенный объект, следовательно ни свойства ни методы этих объектов не понимаются ? как решить проблем а ?
...
Рейтинг: 0 / 0
Ошибка при переборе периодических реквизитов справочника ?
    #38510846
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вернее зависит от документов при условии что запись периодического реквизита создавалась через документ, но таких меньшенство в основном редактировалось по средством самого справочника
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Ошибка при переборе периодических реквизитов справочника ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]