7.7 .ВыбратьСтроки(); .ПолучитьСтроку()

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

  1. TopicStarter Overlay
    Log1c
    Offline

    Log1c Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    74
    Симпатии:
    0
    Баллы:
    26
    Есть 2 вида документов: "ПриходНаСклад", "РасходСоСклада".
    Надо получить все документы кот прошли через склад(о них были записи в этих двух документах("СырьеРулон" - одинаковое значение)).
    Собственно всё понятно и реализация легка, но... не работает, пришлось поискать вручную, и ввести доп. условие (номер рулона, кот. я точно знаю что должен попасть в сообщение) и заработало, как так?(пояснения ниже).

    Код:
    ДкмПрих=СоздатьОбъект("Документ.ПриходНаСклад");     
    ДкмПрих.ВыбратьДокументы(Дата1, Дата2);
    ДкмРасх=СоздатьОбъект("Документ.РасходСоСклада");     
    ДкмРасх.ВыбратьДокументы(Дата1, Дата2);
    
    Пока ДкмПрих.ПолучитьДокумент() = 1 Цикл
    Если (ДкмПрих.Склад.ВидСклада=Перечисление.ВидыСкладов.Сырье) Тогда
    ДкмПрих.ВыбратьСтроки();
    Пока ДкмПрих.ПолучитьСтроку() = 1 Цикл
    
    //Если(Строка(СокрЛП(ДкмПрих.СырьеРулон))="3614") Тогда
    
    Пока ДкмРасх.ПолучитьДокумент() = 1 Цикл
    Если ДкмРасх.Склад.ВидСклада=Перечисление.ВидыСкладов.Сырье Тогда
    ДкмРасх.ВыбратьСтроки();
    Пока ДкмРасх.ПолучитьСтроку() = 1 Цикл
    Если (ДкмРасх.Радиус2=0) И (ДкмПрих.Товар=ДкмРасх.Товар) И (ДкмПрих.СырьеРулон=ДкмРасх.СырьеРулон) Тогда
    Сообщить(ДкмПрих.СырьеРулон);
    
    КонецЕсли; 
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    
    //КонецЕсли;
    
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    
    Если раскоментировать коментарии (тоесть ввести доп. условие) сообщение будет выдаватся, если оставить так как есть, сообщение не выдаётся(вообще никакое).

    Сообственно вопрос как это возможно? с дополнительным условием работает, а так нет???
  2. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Проблема в том, что циклы вложены не правильно.
    Вложеный цикл должен каждый раз начинаться заново, т.е.
    ДкмРасх.ВыбратьДокументы(Дата1, Дата2);
    вместо первого комментария.
    А вообще в таких случаях надо использовать запросы.
  3. TopicStarter Overlay
    Log1c
    Offline

    Log1c Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    74
    Симпатии:
    0
    Баллы:
    26
    :unsure: Да, действительно, большое спс, я уже чуть ли не головой об стенку бился, думал как же так, ставишь выбрать все документы с условием - не выбираются, добавляешь ещё одно условие - выбираются.
  4. TopicStarter Overlay
    Log1c
    Offline

    Log1c Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    74
    Симпатии:
    0
    Баллы:
    26
    Ну это уже вторая проблема, у мну не получается строить запросы к регистрам, например:

    Код:
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса=
    "//{{ЗАПРОС(Сформировать)
    |Фирма=            Регистр.ОстаткиТоваров.Фирма;
    |Товар=            Регистр.ОстаткиТоваров.Товар;
    |Склад=         Регистр.ОстаткиТоваров.Склад;
    |Группировка Товар без групп;
    |"//}}ЗАПРОС;
    
    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
    Сообщить("Неправельно построена структура запроса");
    Возврат;
    КонецЕсли;
    
    Пока Запрос.Группировка(1) = 1 Цикл //не выполняется
    Сообщить("Группировка 1 выполнилась");
    КонецЦикла;
    
    Группировка не выполняется =(. Ко всем другим возможным метаданным получается делать запросы а к регистрам нет.

    Уже разобрался , спс "Trigg" оказывается
    Запрос к регистру НЕ работает без функций.

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