8.х перебор документов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Pasha, 21 июл 2008.

  1. TopicStarter Overlay
    Pasha
    Offline

    Pasha Опытный в 1С

    Регистрация:
    25 авг 2007
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    Хелп, однако!
    Имеется:
    довольно обширная база с кучей документов.
    Требуется:
    снести все документы.
    То есть мне видится программое установления флажка "пометить на удаление" всем документам.
    Как программно перебрать все документы?
    Или дайте рецепт....

    ---
    меня наглухо заклинило и я не могу никак сообразить.
    Назревает грандиозный чендж с конкурентами: пустая конфигурация на кое-какое оборудование.
    ---
    тема поднималась, но я ничего не понял.
  2. Kaboom
    Offline

    Kaboom Опытный в 1С

    Регистрация:
    2 июл 2007
    Сообщения:
    158
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура УдалитьВсеДокументы()
    Если Вопрос("Установить пометку удаления для всех документов?", РежимДиалогаВопрос.ДаНетОтмена) = КодВозвратаДиалога.Да Тогда
    Для Каждого ДокМенеджер Из Документы Цикл
    Выборка = ДокМенеджер.Выбрать();
    Пока Выборка.Следующий() Цикл
    Док = Выборка.ПолучитьОбъект();
    Док.УстановитьПометкуУдаления(Истина);
    КонецЦикла;
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры
    
  3. TopicStarter Overlay
    Pasha
    Offline

    Pasha Опытный в 1С

    Регистрация:
    25 авг 2007
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    Работает!
    огромное человеческое спасибо!
  4. Komich
    Offline

    Komich

    Регистрация:
    10 июл 2008
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Дык пустую конфигурацию проще сделать через .cf
  5. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Я бы просто воспользовался типовой групповой обработкой справочников и документов. Но можно и перебор написать (как было предложено) - он даже побыстрее будет.

    Интересно что вы имели в виду под:
    "меня наглухо заклинило и я не могу никак сообразить.
    Назревает грандиозный чендж с конкурентами: пустая конфигурация на кое-какое оборудование."
  6. Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Отличная процедурка...всегда пригодится..при удалении старый документов (за прошлый год к примеру)
  7. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Ромик Я надеюсь, ты отдаешь себе отчет, что без переноса остатков удаление "старых документов" приведет к разрушению учета. :)
  8. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Для удаления старых документов лучше используйте 1С-вскую типовую свертку базы =) Гораздо лучше.
  9. Вселенная
    Offline

    Вселенная Опытный в 1С

    Регистрация:
    4 ноя 2009
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Нужно заполнить колонку табличного поля значениями ПД или КД в зависимости от значения реквизита документа. Делаю это в процедуре ПриВыводеСтроки. Не работает, то есть он заполняет, но не все ячейки и не правильно.

    Код:
    Выборка = Документы.АБ_СМК_КорректирующееДействие.Выбрать();
    Пока  Выборка.Следующий() Цикл
    Если Выборка.ПредупреждающееКД = Истина Тогда
    ОформлениеСтроки.Ячейки.Вид.Значение = "ПД"
    Иначе  ОформлениеСтроки.Ячейки.Вид.Значение = "КД";
    КонецЕсли;
    КонецЦикла;    
    
    
  10. Вселенная
    Offline

    Вселенная Опытный в 1С

    Регистрация:
    4 ноя 2009
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Разобралась. Сделала по-другому, новый реквизит добавила документу, тем более что по нему еще отбор нужен.
    Код:
    Выборка = Документы.АБ_СМК_КорректирующееДействие.Выбрать();
    Пока  Выборка.Следующий() Цикл
    ДокОбъект = Выборка.ПолучитьОбъект();
    Если Выборка.ПредупреждающееКД = Истина Тогда
    ДокОбъект.Вид = "ПД";	  
    Иначе ДокОбъект.Вид = "КД";  
    КонецЕсли;  
    ДокОбъект.Записать();
    КонецЦикла;	 
    

Поделиться этой страницей