Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 06:35

как написать правильно Цикл?

Автор John_Connor, 10 авг 2013, 17:28

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

John_Connor


Народ кто может подсказать как правильно цикл написать?
необходимо что бы выполнялось условие
Если  таб1Контрагент =таб2Контрагент и таб1Контрагент=таб4Контрагент


Для каждого СтрТабЧасти из ТЧ Цикл
         таб1Контрагент=СтрТабЧасти.Контрагент;
         таб1СуммаСУСН=СтрТабЧасти.СуммаСусн;
         //Сообщить(таб1Контрагент);
       КонецЦикла;
         Для каждого СтрТабЧасти из ТЧ2 Цикл
         таб2Контрагент=СтрТабЧасти.Контрагент;
         таб2СуммаСУСН=СтрТабЧасти.СуммаСусн;
         //Сообщить(таб2Контрагент);
       КонецЦикла;
           Для каждого СтрТабЧасти из ТЧ4 Цикл
         таб4Контрагент=СтрТабЧасти.Контрагент;
         таб4СуммаСУСН=СтрТабЧасти.СуммаСусн;
         //Сообщить(таб4Контрагент);
      КонецЦикла;
      Для каждого СтрТабЧасти из ТЧ Цикл
      Если   таб1Контрагент =таб2Контрагент и таб1Контрагент=таб4Контрагент
         Тогда
         
            //Если  таб1Контрагент =таб2Контрагент и таб1Контрагент=таб4Контрагент
         //сравниваем контрагентов для записи в счет если 3  все равны  в счете 3 записи
         //************======если не будет моб продумать!!!
         Сообщить(таб1Контрагент);      
          //**Создаем счет
          НовСчет =  Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
         НовСчет.Организация=Справочники.Организации.НайтиПоКоду("000000002");                  
          НовСчет.Контрагент = таб1Контрагент;


mixqn

Если я правильно понял суть написанного, то задачу можно сформулировать так:
Есть 3 табличных части: ТЧ1, ТЧ2 и ТЧ4, во всех 3-х табличных частях есть колонка Контрагент. Требуется пройтись по всем строкам таб.частей в цикле и в случае нахождения контрагента во всех 3-х ТЧ сделать какие-то действия.

Так?

Номера строк должны совпадать или главное просто найти контрагента во всех 3-х ТЧ?

Добавлено: 10 авг 2013, 18:57


1 вариант: когда просто надо найти контрагента во всех ТЧ (вариант, что в какой-то из ТЧ один и тот же контрагент встречается более 1 раза надо предусмотреть дополнительно, в приведенном коде это не учитывается)
Для каждого СтрТаб Из ТЧ1 Цикл
Контрагент = СтрТаб.Контрагент;
СтрТаб2 = ТЧ2.Найти(Контрагент, "Контрагент");
СтрТаб4 = ТЧ4.Найти(Контрагент, "Контрагент");
Если НЕ (СтрТаб2 = Неопределено) И НЕ (СтрТаб4 = Неопределено) Тогда
// нужные вам действия - контрагент найден во всех 3-х ТЧ
КонецЕсли;
КонецЦикла;

вариант 2: контрагент должен находиться строго в той же строке:
Для каждого СтрТаб Из ТЧ1 Цикл
Контрагент = СтрТаб.Контрагент;
Индекс = ТЧ1.Индекс(СтрТаб);
СтрТаб2 = ТЧ2[Индекс];
СтрТаб4 = ТЧ4[Индекс];
Если (СтрТаб2.Контрагент = Контрагент) И (СтрТаб4.Контрагент = Контрагент) Тогда
// нужные вам действия - контрагент найден во всех 3-х ТЧ
КонецЕсли;
КонецЦикла;

pavl_vs

Цитата: John_Connor от 10 авг 2013, 17:28
Народ кто может подсказать как правильно цикл написать?
..........

Это образец того, как нельзя формулировать вопрос.

Цитата: mixqn от 10 авг 2013, 18:46
Если я правильно понял суть написанного, то задачу можно сформулировать так:
..........

Ребус, кроссворд да и только!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск