Имя: Пароль:
1C
1С v8
Удаление номенклатуры из заказов
0 mnail1979
 
19.04.12
16:20
Подскажите пожалуйста, как удалить из заказов определенную номенклатуру на определенную дату отгрузки. В групповой обработке справочников и документов я могу отобрать эти документы и удалить, а мне нужно документ оставить, удалив ненужный товар.
1 Wobland
 
19.04.12
16:20
забабашить свою групповую обработку не предлагать?
2 Avganec
 
19.04.12
16:20
Берешь руки, пишешь обработку и будет вселенское счастье.
3 mnail1979
 
19.04.12
16:25
(2) просто циклом пробежаться по всем документам где есть этот товар, затем удалить товар и заново провести? А готовой обработки нету?
4 Wobland
 
19.04.12
16:26
(3) нету. запросить все документы, а не циклом
5 Любопытная
 
19.04.12
16:27
В групповой обработке есть галочка про "обрабатывать ТЧ" и "изменять реквизиты объектов". Но они честно предупреждают, что может случиться кося
6 Stim
 
19.04.12
16:27
100$
7 Wobland
 
19.04.12
16:28
(5) а удалять строки ТЧ - есть такая галочка?
8 rs_trade
 
19.04.12
16:28
(3) обработка за 15 минут пишется.
9 mnail1979
 
19.04.12
16:43
(7)
10 mnail1979
 
19.04.12
16:44
(7) нету
11 mnail1979
 
19.04.12
16:44
(8) у начинающих пишется намного дольше
12 mnail1979
 
19.04.12
16:44
(6) хороший из вас бизнесмен получится
13 Wobland
 
19.04.12
16:45
(10) я в курсе ;)
(11) немного дольше
14 Avganec
 
19.04.12
16:50
(3) Берешь за промежуток дат список заказов, пробегаешь по табличным частям и получаешь таблицу с полями: ссылка, номер строки и уже удаляешь это. проще почти не бывает.
15 mnail1979
 
19.04.12
16:52
Вот нашел такой пример в нете:

//Получим документ и укажем параметры поиска
ОбъектДок = СсылкаДок.ПолучитьОбъект();
СтруктураДляПоиска = Новый Структура("Количество", 0);
ТабличнаяЧастьДок = ОбъектДок.Товары;
//Получаем список строк соответсвтвующих отбору, и перебором удаляем.
МассивПустыхСтрок = ТабличнаяЧастьДок.НайтиСтроки(СтруктураДляПоиска);
Для каждого Строка Из МассивПустыхСтрок Цикл
   ТабличнаяЧастьДок.Удалить(Строка);
КонецЦикла;
ОбъектДок.Записать();

Только мне нужно вначале найти заказы, у которых дата отгрузки 19.04.12.
А потом из них удалить опред товар.
16 mnail1979
 
19.04.12
16:53
как без запроса командами получить список заказов покупателя, у которых дата отгрузки 19.04.12,
17 Wobland
 
19.04.12
16:53
(15) познакомить тебя с запросами?
18 Avganec
 
19.04.12
16:54
(15) Жесть...
19 mnail1979
 
19.04.12
16:54
ладно. Сделаю сам.
20 Stim
 
19.04.12
16:55
пелять.. ну групповая же обработка справочников и документов с обработкой же табличных частей.. автор, научись пользоваться типовыми механизмами, потом ищи готовые куски кода в инете
21 mnail1979
 
19.04.12
21:24
(20) групповая обработка не сможет удалить строки из документа, и перепровести этот документ
22 wlbmJames
 
19.04.12
21:45
Тут вообще не надо было лезть в групповую обработку, а просто написать свою. Запросом выбрать нужные документы, и просматривать их ТЧ, если номенклатура совпала, то удалять строку и перепровести док. Реально 15 мни
23 experimentator76
 
19.04.12
21:51
пипец... уже конец света или я сплю ?
24 Darky
 
19.04.12
22:09
(16) Похоже тебе нужны документы примерно за один-два дня. Если не торгуете семечками на развес, то это максимум 500 документов. А если еще отсечь заказы, в которых нету удаляемой позиции - это число еще более сократиться. Если автор не хочет юзать запросы, то ему следовало бы воспользоваться обработка справочников и документов и руками удалять лишние строки.
25 mnail1979
 
21.04.12
10:58
Вы были правы. Действительно 15 минут. А я боялся. У страха глаза велики.
Вот готовая процедура, может кому то понадобится.


Процедура КнопкаВыполнитьНажатие(Кнопка)
   Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |    ЗаказПокупателя.Ссылка
   |ИЗ
   |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
   |ГДЕ
   |    ЗаказПокупателя.Товары.Номенклатура = &Номенклатура
   |    И ЗаказПокупателя.ДатаОтгрузки = &ДатаОтгрузки";
   Запрос.УстановитьПараметр("Номенклатура",Товар);
   Запрос.УстановитьПараметр("ДатаОтгрузки", ДатаОтгруза);
   НужныеЗаказы=Запрос.Выполнить().Выбрать();
   Пока НужныеЗаказы.Следующий()Цикл
       Заказ = НужныеЗаказы.Ссылка.ПолучитьОбъект();
       СтруктураДляПоиска = Новый Структура("Номенклатура", Товар);
       ТабличнаяЧастьДок = Заказ.Товары;
       //Получаем список строк соответсвтвующих отбору, и перебором удаляем.

       МассивУдаляемыхСтрок = ТабличнаяЧастьДок.НайтиСтроки(СтруктураДляПоиска);
       Для каждого Строка Из МассивУдаляемыхСтрок Цикл
           ТабличнаяЧастьДок.Удалить(Строка);
       КонецЦикла;
       Если Заказ.Проведен=Истина тогда
           Попытка
               Заказ.Записать(РежимЗаписиДокумента.Проведение);
               Сообщить("Перепроведен  документ" + Заказ.Ссылка);
           Исключение
               Сообщить(ОписаниеОшибки());
               Отказ=Истина;
           КонецПопытки;
       Иначе
           Попытка
               Заказ.Записать();
               Сообщить("записан  документ" + Заказ.Ссылка);
           Исключение
               Сообщить(ОписаниеОшибки());
           КонецПопытки;  

       КонецЕсли;
       
   КонецЦикла;
   
КонецПроцедуры
26 Wobland
 
22.04.12
06:58
Режим=?(Заказ.Проведён, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись);
Заказ.Записать(Режим);

намного проще
27 Мимохожий Однако
 
22.04.12
07:32
(25)Проверь ситуацию, когда в заказ внесли несколько строк с номенклатурой (так бывает)
28 Мимохожий Однако
 
22.04.12
07:33
+(27)...конкретная номенклатура дважды и более присутствует в табличной части.
29 Wobland
 
22.04.12
07:33
(27) НайтиСтроки() его спасёт
30 zak555
 
22.04.12
10:30
хочешь удалить, потому что товар у тебя в резерве ?
31 wade25
 
22.04.12
10:45
Для чего это вам?) Потом окажется, что косяк...
32 Flyd-s
 
22.04.12
12:13
Групповой обработкой отобрать документы в которых есть эти позиции и ручками удалить. Если там, конечно не тысячи заказов с этой номенклатурой ежедневно
33 Мимохожий Однако
 
22.04.12
13:06
ОФФ: Как удалить автор нашёл. В понедельник будет ветка "Как вставить номенклатуру в Заказы?"
34 mnail1979
 
22.04.12
21:18
заказы собраны. На основе заказов формируются машины и накладные автоматически. А оказалось, что этго товара на складе нет и не нужно было собирать заказ на этот товар. Вот почему это нужно было. Руководсто сказало
35 Мимохожий Однако
 
22.04.12
21:25
В типовой конфигурации есть документ "Отмена заказов". Как раз для этого случая.
36 mnail1979
 
22.04.12
22:09
(35) проверю. Но думаю не поможет.  А что она делает, удаляет зааказ, или товар из всех заказов?
37 Злопчинский
 
22.04.12
22:21
(36) ты дятел.
в (35) правильно написал.
.
заказы НЕ УДАЛЯЮТСЯ - они либо отменяются, либо корректируются.
в 7.7 для этого были доки "отмена заявок", "корректировка заявки".
.
на снеговике - по идее д.б. примерно также. Спецы пусть поправят.
.
судя по всему - у тебя весьма поверхностное (не)знание работы заявок/резервов - а все туда же.. попрограммить побыстрее...
.
38 zak555
 
22.04.12
22:34
> попрограммить побыстрее...

ну так франч начал обучения с конфигуратора
Независимо от того, куда вы едете — это в гору и против ветра!