Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Дек 2017, 07:34
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Изменение непериодического подчиненного регистра сведений РИБ  (Прочитано 1336 раз)

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

Оффлайн Romeo8044

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-09-03
  • Сайт: 
  • Профессия: Программист 8.1
Ребята есть проблема. Существует регистр сведений в который переносится ссылка на несуществующий объект. Регистр сведений подчинен регистратору, а поскольку регистратор - бытая ссылка , то невозможно просто зайти в него и его распровести. Запустить механизм тестирования и исправления тоже нельзя. Ввиду других ограничений.
Вопрос как перебрать записи регистра сведений и удалить все с битыми ссылками?
Вот так не работает - пустая выборка:
    кНабор = РегистрыСведений.СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям.СоздатьНаборЗаписей();
    кНабор.Прочитать();
я так понимаю с этими регистрами нужно работать через отбор, но у регистра нет ни одного ресурса, только регистратор и два измерения. Т.е. отбор по регистратору который не существует нельзя сделать. Так как же подчистить регистр?


Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Ну, и это логически. Для РС, подчиненных регистратору отбор доступен только по регистратору.
Я бы попробовал запросом извлечь регистраторы по этому РС. В выборке по запросу наваял бы что-то типа
МассивБитыхСсылок=Новый ММассив;
Пока Выборка.Следующий() Цикл
    Попытка
        ДокОб=Выборка.Регистратор.ПолучитьОбъект();
    Исключение
        МассивБитыхСсылок.Добавить(Выборка.Регистратор);
    КонецПопытки
КонецЦикла;
Ну а дальше дело техники. Перебираем массив, очищаем набор по битой ссылке.

Оффлайн Romeo8044

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-09-03
  • Сайт: 
  • Профессия: Программист 8.1
Делаю так:
   Физлицо = Справочники.ФизическиеЛица.НайтиПоКоду("О000000029");
   Запрос = Новый Запрос;
   ЗАпрос.Текст = "ВЫБРАТЬ
   |   СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям.Физлицо,
   |   СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям.Ведомость,
   |   СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям.Регистратор
   |ИЗ
   |   РегистрСведений.СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям КАК СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям";
   //ЗАпрос.УстановитьПараметр("Физлицо",Физлицо);
   рез = запрос.Выполнить().Выгрузить();
   Для каждого Стр из рез Цикл   
      Если Стр.Физлицо = Физлицо Тогда
         темп = РегистрыСведений.СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям.СоздатьНаборЗаписей();
         темп.Отбор.Регистратор.Установить(Стр.Регистратор);   
         темп.Прочитать();   
         Для каждого стр2 из темп цикл
            стр2.Регистратор=ДокументОснование.Ссылка;
         КонецЦикла;     
         Сообщить("Есть!");
      КонецЕСли;
   КонецЦикла;
   темп.Записать(Истина);
Но почему то запись в регистре не меняется. Хочу на конкретном человеке проверить... Может чего-то очевидного под конец дня не вижу.... Подскажите почему не проходят изменения по регистру.
Добавлено: 09 Сен 2015, 16:29

ДокументОснование это то на что нужно поменять битую ссылку...

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Потому что нефиг пилить сук, на котором сидишь.

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

Запрос.УстановитьПараметр("Физлицо", Физлицо);

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
БитаяСсылка=Ложь;
Попытка
ОбъектРегистратор=ВыборкаДетальныеЗаписи.Регистратор.ПолучитьОбъект(); //?тут надо как-то однозначно определять битость ссылки
Исключение
БитаяСсылка=Истина;
КонецПопытки;

Если Не БитаяСсылка Тогда
Продолжить;
КонецЕсли;

НаборЧтение=РегистрыСведений.СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям.СоздатьНаборЗаписей();
НаборЧтение.Отбор.Регистратор.Установить(ВыборкаДетальныеЗаписи.Регистратор);
НаборЧтение.Прочитать();

НаборЗапись=РегистрыСведений.СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям.СоздатьНаборЗаписей();
НаборЗапись.Отбор.Регистратор.Установить(Основание);
НаборЗапись.Прочитать();

Для каждого ЗаписьЧтение Из НаборЧтение Цикл
НоваяЗапись=НаборЗапись.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись,ЗаписьЧтение;
НоваяЗапись.Регистратор=Основание;
КонецЦикла;

НаборЧтение.Очистить();
НаборЧтение.Записать(Истина);

НаборЗапись.Записать(Истина);


КонецЦикла;


Теги:
 

Отличие проводки по регистру сведений от проводки по регистру накопления?

Автор DirecTwiXРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 4855
Последний ответ 18 Апр 2012, 02:19
от Dethmontt
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7757
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984
Изменение цвета при подборе сотрудника в форме списка справочника "Сотрудники организации" для документа "Зарплата к выплате организаций" ЗУП 2.5

Автор ksander-farsРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 275
Последний ответ 12 Окт 2017, 14:02
от wise
Проверка на "новую" запись в рег. сведений

Автор nomer13Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 14367
Последний ответ 11 Янв 2011, 10:04
от nomer13
Регистры накопления, Регистры сведений, Документы, Проведение

Автор kot_ooРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 12
Просмотров: 8159
Последний ответ 17 Янв 2014, 21:52
от kot_oo

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
145 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
50 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 123
  • Точка Скрытых: 0
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal