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

Автор Тема: Управляемая форма, перебор значений Таблицы и Запись по результату в строку  (Прочитано 9696 раз)

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

Оффлайн JonAir

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-05-27
  • Сайт: 
Суть в следующем есть документ, в нем есть таблица, строки которой содержат значения, нужно перебрать строки табличной части и если хотя бы 1 значение строк не соответствует заданному значению  то записать статус, например "в работе". Реквезит создан программно я могу его записать и отобразит как удобно в условном оформлении списка документов. Помощъ нужно в цикле и условиях.

 Для Каждого Строка Из Объект.Услуги Цикл
   Если Строка.Свойство(Объект,Стат) = "Выполнен" тогда
   Объект.Статус = "Вработе";
   Иначе
   Объект.Статус = "Выполнен";   
КонецЕсли;
КонецЦикла;

Подозреваю что проблема в указании свойства строки, как корректно отработать ее


Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Объект.Статус = "Выполнен";
Для Каждого Строка Из Объект.Услуги Цикл
   Если Строка.Стат = "Выполнен" тогда
       Объект.Статус = "Вработе";
       Прервать;
    КонецЕсли;
КонецЦикла;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн JonAir

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-05-27
  • Сайт: 
Строки перебирает согласен, но при этом он не присваивает Заданный реквизит - реквизиту документа
Доберусь до компа буду разбираться но спасибо за подсказку.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
ну либо условие не срабатывает... значит я чего то не знаю о ВАШЕЙ базе...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн JonAir

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-05-27
  • Сайт: 
ну либо условие не срабатывает... значит я чего то не знаю о ВАШЕЙ базе...
Вполне может быть), но все равно спасибо)

Оффлайн JonAir

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-05-27
  • Сайт: 
В общем я выяснил причину того что условие не отрабатывало в условии стоит проверка строки а у меня реквизит в виде Перечисления, и нужно поиск делать по значению перечисления не подскажите как лучше это сделать?, а то поля со списком вроде нет как в 7.7

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Если Строка.Стат = ПредопределенноеЗначение("Перечисление.<<ИмяПеречисления>>.Выполнен") тогда

В смысле нет поля со списком?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн JonAir

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-05-27
  • Сайт: 
Ну я про то что в 8ке нет явного вида строки со списком.

По поводу цикла
Для Каждого Строка Из Объект.Услуги Цикл
   Если Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Вработе") тогда
      Объект.Статус = "В работе";
    Прервать; 
  ИначеЕсли Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Отказ") тогда   
     Объект.Статус = "Отказ";
  Прервать;
ИначеЕсли Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Выполнен") тогда
      Объект.Статус = "Выполнен";
Прервать;    
  КонецЕсли;
КонецЦикла;

Сделал такое, но есть ошибка он отбирает значение только по первой строке не перебирая всю таблицу полагаю это из-за Прервать; что он находит условие которое удовлетворяет и цикл закрывается, но надо чтоб он перебрал значения всей таблицы и в случае если находит хоть 1 значение строки таблицы не "Выполнен" то ставит статус в работе.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Если Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Вработе")
ИЛИ Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Отказ") тогда
  Если Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Вработе") тогда
      Объект.Статус = "В работе";
  ИначеЕсли Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Отказ") тогда   
     Объект.Статус = "Отказ";
  КонецЕсли;
  Прервать;
КонецЕсли;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн JonAir

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-05-27
  • Сайт: 
Если Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Вработе")
ИЛИ Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Отказ") тогда
  Если Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Вработе") тогда
      Объект.Статус = "В работе";
  ИначеЕсли Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Отказ") тогда   
     Объект.Статус = "Отказ";
  КонецЕсли;
  Прервать;
КонецЕсли;

Да, спасибо, дошло тоже ,что "или" надо добавить)
Добавлено: 04 Июн 2014, 12:53

В общем в итоге привожу то что отрабатывает и прокомментирую мало ли кому пригодится:
Объект.Статус = "Выполнен"; (изначально задаем общий статус значения по документу)
Для Каждого Строка Из Объект.Услуги Цикл (перебор строк и поиск по определенному значению)
Если Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Вработе")
ИЛИ Строка.Стат  = ПредопределенноеЗначение("Перечисление.СтатусРабот.Отказ") тогда
      Объект.Статус = "В работе";
Прервать; (если найдено хоть 1 значение "вработе или отказ" то меняем общий статус документа на "В работе")
КонецЕсли;      
КонецЦикла;

П.с данный цикл добавлен в процедуру перед записью. Спасибо за подсказки а то заклинило)
Добавлено: 04 Июн 2014, 15:48

Пытаюсь по аналогии сделать перебор значений еще 1 реквизита, но он берет только или последую или 1 строку из табличной части, Задача чтоб он подставлял значение реквизита строки если она меньше текущей даты и запись этого значения в шапку документа. Ткните пож в что не так в условиях.

Объект.Просрочка = Объект.Дата;
Для Каждого Строка Из Объект.Услуги Цикл
   Пока Строка.СрокВыполнения <=  ТекущаяДата() ИЛИ Строка.СрокВыполнения = "" Цикл
      Объект.Просрочка = Строка.СрокВыполнения;   
   Прервать;   
   КонецЦикла;//Прервать; //
//Иначе
//КонецЕсли;
КонецЦикла;

Последний раз редактировалось: JonAir; 04 Июн 2014, 15:48. Причина: Объединение сообщений


Теги:
 


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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
145 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
53 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
alexandr_ll
24 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal