|   |   | 
| 
 | Удаление товаров (помеченных на удаление) из документов, обработка | ☑ | ||
|---|---|---|---|---|
| 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.<Имя справочника>)
 | |||
| 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 | 
        (0) http://dropmefiles.com/JsGfQ
 держи | |||
| 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 Цикл. я попробовал эту обработку, ну вроде все отработало правильно, товар удалило и документа "Установки цен" и теперь он нормально удаляется из базы | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |