Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Проблема с запросами. (Временные таблицы) , Не получаеться прочитать с временной таблицы          
beber Подменю пользователя
сообщение 29.11.11, 16:04
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

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

    Запрос.УстановитьПараметр("Ссылка", Ссылка);

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Движение = Движения.ПриходТовара.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Склад = СкладКуръера;
        Движение.Товар = ВыборкаДетальныеЗаписи.Товар;
        Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
    КонецЦикла;

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


По реквизитам вроде все правильно. При включенных временных таблицах пишет ошибку:

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ВыполненаяРабота.МодульОбъекта(35)}: Поле объекта не обнаружено (Товар)
Движение.Товар = ВыборкаДетальныеЗаписи.Товар;

Помогите разобраться.

Vofka Подменю пользователя
сообщение 29.11.11, 16:10
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4613 раз
Рейтинг: 3750.1

Цитата
Я только начал изучать программирование на 1С для собственных целей. Пишу свою конфигурацию для своего предприятия.

faceoff.gif

В регистре ПриходТовара измерения (ресурса) Товар нету.

beber Подменю пользователя
сообщение 29.11.11, 16:24
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Спасибо, но не помогло. У меня в регистре ПриходТовара есть измерение Товар.

Все работает если не использовать Временные таблицы. Но без них я не могу контролировать отрицательные остатки.

logist Подменю пользователя
сообщение 29.11.11, 16:31
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Уберите это:
        Запрос3.МенеджерВременныхТаблиц = МенеджерВТ;


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Домовик,

Домовик Подменю пользователя
сообщение 29.11.11, 18:14
Сообщение #5

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

Понятия не имею о временных таблицах. Но в примере еще Запрос.Выполнить() перед ТЕкстом, а потом опять выполнить.
Но синтаксиз аналогичен.

МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;

Запрос.Выполнить();
Запрос.Текст="ВЫБРАТЬ * из ВременнаяОсновная";
ТзПередано=Запрос.Выполнить().Выгрузить();


Beber, повторюсь, а в отладчике через табло посмотреть чего там в Движения?

Розбираюсь потихеньку
"Если временная таблица создается, используется и уничтожается в рамках одного пакета запросов, менеджер временных таблиц создавать не нужно". схоже, не потрібно їх вам використовувати.
Причина редактирования: Используйте цитирование без фанатизма! Вофка.

Домовик Подменю пользователя
сообщение 29.11.11, 20:16
Сообщение #6

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

Менеджер временных таблиц дає змогу утримувати запросом зразу кілька тимчасових таблиць. У вашому першому випадку, здається, їх створилось дві. Одна пуста, і друга ваша, яку ви створили на основі фізичної таблиці. Тут проблема, можливо з позиціонуванням на потрібній таблиці. Взагалі. В першому випадку не потрібно ніяких менеджерів.

ой-ой-ой! А по количеству нащо групуєте? Там уже у вашій тимчасовій колонки Товар немає. А я тут "Размышляю"..... )

       |СГРУППИРОВАТЬ ПО
        |    ВыполненаяРаботаТовары.Товар,
        |    ВыполненаяРаботаТовары.Количество";

beber Подменю пользователя
сообщение 29.11.11, 21:06
Сообщение #7

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Спасибо большое ребята. Помогло.

WKBAPKA Подменю пользователя
сообщение 22.12.11, 12:11
Сообщение #8

Будьте осторожны, кидала
**
Группа: Заблокированные
Сообщений: 34
Спасибо сказали: 0 раз
Рейтинг: 0

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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.06.25, 14:37
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!