Имя: Пароль:
1C
1C 7.7
v7: 1С 7.7 ТиС. Удалить определенных контрагентов и номенклатуру.
,
0 multilate
 
09.07.13
13:11
1С 7.7 ТиС. Нужно как-то найти в базе всех контрагентов и всю номенклатуру, которые не использовались в документах в 2013 году. Т.е. все старые элементы справочника, которые использовались только до 2013 года. Подскажите, пожалуйста, как их можно найти?

Вот нашел код:
Док = СоздатьОбъект("Документ");
Док.ВыбратьДокументы(ДатаНач,ДатаКон);
ш=0;
НачатьТранзакцию();
Пока Док.ПолучитьДокумент()=1 Цикл
 Док.Удалить(1);
 ш=ш+1;
 Если ш>= 200 Тогда
   ЗафиксироватьТранзакцию();
   НачатьТранзакцию();
   ш=0;
 КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();

Думаю с помощью него удалить все документы 2012 года. После чего пометить ВСЕ  справочники на удаление и я предпологаю, что он мне даст удалить контрагентов и номенклатуру только ту, что была использована до 31.12.2012 года. Соответственно, все что останется это и есть все контрагенты и номенклатура, которая используется в 2013 году. Как думаете, получится ли?:)
1 Godofsin
 
09.07.13
13:12
Получится. И куча битых ссылок тоже получится
2 1Сергей
 
09.07.13
13:14
НайтиСсылки(<Объекты>,<Ссылки>)
3 Базис
 
naïve
09.07.13
13:15
Документы 2012 и ранее должны остаться?
4 Базис
 
naïve
09.07.13
13:17
Перечитал, понял, отвечаю. Не удаляй документы непосредственно, остальное правильно придумал - и у тебя штатно удалиться сможет только то, что не сыграло в этом году.
5 Cube
 
09.07.13
13:18
(0) Ну, допустим, получилось, дальше что? Остатков нет, как работать дальше в такой базе?
6 multilate
 
09.07.13
13:22
Мне не нужно работать в этой базе. Моя цель найти старых контрагентов и старую номенклатуру, которой не пользуются в 2013 году. До меня кто-то там перенес все справочники и остатки из ТиС в УТ 11. Теперь же меня попросили найти эти старые справочники в УТ 11 и удалить их оттуда. Но т.к. документов в УТ 11 нету искать их приходится в ТиС.
7 Андрей_Андреич
 
naïve
09.07.13
13:22
(0) Насчет пометить все справочники на удаление - осторожнее. Дапустим, номенклатура не удалится и ты потом отмегишь пометку удаления. Но при этом удалятся подчиненные справочник. Допустим, цены, а за это будет ай-яй-яй.
8 Андрей_Андреич
 
naïve
09.07.13
13:23
(6) Тогда (7) снимается
9 Злопчинский
 
09.07.13
13:24
посмотри, возможно пригодится
http://infostart.ru/public/20766/
10 multilate
 
09.07.13
13:26
А как такой вариант, без удаления.

ДокПрием.ВыбратьДокументы(01.01.2013, 31.12.2013); //Здесь задаю период
Пока ДокПрием.ПолучитьДокумент()=1 Цикл
  Контрагент = ДокПрием.Контрагент;
  //и даьше записываю их в строчку в какой-нибудь текстовый файл
КонецЦикла;

Вроде как тоже найду всех контрагентов, которые используются в 2013 году?
Метод ДокПрием.ВыбратьДокументы(01.01.2013, 31.12.2013); выберает ведь абсолютно все документы за 2013 год?

А дальше можно перебором номенклатуру в каждом документе тоже в файл записывать.
11 Darych
 
09.07.13
13:28
(10) а как насчет запроса?
12 Андрей_Андреич
 
naïve
09.07.13
13:30
(10) Ну если нужен список используемых в 2013 году - отчет по взаиморасчетам и по движениям товаров за 2013 год. Не?
13 1Сергей
 
09.07.13
13:30
(10) чем тебе (2) не понравилось?
14 Dmitrith
 
09.07.13
13:32
Я бы засунул всю номенклатуру в ТЗ, потом прошелся по табличным частям документов за период, выставляя флаг в ТЗ. На основании получившихся в ТЗ без флага удалял бы их.
15 Злопчинский
 
09.07.13
14:25
(10)
1. распечатай реестр реализаций и поступлений за нужный период. в нем штатно выводится контрагент. - такая распечатка есть штатно в ТиСе (если надо - добавь в реест другие доки по контрагентам в засимости от тових хотелок).
.
2. Воспользовавшись универсальной печатью справочников (с диска ИТС, обычно у вменяемых эта обработка стоит, см. Меню-Сервис-ДопВозможности- Универсальная печать справочников) - получи список ВСЕХ клиентов.
.
3. списки из 1 и 2 сохрани в эксель, и штатными экселевскими средствами "скрести" их (например функцией ВПР или другим способом) - получишь разницу списков. то есть подсписок.
.
4. По этому подсписку - ручками или обработкой универсального подбора - формируешь список и нужных клиентов и делаешь с ним что надо...
.
самый сл.пункт = 4, так как по контрагентам есть куча подчиненных справочников
16 Злопчинский
 
09.07.13
14:26
(12) можно и так, но надо учесть например, что реализации на комиссию во взаиморасчетах никак не отражаются - надо подтягивать данные из отчета по комиссионерам... это что навскидку вспомнил
17 Lazy Stranger
 
09.07.13
14:30
имхо проще собрать в список значений всех использовавшихся в 2013 контрагентов и потом вывести список тех, которые в этот список не попали (тоже самое для номенклатуры)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший