|
Удаление подчиненных документов? помогите | ☑ | ||
---|---|---|---|---|
0
BadimB
21.11.11
✎
08:40
|
УПП 8.2
Раздел "заказы на производство" Есть много заказов на производство, на основании заказов созданы "отчеты производства за смену" и "требование накладная" и возможно что то еще. Задача: есть обработка которая выгружает в 1С "заказы на производство" и если такой заказ уже был 1. Надо удалить заказ 2. Распровести и удалить все вытекающие из него документы Никак не могу получить список подчиненных документов подскажите фрагмент кода поиска документов |
|||
1
BadimB
21.11.11
✎
08:44
|
Лучшее что нашел вот это:
Процедура КнопкаВыполнитьНажатие(Кнопка) ВыбКонтрагент=Документы.ЗаказНаПроизводство.НайтиПоНомеру("00000008129"); //МассивСсылок = КритерииОтбора.СвязанныеДокументы.Найти(ВыбКонтрагент); МассивСсылок =ПолучитьСписокПодчиненныхДокументов(ВыбКонтрагент); Для Каждого Ссылка Из МассивСсылок Цикл Сообщить(Ссылка); КонецЦикла; // Вставить содержимое обработчика. КонецПроцедуры Функция ПолучитьСписокПодчиненныхДокументов(ДокументОснование) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СтруктураПодчиненности.Ссылка |ИЗ | КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СтруктураПодчиненности"; Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ДокументОснование); Возврат Запрос.Выполнить().Выгрузить(); КонецФункции Но он мне выдает все задания на производство |
|||
2
Повелитель
21.11.11
✎
08:50
|
НайтиПоСсылкам(<СписокСсылок>)
Параметры: <СписокСсылок> (обязательный) Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти. Возвращаемое значение: Тип: ТаблицаЗначений. Возвращает ссылки на найденные объекты в виде ТаблицаЗначений. Первая колонка - исходная ссылка. Вторая колонка - ссылка на объект, если найденная ссылка соответствует объектной таблице или значение, олицетворяющее запись необъектной таблицы. Третья колонка - объект метаданных, которому соответствуют данные в которых найдена ссылка. Описание: Осуществляет поиск ссылок на объекты, переданные в параметре <СписокСсылок>. |
|||
3
BadimB
21.11.11
✎
09:26
|
Что то делаю не так
Процедура КнопкаВыполнитьНажатие(Кнопка) ВыбКонтрагент=Документы.ЗаказНаПроизводство.НайтиПоНомеру("00000008129"); МассивСсылок =НайтиПоСсылкам(ВыбКонтрагент); //Ссылки.ВыбратьСтроку(); Для Каждого Ссылка Из МассивСсылок Цикл Сообщить ("" + СокрЛП(Ссылка[0]) + " - " + СокрЛП(Ссылка[1])); КонецЦикла; КонецПроцедуры вываливается в ошибку |
|||
4
Повелитель
21.11.11
✎
09:42
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
ВыбКонтрагент=Документы.ЗаказНаПроизводство.НайтиПоНомеру("00000008129"); мМассив = Новый Массив; мМассив.Добавить(ВыбКонтрагент); МассивСсылок =НайтиПоСсылкам(мМассив); Для Каждого Состав Из МассивСсылок Цикл Сообщить (Состав.Ссылка); КонецЦикла; КонецПроцедуры |
|||
5
BadimB
21.11.11
✎
09:55
|
Спасибо, про массив не допер
но результат, все равно не тот У заказа на производство "00000008129" в подчиненных есть отчет за смену его видно если запросить "структуру подчиненности документа" а процедура его не показывает в колонке "данные" выдала все текущие "заказы на производство", но они не нужны надо показать какие документы подчинены заказу, чтобы потом их удалить |
|||
6
hhhh
21.11.11
✎
10:18
|
(5) детская ошибка. У метода НайтиПоНомеру - два параметра.
|
|||
7
BadimB
21.11.11
✎
10:30
|
Второй параметр искать в диапазоне, но это не спасает
код: ВыбКонтрагент=Документы.ЗаказНаПроизводство.НайтиПоНомеру("00000008129","10 декабря 2011 года"); мМассив = Новый Массив; мМассив.Добавить(ВыбКонтрагент); МассивСсылок =НайтиПоСсылкам(мМассив); Для Каждого Состав Из МассивСсылок Цикл Сообщить ("" + СокрЛП(Состав[0]) + " - " + СокрЛП(Состав[1])); Выдает следующий результат: ... - Заказ на производство 00000000328 от 26.10.2011 0:00:00 - Заказ на производство 00000000329 от 26.10.2011 0:00:00 - Заказ на производство 00000000330 от 26.10.2011 0:00:00 - Заказ на производство 00000000331 от 26.10.2011 0:00:00 - Заказ на производство 00000000332 от 26.10.2011 0:00:00 - Заказ на производство 00000000333 от 26.10.2011 0:00:00 - Заказ на производство 00000000334 от 26.10.2011 0:00:00 - Заказ на производство 00000000335 от 26.10.2011 0:00:00 - Заказ на производство 00000000336 от 26.10.2011 0:00:00 - Заказ на производство 00000000337 от 26.10.2011 0:00:00 - Заказ на производство 00000000338 от 26.10.2011 0:00:00 - Заказ на производство 00000000339 от 26.10.2011 0:00:00 ... мягко это немного не то а надо что то типа 00000000040 Отчет производства за смены от 26.10.2011 |
|||
8
BadimB
21.11.11
✎
10:38
|
ВыбКонтрагент=Документы.ЗаказНаПроизводство.НайтиПоНомеру("00000008129",ТекущаяДата());
мМассив = Новый Массив; мМассив.Добавить(ВыбКонтрагент); МассивСсылок =НайтиПоСсылкам(мМассив); Для Каждого Состав Из МассивСсылок Цикл Сообщить ("" + СокрЛП(Состав[0]) + " - " + СокрЛП(Состав[1])); КонецЦикла; выдал вроде то что надо: Заказ на производство 00000008129 от 17.11.2011 12:21:11 - Отчет производства за смену 00000000039 от 17.11.2011 12:21:50 Заказ на производство 00000008129 от 17.11.2011 12:21:11 - Заказ на производство 00000008129 от 17.11.2011 12:21:11 Заказ на производство 00000008129 от 17.11.2011 12:21:11 - РегистрСведенийКлючЗаписи.ВерсииОбъектов |
|||
9
BadimB
21.11.11
✎
10:43
|
Сейчас на основании "Отчета производства за смену" создал и провел "Требование накладную"
Повторно выполнил процедуру Требование накладную она не показала? |
|||
10
BadimB
21.11.11
✎
11:42
|
НайтиПоСсылкам находит только на один уровень вниз
а если дальше, в глубь, надо зацикливать? |
|||
11
BadimB
21.11.11
✎
14:52
|
Пробую цепочку связей раскрутить дальше
У "Отчета производство за смену" точно дальше есть ссылка (сам создавал) ВыбКонтрагент=Документы.ЗаказНаПроизводство.НайтиПоНомеру("00000008129",ТекущаяДата()); мМассив = Новый Массив; мМассив.Добавить(ВыбКонтрагент); МассивСсылок =НайтиПоСсылкам(мМассив); МассивСсылок.ВыбратьСтроку(); Для Каждого Ссылка Из МассивСсылок Цикл Сообщить ("" + СокрЛП(Ссылка[0]) + " - " + СокрЛП(Ссылка[1])+ " - " + СокрЛП(Ссылка[2])); Если Ссылка.Метаданные = "Отчет производства за смену" тогда ВыбКонтрагент=Документы.ОтчетПроизводстваЗаСмену.НайтиПоНомеру(Ссылка[1],ТекущаяДата()); мМассив2 = Новый Массив; мМассив2.Добавить(ВыбКонтрагент); МассивСсылок2 =НайтиПоСсылкам(мМассив2); Для Каждого Ссылка2 Из МассивСсылок2 Цикл Сообщить ("" + СокрЛП(Ссылка2[0]) + " - " + СокрЛП(Ссылка2[1])+ " - " + СокрЛП(Ссылка2[2])); КонецЦикла; конецесли; КонецЦикла; Почему то не идет через ЕСЛИ |
|||
12
hhhh
21.11.11
✎
14:59
|
разве в массивСсылок номера? Почему НайтиПоНомеру?
|
|||
13
BadimB
21.11.11
✎
15:05
|
точно, притупил
|
|||
14
BadimB
21.11.11
✎
15:10
|
вроде получилось
только вопрос среди связанных объектов фигурирует РегистрСведенийКлючЗаписи.ВерсииОбъектов Если я найду и удалю связанные: 1. Заказ на производство 2. Отчет производства за смену 3. Требование-накладная то РегистрСведенийКлючЗаписи то же удалять надо? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |