Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 02:01
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: как бы вы переписали этот код?  (Прочитано 2371 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн John_Connor

  • **
  • Сообщений: 76
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-22
  • Сайт: 
  • Профессия: Ученик 1С
                //*_*  в цикле перебирает ТЗ и по условию удаляет строки из ТЗ               

      УслугиГПМ=Справочники.СтатьиЗатрат.НайтиПоКоду("000000092") ;
      ТекущеееСодержаниеПодъездныхПутей =Справочники.СтатьиЗатрат.НайтиПоКоду("000011422") ;
      УслугиАвтотранспорта=Справочники.СтатьиЗатрат.НайтиПоКоду("000000088") ;
      ОперациНаЖД= Справочники.СтатьиЗатрат.НайтиПоКоду("000011409") ;
      ПРР=Справочники.СтатьиЗатрат.НайтиПоКоду("000011411") ;   
      ИндексЭлемента=0;
      числоСтрок=  ДанныеНаборовЗаписей.Хозрасчетный.количество();
      Пока ИндексЭлемента<числоСтрок Цикл
         Если  ДанныеНаборовЗаписей.Хозрасчетный[ИндексЭлемента].СчетКт= ПланыСчетов.Хозрасчетный.НайтиПоКоду("44.08")    ИЛИ
            ДанныеНаборовЗаписей.Хозрасчетный[ИндексЭлемента].СубконтоКт1= УслугиГПМ ИЛИ
            ДанныеНаборовЗаписей.Хозрасчетный[ИндексЭлемента].СубконтоКт1=ТекущеееСодержаниеПодъездныхПутей  ИЛИ
            ДанныеНаборовЗаписей.Хозрасчетный[ИндексЭлемента].СубконтоКт1= УслугиАвтотранспорта ИЛИ
            ДанныеНаборовЗаписей.Хозрасчетный[ИндексЭлемента].СубконтоКт1=ОперациНаЖД   ИЛИ
            ДанныеНаборовЗаписей.Хозрасчетный[ИндексЭлемента].СубконтоКт1=ПРР      // А вот это - самая фееричная строка
            Тогда
            ДанныеНаборовЗаписей.Хозрасчетный.Удалить(ИндексЭлемента);
            Если  ИндексЭлемента = 0 Тогда
               числоСтрок=числоСтрок-1;
               Продолжить
            иначе
               числоСтрок=числоСтрок-1;
               ИндексЭлемента=ИндексЭлемента-1;
            КонецЕсли;
            Продолжить;
         КонецЕсли;   
         ИндексЭлемента=ИндексЭлемента+1;
      КонецЦикла;
   


Оффлайн KrivosheevEV

  • ***
  • Сообщений: 202
  • РЕПУТАЦИЯ: 35
  • КПД: 17%
  • Регистрация: 2014-01-20
  • Сайт: 
  • Профессия: Программист 1С
[О] Красный
[1] Жёлтый
[2] Жёлтый
[3] Зелёный

Задача: Удалить строки, где "Жёлтый".
Метод: Перебор по индексу "сверху".

1.
[О] Красный
[1] Жёлтый  <- Индекс = 1, строка совпала - удаляем.
[2] Жёлтый
[3] Зелёный

2.
[О] Красный
[1] Жёлтый
[2] Зелёный <- Индекс = 2, Строка не совпала.





Оффлайн pavl_vs

  • *****
  • Сообщений: 1069
  • РЕПУТАЦИЯ: 168
  • КПД: 16%
  • Регистрация: 2011-05-09
  • Сайт: 
  • Профессия: Программист 7.7
John_Connor, проблема-то в чем?
Приведенный цикл работать не будет, или сработает неправильно, т.к. возврат по "продолжить" идет на строку "Если", как бы Вы не переопределяли параметр цикла числоСтрок в самом цикле.
Перепишите его на обход снизу.

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Интуитивно понимаю, что можно все решить в одном цикле. Я в таких ситуация просто нужные строки копирую в ТЗ, а затем результат загружаю в набор = очень упрощает логику.

Оффлайн John_Connor

  • **
  • Сообщений: 76
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-22
  • Сайт: 
  • Профессия: Ученик 1С
John_Connor, проблема-то в чем?
Приведенный цикл работать не будет, или сработает неправильно, т.к. возврат по "продолжить" идет на строку "Если", как бы Вы не переопределяли параметр цикла числоСтрок в самом цикле.
Перепишите его на обход снизу.
проблема в том что код какой то не оптимизированный, да он  работает, но хочется оптимизации
Добавлено: 02 Сен 2015, 11:42

Интуитивно понимаю, что можно все решить в одном цикле. Я в таких ситуация просто нужные строки копирую в ТЗ, а затем результат загружаю в набор = очень упрощает логику.
что за набор?

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
ДанныеНаборовЗаписей.Хозрасчетный


Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Перебирайте с конца набора, совпало - удаляем. В таком случае не нужно будет менять руками текущий индекс элемента.
Пока Счетчик = 1 по КолвоСтрок цикл
    Если ДанныеНаборовЗаписей.Хозрасчетный[КолвоСтрок - Счетчик].СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("44.08")    ИЛИ  ... тогда
        ДанныеНаборовЗаписей.Хозрасчетный.Удалить(КолвоСтрок - Счетчик);
    КонецЕсли;
КонецЦикла;
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Оффлайн Дмитрий@

  • *****
  • Сообщений: 735
  • РЕПУТАЦИЯ: 134
  • КПД: 18%
  • Ссылка на примеры работ https://yadi.sk/d/ksVluPMB
  • Регистрация: 2015-02-27
    • Skype: ShuplecovDima
  • Сайт: 
  • Профессия: Программист 1С
Можно использовать метод "НайтиСтроки(Отбор)". Получаем массив строк, который нужно удалить.
Ссылка на примеры работ https://yadi.sk/d/ksVluPMB

Оффлайн vitasw

  • *****
  • Сообщений: 2575
  • РЕПУТАЦИЯ: 311
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Можно использовать метод "НайтиСтроки(Отбор)". Получаем массив строк, который нужно удалить.

Интересно как вы через отбор укажите условие "ИЛИ"?

Оффлайн TreeDogNight

  • ***
  • Сообщений: 202
  • РЕПУТАЦИЯ: 28
  • КПД: 14%
  • Регистрация: 2013-10-16
    • Skype: treedognight3
  • Сайт: www.avars.uz
  • Профессия: Программист 1С
Перебирайте с конца набора, совпало - удаляем. В таком случае не нужно будет менять руками текущий индекс элемента.
Пока Счетчик = 1 по КолвоСтрок цикл
    Если ДанныеНаборовЗаписей.Хозрасчетный[КолвоСтрок - Счетчик].СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("44.08")    ИЛИ  ... тогда
        ДанныеНаборовЗаписей.Хозрасчетный.Удалить(КолвоСтрок - Счетчик);
    КонецЕсли;
КонецЦикла;
Не
Пока
, а
Для
=)
Cегодня не все могут провести завтрашним числом. Вернее, не только лишь все - мало кто может это сделать.


Теги:
 

Можете помочь написать обработку которая сможет делать реализацию списывая поступления из другой базы или ссылаясь на них? просто одна компания покупает другая продает этот товар и чтобы вторая компания не смогла продать больше чем есть у первой? 1с 8.2 2

Автор Юлия АндреевнаРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 748
Последний ответ 13 Ноя 2016, 19:25
от BuhRust
Как ставить этот знак " | " - ?

Автор DobriymartРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 3295
Последний ответ 29 Май 2011, 09:22
от chuevsf
Возврат товара комиссионеру, как учесть этот возврат в отчете комитенту

Автор gulijРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 1083
Последний ответ 21 Апр 2016, 13:59
от gulij
Аванс в счет будущих поставок товаров, даже если этот товар был позже возвращен, должен включаться в базу по НДС

Автор newsРаздел Новости

Ответов: 0
Просмотров: 1094
Последний ответ 22 Сен 2014, 11:53
от news
Если автомобиль в угоне, то нужно ежегодно подтверждать этот факт, чтобы не платить транспортный налог

Автор newsРаздел Новости

Ответов: 0
Просмотров: 528
Последний ответ 08 Окт 2015, 23:47
от news

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
170 Сообщений
ilyay ilyay
69 Сообщений
oleg-x
48 Сообщений
alex0402
44 Сообщений
andron81_81
38 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
29 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 156
  • Точка Скрытых: 0
  • Точка Пользователей: 3
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal