Имя: Пароль:
1C
1С v8
Перебор всех документов как в 77. Какой аналог?
,
0 Кокос
 
18.02.13
13:46
Вот такой код на 7рке:

Докс = СоздатьОбъект("Документ");
Докс.ВыбратьДокументы();
Пока Докс.ПолучитьДокумент() = 1 Цикл
  Докс.НомерДок  = "РА"+Сред(Докс.НомерДок,3);
  Докс.ЗАписать();
КонецЦикла;


Как его написать на 8рке также коротко? Там вроде глобального менеджера всех документов нет... Может както через метаданные?
1 Cube
 
18.02.13
13:47
Нет такого. Тебе зачем?
2 Кокос
 
18.02.13
13:48
лениво все документы в БП30 перебирать. надо добавить новое юрлицо. ну и старое опрефиксить
3 Wobland
 
18.02.13
13:48
(1) префикс проставить
4 Джинн
 
18.02.13
13:48
А зачем их все перебирать? Практическая цель?
На заре 8 версии в инете способов перебора пачки были.
5 Кокос
 
18.02.13
13:51
(4) префиксы :) а так я думаю можно через метаданные.
6 Cube
 
18.02.13
13:53
(5) Покури НайтиПоСсылкам()
7 GANR
 
18.02.13
13:55
// формируем текст запроса
// ко всем видам документов
ТекстЗапроса = "";
Для Каждого ОбъектМетаданных Из Метаданные.Документы Цикл
  Если ТекстЗапроса <> "" Тогда
     ТекстЗапроса = ТекстЗапроса + "
     |ОБЪЕДИНИТЬ ВСЕ";
  КонецЕсли;
  ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ
  |   Ссылка
  |ИЗ
  |   " + ОбъектМетаданных.ПолноеИмя();
КонецЦикла;

// выполняем запрос
Запрос = Новый Запрос(ТекстЗапроса);

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

// обрабатываем результат запроса
Пока Выборка.Следующий() Цикл
  ОбъектПоСсылке = Выборка.Ссылка.ПолучитьОбъект();
  ...
  ОбъектПоСсылке.Записать();
КонецЦикла
8 Cube
 
18.02.13
13:56
(7) Так можно на ошибку в 255 таблиц налететь ненароком...
9 GANR
 
18.02.13
13:57
(8) с 2005 версии MS SQL это ограничение снято, вроде
10 GANR
 
18.02.13
13:58
ТекстЗапроса = ТекстЗапроса + "
  |ВЫБРАТЬ
  |   Ссылка
  |ИЗ
  |   " + ОбъектМетаданных.ПолноеИмя();

иначе (7) не запашет
11 Кокос
 
18.02.13
14:00
Спасибо!