8.х Удаление строк из ТЧ

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

  1. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    в Документе, есть ТЧ с наименованием "Товары к списанию" и еще есть ТЧ "Услуги", когда выбираешь услугу (а к услугам привязан товары к списание) и выводиться в ТЧ "ТоварыКСписанию". в ТЧ "ТоварыКСписанию" есть колонка "Остатки", мы удаляем если остаток "0". Можете подсказать у примеру как сделать у Которого остатки > 1, то его нельзя удалить, а если остатки = 0 то его можно удалить...
    ЗАранее спасибо
  2. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    При обходе ТЧ снизу вверх в цикле проверять, если остаток = 0, то удалить
  3. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    НЕзнаю правильно или нет я написал, вот код
    Код:
    Процедура ТоварыКСписаниюПередУдалением(Элемент, Отказ, ОформленияСтрок)
    Запрос = Новый Запрос("ВЫБРАТЬ
    | ПартииТоваровКомпанииОстатки.Номенклатура,
    | ПартииТоваровКомпанииОстатки.КоличествоОстаток
    |ИЗ
    | Документ.ПриемСтоматолога КАК ПриемСтоматолога
    |  ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровКомпании.Остатки КАК ПартииТоваровКомпанииОстатки
    |  ПО ПриемСтоматолога.ТоварыКСписанию.Номенклатура = ПартииТоваровКомпанииОстатки.Номенклатура
    |   И ПриемСтоматолога.ТоварыКСписанию.Склад = ПартииТоваровКомпанииОстатки.СкладКомпании
    |ГДЕ
    | ПриемСтоматолога.Ссылка = &Ссылка");
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    РЗ = Запрос.Выполнить().Выбрать();
    Пока РЗ.Следующий() Цикл
    Если РЗ.КоличествоОстаток > 1 тогда
    ИначеЕсли РЗ.КоличествоОстаток = 0 тогда
    
    дкТоварыПередУдалением(ЭтаФорма,Элемент, Отказ);
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    
  4. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    отказ используйте
    Код:
    Если РЗ.КоличествоОстаток > 1 тогда
    отказ=истина;
    ИначеЕсли РЗ.КоличествоОстаток = 0 тогда
  5. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    Код:
    Пока РЗ.Следующий() Цикл
    Если РЗ.КоличествоОстаток = 0 тогда
    дкТоварыПередУдалением(ЭтаФорма,Элемент, Отказ);
    Иначе
    Отказ = Истина;
    КонецЕсли;
    КонецЦикла;
    
    так написал, на
    Код:
    РЗ.КоличествоОстаток = 0
    запрет тоже на удаление стоит(
  6. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    вам в процедуре ПередУдалением не надо на все строки навешивать условие, надо проверять конкретно эту вашу строку. Или я не так поняла вашу задачу?

    Код:
    Процедура ТоварыКСписаниюПередУдалением(Элемент, Отказ, ОформленияСтрок)
    тд = элементыформы.ТоварыКСписанию.текущиеданные;
    Если тд.Остатки = 0 тогда
    //удаляем строку, у вас своя какая процедура вроде
    иначе
    отказ=истина;
    конецесли;
    КонецПроцедуры
    
    может как-то так?
  7. st88
    Offline

    st88 Профессионал в 1С Команда форума

    Регистрация:
    18 окт 2012
    Сообщения:
    1.726
    Симпатии:
    28
    Баллы:
    54
    После получения ТЧ ТоварыкСписанию, просто пройдитесь по ней циклом!

    МассивКУдалению = Новый Массив;
    Для каждого Строка из ТоварыКСписанию Цикл
    Если Услови = Условие Тогда ///тута пишите ваше условие остатки в колонке нулевые или что там вам надо?
    МассивКУдалению.Добавить(Строка);
    КонецЕсли;
    КонецЦикла;
    Для Каждого Стр Из МассивКУдалению цикл
    ТоварыКСписанию .Удалить(стр);
    КонецЦикла;
    Persempre нравится это.
  8. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    смысл 2 раза перебор делать, новые структуры описывать, когда сразу можно при определенном условии удалить строку и все
  9. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Можно выгрузить тч в таблицу значений, скопировать ее в другую тз с условием отбора и загрузить итог в тч, и никаких циклов :)
    смотри метод таблицы значений "Скопировать" в синтаксис помощнике
  10. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    При выгрузке в ТЗ, еще можно использовать методы "НайтиСтроки" и "УдалитьСтроки", после загрузить ТЗ обратно в ТЧ.

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