Как выбрать конкретное значение из ТЗ циклом

1. user1859069 03.03.23 06:07 Сейчас в теме
Доброго времени суток.

Подскажите кто знает - как с помощью цикла выбрать конкретное значение из таблицы значений?

в данном варианте я получаю строку полностью:
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
24. anton13m 4 03.03.23 09:38 Сейчас в теме
(23)
У вас же цикл по всей таблице идет, без отбора
Отбор = Новый Структура("ПараметрВыработки", Справочники.уатПараметрыВыработки.ВремяВРаботе);
НайденныеСтроки = тблДвижений.НайтиСтроки(Отбор); 
Для Каждого стрВремяВРаботе из НайденныеСтроки Цикл
    РазбивкаПутЛистаПоДням(тблДвижений, стрВремяВРаботе);
КонецЦикла;
user1859069; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 03.03.23 06:47 Сейчас в теме
(1)
Строка.НужноеИмяКолонки
или
Строка["НужноеИмяКолонки"]
3. user1859069 03.03.23 07:38 Сейчас в теме
4. spacecraft 03.03.23 07:55 Сейчас в теме
(3) что именно? Получить значение из строки ТЗ, или неизвестный результат дальнейших действий?
5. Ravil_ 03.03.23 08:16 Сейчас в теме
(4) наверно там нет колонки "НужноеИмяКолонки")
6. user1859069 03.03.23 08:18 Сейчас в теме
(4) Вот из этой таблицы я хочу получить Время в работе(колонка параметр выработки) и количество (107к)
Прикрепленные файлы:
7. user1859069 03.03.23 08:18 Сейчас в теме
(4)Методом "найти" пытаюсь получить значение
Прикрепленные файлы:
9. Ravil_ 03.03.23 08:21 Сейчас в теме
(7) методом найти вы получаете строку или Неопределено. А что за тип у ПараметрВыработки
10. user1859069 03.03.23 08:24 Сейчас в теме
(9)не знаю точно - он получается запросом
11. Ravil_ 03.03.23 08:25 Сейчас в теме
13. user1859069 03.03.23 08:42 Сейчас в теме
(11)не пойму как в отладке посмотреть
16. Zevzm 03.03.23 09:04 Сейчас в теме
(13)Раскройте "+" ТблДвижений в (6) - увидите колонки
user1859069; +1 Ответить
18. user1859069 03.03.23 09:11 Сейчас в теме
(9)Тип: КолонкаТаблицыЗначений
15. Zevzm 03.03.23 09:01 Сейчас в теме
(7) Используйте метод Найти, либо НайтиСтроки (если их может быть несколько). В вашем случае:
Если Не СтрВремяВРаботе = Неопределено Тогда
//какие-то действия
Иначе
Сообщить("Строка не найдена");
КонецЕсли;
8. Ravil_ 03.03.23 08:20 Сейчас в теме
для каждого строка из табл
ВараметрВыработки = Строка.ВараметрВыработки ;
Количество = Строка.Количество ;
КонецЦикла;
12. user1859069 03.03.23 08:34 Сейчас в теме
(8) А как сделать чтобы мой цикл не перебирал каждую строку а перебирал только конкретную, может знаете?
14. Ravil_ 03.03.23 08:46 Сейчас в теме
17. anton13m 4 03.03.23 09:08 Сейчас в теме
(12)
Что значит перебирал каждую строку? Вы циклом проходите таблицу значений и на каждой итерации можете получить значения нужных вам колонок. Если хотите получить строки по определенному отбору, то используйте НайтиСтроки
Отбор = Новый Структура("ПараметрВыработки", "Время в работе");

Для Каждого Строка из тблДвижений.НайтиСтроки(Отбор) Цикл
    
    Количество = Строка.Количество;
    
КонецЦикла;

19. user1859069 03.03.23 09:21 Сейчас в теме
(17) Ваш цикл записывает в структуру строки просто - а мне то нужны сами значения (количество часов каждого времени в работе)
21. anton13m 4 03.03.23 09:25 Сейчас в теме
(19)
Вы или скажите что вам нужно или начните изучать Радченко, Хрусталева.
Цикл выше отбирает только строки в которых ПараметрВыработки равен строке "Время в работе" и получает из этих строк значение в колонке Количество.
22. user1859069 03.03.23 09:31 Сейчас в теме
(21)
 Процедура РазбивкаПутЛистаПоДням(тблДвижений, стрВремяВРаботе)
    
    НачалоПериода = стрВремяВРаботе.Период - стрВремяВРаботе.Количество;                         
    КонецПериода = стрВремяВРаботе.Период;
    
    ТаблицаДат = Новый ТаблицаЗначений;
    ТаблицаДат.Колонки.Добавить("НачалоПериода");
    ТаблицаДат.Колонки.Добавить("КонецПериода");
    
    ПервыйОбходЦикла = Истина;
    
     Пока НачалоПериода <= КонецПериода Цикл
       Если ПервыйОбходЦикла Тогда
           Если КонецДня(НачалоПериода) >= КонецПериода Тогда
               НоваяСтрока = ТаблицаДат.Добавить();
               НоваяСтрока.НачалоПериода = НачалоПериода;
               НоваяСтрока.КонецПериода = КонецПериода;
               Прервать;
           Иначе
               НоваяСтрока = ТаблицаДат.Добавить();
               НоваяСтрока.НачалоПериода = НачалоПериода;
               НоваяСтрока.КонецПериода = КонецДня(НачалоПериода);
           КонецЕсли;
       Иначе
           Если КонецДня(НачалоПериода) >= КонецПериода Тогда
               НоваяСтрока = ТаблицаДат.Добавить();
               НоваяСтрока.НачалоПериода = НачалоДня(НачалоПериода);
               НоваяСтрока.КонецПериода = КонецПериода;
               Прервать;
           Иначе
               НоваяСтрока = ТаблицаДат.Добавить();
               НоваяСтрока.НачалоПериода = НачалоДня(НачалоПериода);
               НоваяСтрока.КонецПериода = КонецДня(НачалоПериода);
           КонецЕсли;
       КонецЕсли;
       НачалоПериода    = КонецДня(НачалоПериода) + 1;
       ПервыйОбходЦикла    = Ложь;
   КонецЦикла;
                                    
    ЭтоПервый = Истина;
    
    Для каждого СтрокаДат Из ТаблицаДат Цикл
    
         НоваяСтрока =  тблДвижений.Добавить();
         ЗаполнитьЗначенияСвойств(НоваяСтрока, стрВремяВРаботе);
         НоваяСтрока.Период = СтрокаДат.КонецПериода;
         НоваяСтрока.Количество = (СтрокаДат.КонецПериода - СтрокаДат.НачалоПериода + ?(ЭтоПервый = Ложь, 1, 0));
         ЭтоПервый = Ложь;
    
     КонецЦикла; 
     
     тблДвижений.Удалить(стрВремяВРаботе);


КонецПроцедуры 
Показать


Этот код разбивает строку на периоды, но не ту которую нужно
Строка находиться в таблице значений "тбзДвижения"
24. anton13m 4 03.03.23 09:38 Сейчас в теме
(23)
У вас же цикл по всей таблице идет, без отбора
Отбор = Новый Структура("ПараметрВыработки", Справочники.уатПараметрыВыработки.ВремяВРаботе);
НайденныеСтроки = тблДвижений.НайтиСтроки(Отбор); 
Для Каждого стрВремяВРаботе из НайденныеСтроки Цикл
    РазбивкаПутЛистаПоДням(тблДвижений, стрВремяВРаботе);
КонецЦикла;
user1859069; +1 Ответить
27. Vitaly1C8 03.03.23 10:08 Сейчас в теме
(22) Если я Вас правильно понял; Вызывайте разбивку ТОЛЬКО для нужных строк; Остальные хотя и перебираются в цикле, но никак не обрабатываются !!!

// Отбор = Новый Структура("ПараметрВыработки", "Время в работе");

Для Каждого Строка из тблДвижений Цикл
    
    _ПараметрВыработки = Строка.ПараметрВыработки;
    _Количество = Строка.Количество;
    Если _ПараметрВыработки = "Время в работе" Тогда   // Выполним разбивку ТОЛЬКО для нужных строк
          // РазбивкаПутЛистаПоДням( ... )
    КонецЕсли;
    
КонецЦикла;
Показать
23. user1859069 03.03.23 09:31 Сейчас в теме
(21)
Процедура СформироватьТаблицаВыработкаТС(ДокументСсылка, СтруктураДополнительныеСвойства)
    ТекстЗапроса = 
        "ВЫБРАТЬ
        |   уатПутевойЛистВыработкаТС.Ссылка.ДатаВозвращения КАК Период,
        |   уатПутевойЛистВыработкаТС.ТС КАК ТС,
        |   уатПутевойЛистВыработкаТС.ПараметрВыработки КАК ПараметрВыработки,
        |   уатПутевойЛистВыработкаТС.Количество КАК Количество,
        |   уатПутевойЛистВыработкаТС.Подразделение КАК Подразделение,
        |   уатПутевойЛистВыработкаТС.Контрагент КАК Контрагент,
        |   уатПутевойЛистВыработкаТС.Ссылка.Организация КАК Организация,
        |   уатПутевойЛистВыработкаТС.ОбъектСтроительства КАК ОбъектСтроительства,
        |   уатПутевойЛистВыработкаТС.Маршрут КАК Маршрут,
        |   уатМестонахождениеТССрезПоследних.Колонна КАК Колонна
        |ИЗ
        |   Документ.уатПутевойЛист.ВыработкаТС КАК уатПутевойЛистВыработкаТС
        |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатМестонахождениеТС.СрезПоследних(&Период, ) КАК уатМестонахождениеТССрезПоследних
        |       ПО уатПутевойЛистВыработкаТС.Ссылка.ТранспортноеСредство = уатМестонахождениеТССрезПоследних.ТС
        |       ЛЕВОЕ СОЕДИНЕНИЕ Документ.уатПутевойЛист КАК уатПутевойЛист
        |       ПО уатПутевойЛистВыработкаТС.Ссылка = уатПутевойЛист.Ссылка
        |ГДЕ
        |   уатПутевойЛистВыработкаТС.Ссылка = &Док
        |   И уатПутевойЛист.ДатаВозвращения = &Период"
        ;
    Запрос = Новый Запрос(ТекстЗапроса);
    Запрос.УстановитьПараметр("Док", ДокументСсылка);
    Запрос.УстановитьПараметр("Период",ДокументСсылка.ДатаВозвращения);   
    тблДвижений = Запрос.Выполнить().Выгрузить();
    
    УчетВыработкиПоКонтрагентам = уатПраваИНастройки.уатПолучитьПраваИНастройкиПользователя(ДокументСсылка.Организация, ПланыВидовХарактеристик.уатПраваИНастройки.УчетВыработкиПоКонтрагентам);
    УчетВыработкиПоПодразделениям = уатПраваИНастройки.уатПолучитьПраваИНастройкиПользователя(ДокументСсылка.Организация, ПланыВидовХарактеристик.уатПраваИНастройки.УчетВыработкиПоПодразделениям);
    УчетВыработкиПоОбъектамСтроительства = уатПраваИНастройки.уатПолучитьПраваИНастройкиПользователя(ДокументСсылка.Организация, ПланыВидовХарактеристик.уатПраваИНастройки.УчетВыработкиПоОбъектамСтроительства);
    УчетВыработкиПоМаршрутам = уатПраваИНастройки.уатПолучитьПраваИНастройкиПользователя(ДокументСсылка.Организация, ПланыВидовХарактеристик.уатПраваИНастройки.УчетВыработкиПоМаршрутам);
    Если НЕ УчетВыработкиПоКонтрагентам Тогда
        тблДвижений.ЗаполнитьЗначения(Неопределено, "Контрагент");
    КонецЕсли;
    Если НЕ УчетВыработкиПоПодразделениям Тогда
        тблДвижений.ЗаполнитьЗначения(Неопределено, "Подразделение");
    КонецЕсли;
    Если НЕ УчетВыработкиПоОбъектамСтроительства Тогда
        тблДвижений.ЗаполнитьЗначения(Неопределено, "ОбъектСтроительства");
    КонецЕсли;
    Если НЕ УчетВыработкиПоМаршрутам Тогда
        тблДвижений.ЗаполнитьЗначения(Неопределено, "Маршрут");
    КонецЕсли;
    Если (НЕ УчетВыработкиПоКонтрагентам) ИЛИ (НЕ УчетВыработкиПоПодразделениям) ИЛИ (НЕ УчетВыработкиПоОбъектамСтроительства) ИЛИ (НЕ УчетВыработкиПоМаршрутам) Тогда
        тблДвижений.Свернуть("ТС, ПараметрВыработки, Подразделение, Контрагент, Организация, ОбъектСтроительства, Маршрут, Колонна, Период", "Количество");
    КонецЕсли;
    //Деканов.М
    стрВремяВРаботе = тблДвижений.Найти(Справочники.уатПараметрыВыработки.ВремяВРаботе, "ПараметрВыработки");
    Для Каждого стрВремяВРаботе из тблДвижений Цикл
        РазбивкаПутЛистаПоДням(тблДвижений, стрВремяВРаботе); 
    КонецЦикла; 
    //
    СтруктураДополнительныеСвойства.ТаблицыДляДвижений.Вставить("ТаблицаВыработкиТС", тблДвижений);
КонецПроцедуры
Показать
20. succub1_5 93 03.03.23 09:23 Сейчас в теме
(12)Либо перебирать в цикле, либо НайтиСтроки(ПараметрыОтбора)
Для Каждого ТекСтр из тблДвижений Цикл
Если ТекСтр.НомерСтроки<5 Тогда
Сообщить(""+ТекСтр.ПараметрВыработки + " " + ТекСтр.Количество);
Иначе
Прервать;
КонецЕсли;
КонецЦикла;

Показать


Только некоторые строки:
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ПараметрыВыработки", !ЗначениПараметрыВыработки);
ПараметрыОтбора.Вставить("Количество", 0);
МассивСтрок = тблДвижений.НайтиСтроки(ПараметрыОтбора);
Если МассивСтрок.Количество()>0 Тогда
Для Каждого ТекСтр из МассивСтрок Цикл
Сообщить(""+ТекСтр.ПараметрыВыработки + " " + ТекСтр.Количество);
КонецЦикла;
Иначе
Сообщить("Ничего не нашли!");
КонецЕсли;

Показать
25. glek 119 03.03.23 09:56 Сейчас в теме
Пипец вопросы от разработчиков.
user1881120; +1 Ответить 1
26. user1880116 03.03.23 10:04 Сейчас в теме
(25) Это сейчас называется "Сообщество Инфостарта". Хехе.
user1881120; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот