8.х Получить Остатки Встроенным языком

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Catsys, 22 мар 2011.

  1. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Встроенным языком надо получить остатки по наименованию из регистра накопления никак немогу добится результата
    например в регистре накопления есть позиции "портсигар", надо получить остатки только позиции портсигар, и проверить при создании расходной накладной, есть ли такое количество на складе, если нет, выдать ошибку
  2. afinogen
    Offline

    afinogen Опытный в 1С

    Регистрация:
    28 фев 2011
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    и в чем проблема? Если регистр накопления у вас - регистр остатков, а позиция "портсигар" - измерение, то тогда строите запрос к регистру накопления остатки, и выбираете остаток по данному измерению, передаете в него "портсигар" как условие :angry:
  3. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    в том то и проблема, а если там не только порсигар, а целая табличная часть?
  4. afinogen
    Offline

    afinogen Опытный в 1С

    Регистрация:
    28 фев 2011
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    а как вы можете в регистр накопления впихнуть табчасть? :D


    я так понимаю что у вас есть некий документ с таб чатью, содержащей "портсигары" и есть регистр накопления, ну так берите, перебирайте циклом каждую строку табчасти и для каждой строки ищите остатки по регистру :angry:
  5. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    У меня расходная накладная с таб.частью, нужно не позволить списать больше чем есть
  6. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    жесткач. запрос в цикле.

    правильно одним запросом получить необходимые данные, и потом делать один обход по результату запроса. посмотрите у Радченко в практическом пособии разработчика. там должен быть разобран пример контроля остатков.
  7. afinogen
    Offline

    afinogen Опытный в 1С

    Регистрация:
    28 фев 2011
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    человеку для начала просто нужно объяснить откуда ноги должны расти, а потом уже оптимизировать запрос :angry:
  8. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Так даже попроще будет,

    я поего книге и учился, недавно закончи только,у него там дюже позапутано в плане остатков, и остатки он выводит только в отчеты
    ЗЫ
    а как подставить в запрос наименование, я пробывал так, ругается

    Код:
    Запрос.Текст="ВЫБРАТЬ
    |    ОстаткиТоваров.Количество КАК ОстатокТ,
    |    ОстаткиТоваров.Наименование.Наименование КАК НаименованиеТ
    |ИЗ
    |    РегистрНакопления.ОстаткиТоваров КАК ОстаткиТоваров
    |ГДЕ
    |    ОстаткиТоваров.Наименование.Наименование = "+ТекСтрокаРасход.Наименование+"
    |
    |УПОРЯДОЧИТЬ ПО
    |    НаименованиеТ";
    
    
    
    может вы и правы, но я пытаюсь научится правильно программировать, планирую здать на 1с спеца
  9. TopicStarter Overlay
    Catsys
    Offline

    Catsys

    Регистрация:
    6 мар 2011
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1

    Виноват, теперь текст такой, все вродь работает, но как всеже получить общий итог?

    Код:
    Процедура ОбработкаПроведения(Отказ, Режим)
    Перем ДанныеТекСтроки,счетчик;	
    Для Каждого ТекСтрокаРасход Из Расход Цикл
    ДанныеТекСтроки=ТекСтрокаРасход.Наименование;
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    |	ОстаткиТоваров.Количество КАК ОстатокТ,
    |	ОстаткиТоваров.Наименование.Наименование КАК НаименованиеТ,
    |	ОстаткиТоваров.ВидДвижения
    |ИЗ
    |	РегистрНакопления.ОстаткиТоваров КАК ОстаткиТоваров
    |ГДЕ
    |	ОстаткиТоваров.Наименование.Наименование = &Номенкл
    |
    |УПОРЯДОЧИТЬ ПО
    |	НаименованиеТ";	
    Запрос.УстановитьПараметр("Номенкл", ДанныеТекСтроки);
    ВыборкаРезЗап=Запрос.Выполнить().Выбрать();
    
    
    Пока ВыборкаРезЗап.Следующий() Цикл
    Сообщить(ВыборкаРезЗап.НаименованиеТ);
    КонецЦикла;
    КонецЦикла;
    
    

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