Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

1с7 Поиск и пометка на удаление зависимостей группы справочника Номенклатура

Alexej2
читатель
офлайн
Дата регистрации: 08.12.2009
Сообщений: 8
Пост №11
 
10.12.2009 10:35

Счас нужно пометить все зависимости на удаление (т.е. все ссылки на включенные, в выбранную группу, элементы).<br><br>А лучше - вывод в таблицу найденные зависимости (дубликаты не показывать) и дать возможность пользователю помечать (снимать) на удаление какие нужно.

Alexej2
читатель
офлайн
Дата регистрации: 08.12.2009
Сообщений: 8
Пост №12
 
14.12.2009 13:02

Как, всё-таки, с помощью полученных ссылок помещенных в ТабЗнач {применив НайтиСсылки() (или УдалитьОбъекты()} помечать на удаление сами справочники, документы и т.д.<br>А то никак не пойму.

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №13
 
14.12.2009 13:42

Какой-то не понятный вопрос.<br>Алгоритм простой:<br>1. берется объект который надо удалить (пометить)<br>2. Через НайтиСсылки ищется, кто его держит, т.е. не даст удалить стандартным способом<br>3. Если среди найденых ссылок есть критически важные (путем перебора строк таблицы), т.е. такие, которые нельзя удалять по внутренним соображениям, тогда ругаемся и ничего не делаем - выходим.<br>4. Опять-таки перебором строк берется ссылка, ищется объект (Метаданные указаны в этой же строке) и удаляется.<br>5. Удаляется основной объет.<br>

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №14
 
14.12.2009 13:49

"Примерно так, наверное:<br><br>Документ=СоздатьОбъект("Документ");<br>Справочник=СоздатьОбъект("Справочник");<br>ТаблЗнач=СоздатьОбъект("ТаблицаЗначений");<br>НайтиСсылки(ПлохойТовар,ТаблЗнач);<br>Для i=1 По ТаблЗнач.КоличествоСтрок() Цикл<br> ТекОбъект=ТаблЗнач.ПолучитьЗначение(i,2);<br> ТипЗначенияОбъекта=ТипЗначения(ТекОбъект);<br> Если ТипЗначенияОбъекта=11 Тогда //это справочник<br>       Если Справочник.НайтиЭлемент(ТекОбъект)=1 Тогда<br>             Справочник.Удалить(0);<br>       КонецЕсли;<br> ИначеЕсли ТипЗначенияОбъекта=12 Тогда //это документ<br>       Если Документ.НайтиДокумент(ТекОбъект)=1 Тогда<br>             Документ.Удалить(0);<br>       КонецЕсли;<br> КонецЕсли;<br>КонецЦикла;<br><br>только будет проблема с тем, что на те элементы, которые мы в данном случае метим на удаление тоже могут быть какие то ссылки и их тоже в свою очередь нужно собирать. У вас не получилось воспользоваться предложенными выше алгоритмами?"

Alexej2
читатель
офлайн
Дата регистрации: 08.12.2009
Сообщений: 8
Пост №15
 
21.12.2009 12:05

"Вот результат. Но всё равно выходит удалить небольшую часть объектов и ссылок на них, хотя поидее должна обойти их и пометить:<br><br><br>Процедура СсылкиНаСсылки(Удал1, н1) Далее<br><br>//*******************************************<br>Процедура Сформировать() //начало<br><br>СсылкиНаСсылки(ВыбНоменклатура, 1);<br> <br>Сообщить("Готово"); <br>КонецПроцедуры<br> <br><br>//н1 - счетчик<br>//Удал1 = Удаляемый объект<br>Процедура СсылкиНаСсылки(Удал1, н1)<br><br> <br>//Помечает на удаление объекты выбранного справочника Номенклатуры и передает в СпНом<br>СпНом = СоздатьОбъект("СписокЗначений");<br>СпрНом = СоздатьОбъект("Справочник.Номенклатура");<br><br>СпрНом.ВыбратьЭлементы();<br>Пока СпрНом.ПолучитьЭлемент() = 1 Цикл <br> Если СпрНом.ТекущийЭлемент() = Удал1 Тогда<br> СпрНом.Удалить(0);<br> СпНом.ДобавитьЗначение(СпрНом.ТекущийЭлемент()); <br> КонецЕсли;<br>КонецЦикла;<br><br>//Удаление выб. Номенклатуры, если есть ссылки на них - не удаляются, а ссылки в ТЗ<br>ТЗ = СоздатьОбъект("ТаблицаЗначений");<br>УдалитьОбъекты (СпНом, 1, ТЗ);<br><br><br><br>//ссылки на справочники и документы помечаем на удаление <br>ТЗ.ВыбратьСтроки();<br>Пока ТЗ.ПолучитьСтроку() = 1 Цикл<br><br> Объект = ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки,"Ссылка");<br> ТипОбъекта = ТипЗначенияСтр(Объект);<br> ВидОбъекта = Объект.Вид();<br> ВремОбъект = СоздатьОбъект(ТипОбъекта+"."+ВидОбъекта);<br> Если ТипОбъекта = "Справочник" Тогда<br>       Элем=ВремОбъект.НайтиЭлемент(Объект);<br>       ВремОбъект.Удалить(0); //помечаем на удаление<br> н1=н1+1;<br> СсылкиНаСсылки(ВремОбъект, 1);<br> ИначеЕсли ТипОбъекта = "Документ" Тогда<br>       Докум=ВремОбъект.НайтиДокумент(Объект);<br>       ВремОбъект.Удалить(0);<br> н1=н1+1;<br> СсылкиНаСсылки(ВремОбъект, 1);<br> КонецЕсли;<br> Сообщить(н1);<br>КонецЦикла;<br> <br> Сообщить("КонецОбхода");<br>КонецПроцедуры"

Alexej2
читатель
офлайн
Дата регистрации: 08.12.2009
Сообщений: 8
Пост №16
 
22.12.2009 12:26

"Заменил<br><br>СсылкиНаСсылки(ВремОбъект, 1);<br><br>На<br><br>СсылкиНаСсылки(Объект, н1);<br><br><br>Стал работать дольше , счетчик н1 показал в 4 раза больше обходов.<br>Но все равно не хочет удалять все вложенные (а также вложенных (и т.д.) ) зависимости.<br><br><br>Счас заметил что как минимум часть помеченных не удаляется из-за того что хоть и помечены, но ссылаются друг на друга.<br>Как модернезировать, чтобы такие сразу удалялись?"

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №17
 
22.12.2009 14:33

Отвязать. Я так понимаю это что-то типа в Номенклатуре указана основная единица измерения, которая является подчиненной этого элемента. Тут только очистить поле в номенклатуре.<br><br>Я в 8-ке делал так: собирал ссылки до глубины скажем 4 (вложенность не более 4), смотрел нет ли среди них того, что удалять нельзя (документов) и если все хорошо - удалял непосредственно, без контроля (я уже проконтролировал).<br>Потому как и в 8-ке циклическая ссылка двух удаляемых элементов друг на друга не дает удалить стандартным метод.

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация