Имя: Пароль:
1C
1С v8
Удаление товаров (помеченных на удаление) из документов, обработка
0 LastSoldier
 
16.01.15
12:24
Всем привет! 1С:Предприятие 8.3 (8.3.5.1383) и УТ 11.1 (11.1.9.66).
Задача такая, есть в базе очень много номенклатуры (50к примерно), я вручную просмотрел движения всей номенклатуры и пометил на удаление ту номенклатуру по которой в базе не было никаких движений и остатков (понимаю что бред было это все смотреть, но всего 1 день ушел на это))), т.е. помеченная на удаление номенклатура фигурирует только в документах "Установка цен", но она не удаляется из-за этой установки цен, да же если отменить проведение этого документа.
Я хочу сделать небольшую проверку в "Процедура ПриОткрытии" для документа "установка цен" (Всего будет проверяться при открытии 5 документов установки цен), проверка пробегает по документу "Установка цен" и смотрит, помечен этот товар на удаление или нет, если да, то удалить эту строчку товара, если нет, двигаться дальше. Я вот не пойму как сделать саму проверку товара из "Установка цен" со всей номенклатурой базы
1 GreatOne
 
16.01.15
12:27
В теме слово "обработка", а сам меняешь документ
2 GreatOne
 
16.01.15
12:27
СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>)
ПометкаУдаления (DeletionMark)
Использование:

Только чтение.
Описание:

Тип: Булево.
Содержит признак пометки на удаление элемента справочника.
Истина - пометка удаления установлена.

Доступность:

Сервер, толстый клиент, внешнее соединение.
3 LastSoldier
 
16.01.15
12:28
(1) ну создать небольшую обработку для документа, которая в последствии что-то там меняет. или неправильно?
4 salvator
 
16.01.15
12:29
" я вручную просмотрел движения всей номенклатуры и пометил на удаление ту номенклатуру по которой в базе не было никаких движений и остатков (понимаю что бред было это все смотреть, но всего 1 день ушел на это)))"

Ну дык, еще пару дней и без обработки можно обойтись.
5 deniseek
 
16.01.15
12:31
(3) Пока эта номенклатура будет в документах, непомеченных на удаление- не удалишь. Определяйся- помечаешь на удаление Установку цен и удаляешь вместе с номенклатурой. Или смиряешься.
6 LastSoldier
 
16.01.15
12:31
(4) блин, ну хватит прикалываться, я только учусь )
7 Spyke
 
16.01.15
12:31
(4) + 100500
8 Spyke
 
16.01.15
12:32
(0) Зачем при открытии документа???
Ты их будешь все в ручную открывать????
9 LastSoldier
 
16.01.15
12:32
(5) в документа "Установка цен" 60% товара удалять нельзя.
Если бы было все так просто
10 LastSoldier
 
16.01.15
12:33
(8) да, а их всего 5 штук, это же не 100
11 salvator
 
16.01.15
12:34
(6) Напиши запрос, будь мужиком!
12 deniseek
 
16.01.15
12:34
(10) Значит смирись, или удаляй из установок цен эту номенклатуру обработкой.
13 LastSoldier
 
16.01.15
12:36
(12) так вот и хочу сделать обработку
14 Admin_Net_1C
 
16.01.15
12:36
15 GreatOne
 
16.01.15
12:36
(13)Обойти в цикле всю номенклатуру документа и удалить из ТЧ элементы, помеченные на удаление.
16 deniseek
 
16.01.15
12:37
17 LastSoldier
 
16.01.15
12:37
(11) Я пока не профи в этих делах, умею только добавлять на формы документов новые поля и заполнять по ним данные и то же самое делать по почетным формам
18 LastSoldier
 
16.01.15
12:38
(16) прикольно )))
19 H A D G E H O G s
 
16.01.15
12:38
(0) Ооо, вот и еще один.

Была точно такая же тема, надо искать.
20 GreatOne
 
16.01.15
12:38
(14) а я как сижу и думаю, там же вроде с конца надо тч обходить.. Спасибо, напомнил
21 salvator
 
16.01.15
12:39
(17) Почетные формы? Это кто?
22 deniseek
 
16.01.15
12:39
(17) По почетным? Это почетно! )
23 salvator
 
16.01.15
12:41
(22) Реквизитам везде у нас дорога, формам везде у нас почет!
24 LastSoldier
 
16.01.15
12:42
(21) (22) печатным
25 LastSoldier
 
16.01.15
12:43
(20) это да, каждый товар из "Установки цен", проверять заново по базе номенклатуры
26 1976vas
 
16.01.15
12:43
(24)Отмени проведение документов, а потом обработкой удали номенклатуру
27 LastSoldier
 
16.01.15
12:44
(26) так я это и хочу сделать, пробую написать обработку эту самую
28 LastSoldier
 
16.01.15
12:46
(14) а эта твоя обработка работает так как мне и надо?
29 salvator
 
16.01.15
12:49
(28) До чего ленивый народ пошел. Посмотри код и разберись в готовом. Не уверен - напиши сам. Примеров как удалять строки по условию из табличной части в сети полным-полно.
30 Admin_Net_1C
 
16.01.15
12:50
(28) мне за тебя сделать копию базы и на ней проверить, или тупо открыть обработку и посмотреть код...
31 Admin_Net_1C
 
16.01.15
12:50
(29)+1)))
32 LastSoldier
 
16.01.15
12:51
(29) (30) да че вы так накинулись сразу, вот щас смотрю и разбираюсь в коде, запустил ее, она мне выдала справа сообщение и там большой список товаров
33 salvator
 
16.01.15
12:54
Как-то так
...выборка документов "установка цен"...
...получение объекта...
ТЧ = ДокОбъект.ИмяТабЧасти;
Индекс = ТЧ.Количество()-1;
Для Сч=0 По Индекс Цикл
  Если ТЧ[Сч].Номенклатура.ПометкаУдаления Тогда
    ТЧ.Удалить(Сч);
    Индекс = Индекс-1;
    Сч=Сч-1;
  КонецЕсли;
КонецЦикла;
..записать...
34 LastSoldier
 
16.01.15
13:00
(31) по коду просмотрел, оказывается все просто делается.
Я пока не могу еще научиться делать внешние обработки, на примере скинутой твоей и не могу понять кагда надо использовать это "Процедура ВыполнитьИзменениеНаСервере()".
То что надо все работает, я так понял что она еще перепроводит документ после обработки
35 LastSoldier
 
16.01.15
13:01
не могу понять именно разницы что должно делаться на клиенте, а что на сервере
36 LastSoldier
 
16.01.15
13:05
(31) Подскажи, я вот смотру в конфигураторе твою обработку, как берутся в твое поле именно документы "Установка цен", не могу понять?
"ПутьКДанным ОбъектДокСсылка" это я так понимаю показывает список всех документов "Установки цен"
37 GreatOne
 
16.01.15
13:06
(34) а она кстати не совсем правильно работает
38 LastSoldier
 
16.01.15
13:06
(37) а что с ней не так?
39 GreatOne
 
16.01.15
13:09
(38) счетчик не уменьшается при удалении строки ТЧ, вылезет ошибка в конце документа
40 John83
 
16.01.15
13:11
(33) ты сам пробовал так удалять?
если уж на то пошло, то обход с конца делать надо, а еще лучше, сначала ищутся нужные строки, а затем удаляются
41 LastSoldier
 
16.01.15
13:11
(39) ты хочешь сказать что в конце надо было сделать так
            тзТовары.Удалить(Сч);
                        Сч = Сч - 1;
        Иначе
            Сч = Сч - 1;
42 deniseek
 
16.01.15
13:13
+(33) проверять еще, что это строка не последняя (Не первая в смысле), иначе ошибка будет...
43 LastSoldier
 
16.01.15
13:13
(40) это типо пройтись по всему документу и только поменить те элементы которые надо удалить, а когда все помечены, разом их удалить?
44 deniseek
 
16.01.15
13:15
(43) Да нет же, идти пот последней строки по первую и удалять. Удаляя количество строк в табличной части становится на 1 меньше, иначе удалишь не ту строку, если идти от начала до конца.
45 LastSoldier
 
16.01.15
13:16
Скажите для чего это сделано вначале?
"Сч = тзТовары.Количество()-1;"

Это означает что в таблице документа к примеру 300 наименований, а в программе хранится как 301?
Я правильно понял
46 GreatOne
 
16.01.15
13:17
(40) да не, выгрузить в ТЗ, запросом убрать лишнее, получить новую ТЗ, и ТЧ.Загрузить(ТЗ_Запроса);
47 John83
 
16.01.15
13:17
(43) идешь по ТЧ, в массив пихаешь нужные строки, затем обходишь этот массив и удаляешь строки

Табличная часть.Удалить (Tabular section.Delete)
Табличная часть (Tabular section)
Удалить (Delete)
Синтаксис:

Удалить(<Индекс>)
Параметры:

<Индекс> (обязательный)

Тип: Число; Строка табличной части.
Индекс удаляемой строки в табличной части, либо сама удаляемая строка.
Описание:

Удаляет строку с указанным индексом из табличной части.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
Пример:

Состав.Удалить(3);
48 LastSoldier
 
16.01.15
13:17
(44) ясно, просто цикл тот же, только с конца
49 John83
 
16.01.15
13:17
(46) это лучший вариант, но боюсь, что ТС не осилит :)
50 deniseek
 
16.01.15
13:17
(45) Нет. Индекс строк от 0 до КоличествоСтрок()-1
51 LastSoldier
 
16.01.15
13:19
(50) ааа, типо первый элемен, он же нулевой
52 LastSoldier
 
16.01.15
13:23
а разве он делает тут проверку не с конца???
Пока Сч >= 0 Цикл.

я попробовал эту обработку, ну вроде все отработало правильно, товар удалило и документа "Установки цен" и теперь он нормально удаляется из базы