7.7 Перебрать строки для каждого документа по ссылке

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Samouchka, 29 мар 2015.

  1. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Приветствую всех. Выполняю вложенный цикл, где для каждой строки каждого документа "Документ" из таблицы значений "Поступления" надо создать подчиненный элемент "СведТов". Вдруг обработка зависает так что я её прерываю не дожидаясь выполнения, хотя должна отработать быстро - гигантских данных нет. Вот код, подскажите что не так, кто может:

    Код:
    Поступления.ВыбратьСтроки();
    Пока Поступления.ПолучитьСтроку() = 1 Цикл
    ТаблСчФакт=Доку.СоздатьПодчиненныйЭлемент("ТаблСчФакт");
                    Поступления.Документ.ВыбратьСтроки();
                    Пока Поступления.Документ.ПолучитьСтроку()=1 Цикл
                        СведТов=ТаблСчФакт.СоздатьПодчиненныйЭлемент("СведТов");
                    КонецЦикла;
    КонецЦикла;
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Внешне нет ошибки нет.. за исключением того что вы нигде не присваиваете значение
    Покажите код целиком
  3. GlukAl
    Offline

    GlukAl Опытный в 1С

    Регистрация:
    4 окт 2012
    Сообщения:
    187
    Симпатии:
    7
    Баллы:
    29
    проверьте логику выборки строк документа поступления
    зацикливается на обходе первой строки



    Поступления.ВыбратьСтроки();
    Пока Поступления.ПолучитьСтроку() = 1 Цикл

    Поступления.Документ.ВыбратьСтроки();
    Пока Поступления.Документ.ПолучитьСтроку()=1 Цикл​

    КонецЦикла;​

    КонецЦикла;
    Последнее редактирование: 30 мар 2015
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Поступления - Таблица значений
    Документ - ссылка на документ..
    Похоже не допонемаю, но первоначальный код должен работать
  5. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Обозначил СФ=Поступления.Документ и всё заработало. Вот правильный код (хотя я не знаю, чем предыдущий был неправилен):

    Код:
    ТаблСчФакт=Доку.СоздатьПодчиненныйЭлемент("ТаблСчФакт");
                    СФ=Поступления.Документ;
                    НомСт=0;
                    СФ.ВыбратьСтроки();
                    Пока СФ.ПолучитьСтроку()=1 Цикл
                        НомСт=НомСт+1;
                        СведТов=ТаблСчФакт.СоздатьПодчиненныйЭлемент("СведТов");
                        СведТов.УстановитьАтрибут("НомСтр", НомСт);
                        СведТов.УстановитьАтрибут("НаимТов", СФ.Товар.Наименование);
                        //СведТов.УстановитьАтрибут("ОКЕИ_Тов", СФ.Товар.ЕдиницаИзмерения.Код);
                        УстановитьНеобязательныйАтрибут("ОКЕИ_Тов",СФ.Товар.ЕдиницаИзмерения.Код,СведТов);
                        СведТов.УстановитьАтрибут("КолТов", СокрЛП(Формат(СФ.Количество,"Ч15.3")));
                        СведТов.УстановитьАтрибут("ЦенаТов", СокрЛП(Формат(СФ.Цена,"Ч15.2")));
                        СведТов.УстановитьАтрибут("СтТовБезНДС", СокрЛП(Формат(СФ.Сумма,"Ч15.2")));
                        СведТов.УстановитьАтрибут("СтТовУчНал", СокрЛП(Формат(СФ.Всего,"Ч15.2")));
                       
                       
                        Акциз=СведТов.СоздатьПодчиненныйЭлемент("Акциз");
                        Акциз.УстановитьАтрибут("СумАкциз","без акциза");
                        НалСт=СведТов.СоздатьПодчиненныйЭлемент("НалСт");
                        НалСт.УстановитьАтрибут("НалСтВел",СокрЛП(Формат(СФ.Товар.СтавкаНДС.Получить(СФ.ДатаСчетаФактуры).Ставка, "Ч15.0")));
                        НалСт.УстановитьАтрибут("НалСтТип","процент");
                        СумНал=СведТов.СоздатьПодчиненныйЭлемент("СумНал");
                        СумНал.УстановитьАтрибут("СумНДС", СокрЛП(Формат(СФ.НДС,"Ч15.2")));
                       
                        Если ПустоеЗначение(СФ.ГТД.СтранаПроисхождения) = 0 Тогда
                            КодПроисх = СведТов.СоздатьПодчиненныйЭлемент("КодПроисх");
                            КодПроисх.text = СокрЛП(СФ.ГТД.КодПоОКСМ);
                        КонецЕсли;
                       
                        НомерТД=СведТов.СоздатьПодчиненныйЭлемент("НомерТД");
                        НомерТД.text = ?(ПустоеЗначение(СФ.ГТД.Наименование) = 1," ",СокрЛП(СФ.ГТД.Наименование));
                    КонецЦикла;
  6. aqua_80
    Offline

    aqua_80

    Регистрация:
    29 мар 2015
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Поступления.Документ.ПолучитьСтроку() получал объект и выбирал его первую строку. И так до скончания электричества))
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    И без получения объекта должно работать
  8. aqua_80
    Offline

    aqua_80

    Регистрация:
    29 мар 2015
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Да ладно!)) При обращении к методу объекта через точку идет инициализация объекта. А где сохраняется промежуточное состояние этого объекта, если не используется оператор присваивания!?
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104

Поделиться этой страницей