Вопрос в следующем, есть код, который для каждой строки тч добавляет еще строки.
Проблема в том что, после добавление нескольких строк, для одной строки, цикл продолжает добавлять строки для другой, только что созданной в этом цикле строки.
То есть если есть одна строка в тч, цикл должен проходить 1 раз, и добавить допустим 3 строки. цикл проходит один раз, добавляет 3 строки, и продолжает для этих вновь добавленных строк опять добавлять еще строки.
а=1;
Для каждого Стр из Объект.Информация Цикл
ТекущийМесяц = Период.ДатаНачала;
Пока ТекущийМесяц < Период.ДатаОкончания Цикл
Сообщить(ТекущийМесяц);
НоваяСтрока = Объект.Информация.Добавить();
НоваяСтрока.Период = ТекущийМесяц;
НоваяСтрока.Реализация = Стр["Реализация"+ а];
НоваяСтрока.ЗаменаБрака = Стр["ЗаменаБрака"+ а];
ЗаполнитьЗначенияСвойств(НоваяСтрока,Стр,"КодSL,Признак");
ТекущийМесяц = ДобавитьМесяц(ТекущийМесяц, 1);
а=а+1;
КонецЦикла;
КонецЦикла;
ПоказатьПроблема в том что, после добавление нескольких строк, для одной строки, цикл продолжает добавлять строки для другой, только что созданной в этом цикле строки.
То есть если есть одна строка в тч, цикл должен проходить 1 раз, и добавить допустим 3 строки. цикл проходит один раз, добавляет 3 строки, и продолжает для этих вновь добавленных строк опять добавлять еще строки.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(23)Да, строки пропускаются. все нормально, но!!!! Строки для старых строк не доавляются?
Смотрите есть две строки в тч
Для этих 2 строк надо добавить еще 2 строки допустим. Добавляю в цикле две строки. задаю им пр = 1, они пропускаются. Но строки не добавляются вообще, то есть было 2 строки, цикл прошелся, лолжно было быть 4 строки, а строк 2. Но цикл работает, в цикл заходит..
Смотрите есть две строки в тч
Для этих 2 строк надо добавить еще 2 строки допустим. Добавляю в цикле две строки. задаю им пр = 1, они пропускаются. Но строки не добавляются вообще, то есть было 2 строки, цикл прошелся, лолжно было быть 4 строки, а строк 2. Но цикл работает, в цикл заходит..
(33)Короче проблема была в том что, может это и имелось ввиду,
(25)
Надо ыбло записывать данные не в объект.информация, а текущий объект.информация
(25)
Скорее всего проблема в Объект и Форма.
Надо ыбло записывать данные не в объект.информация, а текущий объект.информация
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Для Каждого Стр ИЗ ИнформацияФормы Цикл
а = 1;
ТекущийМесяц = Период.ДатаНачала;
Пока ТекущийМесяц < Период.ДатаОкончания Цикл
Сообщить(ТекущийМесяц);
НоваяСтрока = ТекущийОбъект.Информация.Добавить();
НоваяСтрока.Период = ТекущийМесяц;
НоваяСтрока.Реализация = Стр["Реализация"+ а];
НоваяСтрока.ЗаменаБрака = Стр["ЗаменаБрака"+ а];
ЗаполнитьЗначенияСвойств(НоваяСтрока,Стр, "КодSL, Признак, СреднемесячнаяОтгрузка");
ТекущийМесяц = ДобавитьМесяц(ТекущийМесяц, 1);
а=а+1;
КонецЦикла;
КонецЦикла;
Элементы.Информация.Обновить();
КонецПроцедуры
Показать
(28) нет чудес.
Если
а =1 потом цикл,
у тебя постоянно увеличивается "а"
во втором случае у тебя для каждой строки "а" начинает увеличиваться с 1
Теперь вопрос:
Сколько у тебя полей вида Реализация[i], ЗаменаБрака[i], получается в первом случае чем больше у тебя строк, тем больше "а".
Если
а =1 потом цикл,
у тебя постоянно увеличивается "а"
во втором случае у тебя для каждой строки "а" начинает увеличиваться с 1
Теперь вопрос:
Сколько у тебя полей вида Реализация[i], ЗаменаБрака[i], получается в первом случае чем больше у тебя строк, тем больше "а".
(24) Обнули "Пр" перед выполнением цикла.
Вообще интересно ты как-то организуешь добавление строк. Для некой строки в этой же ТЧ добавляешь еще строки. А если два раза цикл прокрутить (при вызове функции или процедуры) или больше. Они же постоянно тогда добавляться будут.
А не лучше было бы создать подчиненную ТЧ?
Вообще интересно ты как-то организуешь добавление строк. Для некой строки в этой же ТЧ добавляешь еще строки. А если два раза цикл прокрутить (при вызове функции или процедуры) или больше. Они же постоянно тогда добавляться будут.
А не лучше было бы создать подчиненную ТЧ?
(6)
Кл = Объект.Информация.Количество() - 1;
Для а=1 по Кл Цикл
Стр = Объект.Информация[а-1];
ТекущийМесяц = Период.ДатаНачала;
Пока ТекущийМесяц < Период.ДатаОкончания Цикл
Сообщить(ТекущийМесяц);
НоваяСтрока = Объект.Информация.Добавить();
НоваяСтрока.Период = ТекущийМесяц;
НоваяСтрока.Реализация = Стр["Реализация"+ а];
НоваяСтрока.ЗаменаБрака = Стр["ЗаменаБрака"+ а];
ЗаполнитьЗначенияСвойств(НоваяСтрока,Стр,"КодSL,Признак");
ТекущийМесяц = ДобавитьМесяц(ТекущийМесяц, 1);
КонецЦикла;
КонецЦикла;
Показать
(12) А если так ?
Кл = Объект.Информация.Количество() - 1;
а=1;
Для Инд = 0 по Кл Цикл
Стр = Объект.Информация[Инд];
ТекущийМесяц = Период.ДатаНачала;
Пока ТекущийМесяц < Период.ДатаОкончания Цикл
Сообщить(ТекущийМесяц);
НоваяСтрока = Объект.Информация.Добавить();
НоваяСтрока.Период = ТекущийМесяц;
НоваяСтрока.Реализация = Стр["Реализация"+ а];
НоваяСтрока.ЗаменаБрака = Стр["ЗаменаБрака"+ а];
ЗаполнитьЗначенияСвойств(НоваяСтрока,Стр,"КодSL,Признак");
ТекущийМесяц = ДобавитьМесяц(ТекущийМесяц, 1);
а = а + 1;
КонецЦикла;
КонецЦикла;
Показать
(13)
тоже самое, цикл проходится, ошибок нет, но строки не появляются
Кл = Объект.Информация.Количество() - 1;
а=1;
Для Инд = 0 по Кл Цикл
Стр = Объект.Информация[Инд];
ТекущийМесяц = Период.ДатаНачала;
Пока ТекущийМесяц < Период.ДатаОкончания Цикл
Сообщить(ТекущийМесяц);
НоваяСтрока = Объект.Информация.Добавить();
НоваяСтрока.Период = ТекущийМесяц;
НоваяСтрока.Реализация = Стр["Реализация"+ а];
НоваяСтрока.ЗаменаБрака = Стр["ЗаменаБрака"+ а];
ЗаполнитьЗначенияСвойств(НоваяСтрока,Стр,"КодSL,Признак");
ТекущийМесяц = ДобавитьМесяц(ТекущийМесяц, 1);
а = а + 1;
КонецЦикла;
КонецЦикла;
Показатьа=1;
Для Инд = 0 по Кл Цикл
Стр = Объект.Информация[Инд];
ТекущийМесяц = Период.ДатаНачала;
Пока ТекущийМесяц < Период.ДатаОкончания Цикл
Сообщить(ТекущийМесяц);
НоваяСтрока = Объект.Информация.Добавить();
НоваяСтрока.Период = ТекущийМесяц;
НоваяСтрока.Реализация = Стр["Реализация"+ а];
НоваяСтрока.ЗаменаБрака = Стр["ЗаменаБрака"+ а];
ЗаполнитьЗначенияСвойств(НоваяСтрока,Стр,"КодSL,Признак");
ТекущийМесяц = ДобавитьМесяц(ТекущийМесяц, 1);
а = а + 1;
КонецЦикла;
КонецЦикла;
тоже самое, цикл проходится, ошибок нет, но строки не появляются
Добавь в Объект.Информация дополнительное поле например "Пр" и переделай так:
а=1;
Для каждого Стр из Объект.Информация Цикл
Если Стр.Пр=1 Тогда
Продолжить;
КонецЕсли;
ТекущийМесяц = Период.ДатаНачала;
Пока ТекущийМесяц < Период.ДатаОкончания Цикл
Сообщить(ТекущийМесяц);
НоваяСтрока = Объект.Информация.Добавить();
НоваяСтрока.Период = ТекущийМесяц;
НоваяСтрока.Реализация = Стр["Реализация"+ а];
НоваяСтрока.ЗаменаБрака = Стр["ЗаменаБрака"+ а];
НоваяСтрока.Пр=1;
ЗаполнитьЗначенияСвойств(НоваяСтрока,Стр,"КодSL,Признак");
ТекущийМесяц = ДобавитьМесяц(ТекущийМесяц, 1);
а=а+1;
КонецЦикла;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот