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

Автор Тема: Лбход элементов табличной части документа(проблема)  (Прочитано 3904 раз)

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

Оффлайн metalstorm_tlt

  • *
  • Сообщений: 18
  • РЕПУТАЦИЯ: 2
  • КПД: 11%
  • Регистрация: 2010-09-10
  • Сайт: 
Процедура ОбновлениеСпискаДопУслуг()
    //удаление недействующих элементов
   Спр=Справочники.ВидыДопУслуг.Выбрать();
   Для Каждого СтрокаДопУслуги Из ДопУслуги Цикл
      ЭлементНайден=Ложь;
      Пока Спр.Следующий() Цикл
         Если Спр.Наименование=СтрокаДопУслуги.Услуга И
         Спр.ОсновнаяУслуга=ЭлементыФормы.Услуга.Значение Тогда
            ЭлементНайден=Истина;
            Прервать;
         КонецЕсли;
      КонецЦикла; //обошли справочник
      Если ЭлементНайден=Ложь Тогда
         ДопУслуги.Удалить(СтрокаДопУслуги);
      КонецЕсли;
   КонецЦикла;
   //добавление новых
   Спр=Справочники.ВидыДопУслуг.Выбрать();
   Пока Спр.Следующий() Цикл
      Если Спр.ОсновнаяУслуга=ЭлементыФормы.Услуга.Значение И
      ДопУслуги.Найти(Спр.Наименование,"Услуга")=Неопределено Тогда
         НоваяСтрока=ДопУслуги.Добавить();
         НоваяСтрока.Услуга=Спр.Наименование;
      КонецЕсли;
   КонецЦикла;
КонецПроцедуры

Почему то цикл: Для Каждого СтрокаДопУслуги.... делает меньшее число итераций чем должен...то есть в табличной части документа остаются неудаленные строки. Помогите пожалуйста как исправить эту проблему. Буду очень благодарен


Оффлайн metalstorm_tlt

  • *
  • Сообщений: 18
  • РЕПУТАЦИЯ: 2
  • КПД: 11%
  • Регистрация: 2010-09-10
  • Сайт: 
Неужели никто не поможет?(

Оффлайн Vit1501

  • ****
  • Сообщений: 360
  • РЕПУТАЦИЯ: 60
  • КПД: 17%
  • Регистрация: 2010-06-05
  • Сайт: 
  • Профессия: Программист 1С
я тоже столкнулся с этой проблемой

Оффлайн Vit1501

  • ****
  • Сообщений: 360
  • РЕПУТАЦИЯ: 60
  • КПД: 17%
  • Регистрация: 2010-06-05
  • Сайт: 
  • Профессия: Программист 1С
попробуй перестроить код по другому. Я так полагаю что перебор идет по индексам и при удалении индексы сдвигаются, поэтому и не все обработываются строки

Оффлайн metalstorm_tlt

  • *
  • Сообщений: 18
  • РЕПУТАЦИЯ: 2
  • КПД: 11%
  • Регистрация: 2010-09-10
  • Сайт: 
Попробую сначала выгрузить в таблицу значений, а потом пройтись по ней циклом...посмотрим что получится...

Оффлайн metalstorm_tlt

  • *
  • Сообщений: 18
  • РЕПУТАЦИЯ: 2
  • КПД: 11%
  • Регистрация: 2010-09-10
  • Сайт: 
Ещё хотел уточнить, при обходе элементов справочника следующим способом:
Спр=Справочники.ВидыДопУслуг.Выбрать();
   Пока Спр.Следующий() Цикл

Нет необходимости вызывать метод Спр.ПолучитьОбъект(), чтобы обратиться к реквизитам элемента?

Оффлайн metalstorm_tlt

  • *
  • Сообщений: 18
  • РЕПУТАЦИЯ: 2
  • КПД: 11%
  • Регистрация: 2010-09-10
  • Сайт: 
Попробовал так:

Процедура ОбновлениеСпискаДопУслуг()
    //удаление недействующих элементов
   Спр=Справочники.ВидыДопУслуг.Выбрать();
   ТаблЗнач=ДопУслуги.Выгрузить();
   Для Каждого ИндексыТБ Из ТаблЗнач.Индексы Цикл
      ЭлементНайден=Ложь;
      Пока Спр.Следующий() Цикл
         Если Спр.Наименование=ТаблЗнач.Получить(ИндексыТБ).Услуга И
         Спр.ОсновнаяУслуга=ЭлементыФормы.Услуга.Значение Тогда
            ЭлементНайден=Истина;
            //прервать
         КонецЕсли;
      КонецЦикла; //обошли справочник
      Если ЭлементНайден=Ложь Тогда
         ТаблЗнач.Удалить(ИндексыТБ);
      КонецЕсли;
   КонецЦикла;
   //добавление новых
   Спр=Справочники.ВидыДопУслуг.Выбрать();
   Пока Спр.Следующий() Цикл
      Если Спр.ОсновнаяУслуга=ЭлементыФормы.Услуга.Значение И
      ТаблЗнач.Найти(Спр.Наименование,"Услуга")=Неопределено Тогда
         НоваяСтрока=ТаблЗнач.Добавить();
         НоваяСтрока.Услуга=Спр.Наименование;
      КонецЕсли;
   КонецЦикла;
   ДопУслуги.Очистить();
   Сообщить(ТаблЗнач.Количество());
   ДопУслуги.Загрузить(ТаблЗнач);
КонецПроцедуры

Почему то цикл Для Каждого ИндексыТБ Из ТаблЗнач.Индексы.... не делает ни одной итерации...Попробую обойти не индексы а строки из ТаблицыЗначений..

Оффлайн metalstorm_tlt

  • *
  • Сообщений: 18
  • РЕПУТАЦИЯ: 2
  • КПД: 11%
  • Регистрация: 2010-09-10
  • Сайт: 
Хм...за два прохода удаляет все элементы (когда их 3, сначала 2 потом 1), причем заметил что при первом вызове процедуры цикл

Для Каждого СтрокаТаблЗнач Из ТаблЗнач

Считывает только две строки, а при попытке считать третью все колонки из СтрокаТаблЗнач принимают значение: "Ошибка чтения значения". А при втором вызове этой процедуры удаляет оставшийся элемент без проблем...мистика какая то...

Вот сама процедура:

Процедура ОбновлениеСпискаДопУслуг()
    //удаление недействующих элементов
   Спр=Справочники.ВидыДопУслуг.Выбрать();
   ТаблЗнач=ДопУслуги.Выгрузить();
   Для Каждого СтрокаТаблЗнач Из ТаблЗнач Цикл
      ЭлементНайден=Ложь;
      Пока Спр.Следующий() Цикл
         Если Спр.Наименование=СтрокаТаблЗнач.Услуга И
         Спр.ОсновнаяУслуга=ЭлементыФормы.Услуга.Значение Тогда
            ЭлементНайден=Истина;
            //прервать
         КонецЕсли;
      КонецЦикла; //обошли справочник
      Если ЭлементНайден=Ложь Тогда
         ТаблЗнач.Удалить(СтрокаТаблЗнач);
      КонецЕсли;
   КонецЦикла;
   //добавление новых
   Спр=Справочники.ВидыДопУслуг.Выбрать();
   Пока Спр.Следующий() Цикл
      Если Спр.ОсновнаяУслуга=ЭлементыФормы.Услуга.Значение И
      ТаблЗнач.Найти(Спр.Наименование,"Услуга")=Неопределено Тогда
         НоваяСтрока=ТаблЗнач.Добавить();
         НоваяСтрока.Услуга=Спр.Наименование;
      КонецЕсли;
   КонецЦикла;
   ДопУслуги.Очистить();
   Сообщить(ТаблЗнач.Количество());
   ДопУслуги.Загрузить(ТаблЗнач);
КонецПроцедуры

Оффлайн metalstorm_tlt

  • *
  • Сообщений: 18
  • РЕПУТАЦИЯ: 2
  • КПД: 11%
  • Регистрация: 2010-09-10
  • Сайт: 
Если кто знает как исправить помогите пожалуйста...а то мне сегодня надо исправить все ошибки =(

Оффлайн metalstorm_tlt

  • *
  • Сообщений: 18
  • РЕПУТАЦИЯ: 2
  • КПД: 11%
  • Регистрация: 2010-09-10
  • Сайт: 


Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

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

Ответов: 1
Просмотров: 4480
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Добавление сведений в графу "основание" документа "ТОРГ-12"

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

Ответов: 4
Просмотров: 7749
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984
"Не совпадают сумма документа и общая сумма по платежным ведомостям"

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

Ответов: 1
Просмотров: 4786
Последний ответ 11 Янв 2015, 02:55
от MuI_I_Ika
При создании нового документа "Заявка на кассовый расход" Ошибка "Значение 9 поля "номер" не уникально

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

Ответов: 14
Просмотров: 8529
Последний ответ 22 Ноя 2014, 04:50
от cska-fanat-kz
Фамилия руководителя в печатных формах документа "Акт сверки", "Акт об оказании"

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

Ответов: 1
Просмотров: 7344
Последний ответ 03 Фев 2012, 17:27
от Dinah

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

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

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


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

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
154 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
47 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
BuhRust
33 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal