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

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

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

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

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

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

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №2
 
08.12.2009 12:32

По-моему, согласно кода у вас должен пометиться Выбранная группа и соответственно все, что в ней находится, так что получается, что все правильно.<br>В общем не ясно - а в чем вопрос?

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

"У этой группы могут иметься зависимости (например: Справочник.Единицы , какие-либо непроведённые документы и т.д.) из-за чего Операция "Удаление помеченных объектов" не захочет удалять .<br><br>P.S. Если в коде изменить на<br><br>СпрНом.Удалить(1);<br><br>то группа сразу удалиться , но неизвестно что станет с этими зависимостями."

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №4
 
08.12.2009 12:47

Системную процедуру "НайтиСсылки()" нужно использовать.

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

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

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №6
 
08.12.2009 16:51

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

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

"А как реализовать вашу процедуру<br>УдалитьЗависимые (СпрНом.ТекущийЭлемент());<br><br><br>Разместил на форме таблицу и добавил код а как обработать его не знаю:<br><br>//ТабЗнач - таблица значений в форме<br>НайтиСсылки(СпрНом.ТекущийЭлемент(),ТабЗнач);<br><br><br>Код предлеженный Thorvardr (08.12.2009 16:51) просто помечает все элементы в группе, не затрагивая сами группы"

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

"> Код предлеженный Thorvardr (08.12.2009 16:51) просто помечает все элементы в группе, не затрагивая сами группы<br>Как это не затрагивая?<br><br> Если СпрНом.ЭтоГруппа() = 0 Тогда<br>....<br> Иначе<br>       СпрНом.Удалить(0); //Здесь группа и она помечается на удаление<br> КонецЕсли;"

zak555 (398843952)
читатель
офлайн
Дата регистрации: 27.03.2008
Сообщений: 4656
Пост №9
 
09.12.2009 14:34

я так и не понял, что надо сделать в задаче

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

Знаю. Я тоже так считаю.<br>Счас посмотрел и определил что был обман зрения - непометилась только сама папка "ВыбНоменклатура" а всё что внутри - помечает.

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

Читают тему:

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