Имя: Пароль:
1C
 
Переменная не определена (Контрагенты) Запрос.УстановитьПараметр("Контрагенты",Контрагенты
,
0 Repinovich
 
21.11.22
21:57
Помогите решить данную проблему. Не понимаю почему чего хочет 1с-предприятие, точнее зачем параметр определять на сервер.
1. без параметра
2. сам код документа
3. ошибка параметра
Ошибка при вызове метода контекста (Выполнить)
{Документ.РеализацияТоваров.МодульОбъекта(70)}:    РезультатЗапроса = Запрос.Выполнить();
по причине:
{(37, 22)}: Не задано значение параметра "Контрагенты"
НЕ Контрагенты = <<?>>&Контрагенты

по причине:
{(37, 22)}: Не задано значение параметра "Контрагенты"
НЕ Контрагенты = <<?>>&Контрагенты


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

    Движения.ОстаткиТоваров.Записывать = Истина;
    Движения.БронированиеТоваров.Записывать = Истина;
    
    
    
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        
        Если ВыборкаДетальныеЗаписи.КоличествоОстаток - ВыборкаДетальныеЗаписи.ЧужаяБронь < ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
            
            Нехватка = ВыборкаДетальныеЗаписи.Количество - (ВыборкаДетальныеЗаписи.КоличествоОстаток - ВыборкаДетальныеЗаписи.ЧужаяБронь );
            
            
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Не хватает " + (Нехватка)+ " шт. товара " + ВыборкаДетальныеЗаписи.НоменклатураП + " в Продажа товаров " + Номер + " от " + Дата;
            Сообщение.Сообщить();
            Отказ = Истина;
            Продолжить;  
        Иначе
            Движение = Движения.ОстаткиТоваров.Добавить();
            Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
            Движение.Период = Дата;
            Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
            Движение.Количество = ВыборкаДетальныеЗаписи.Количество;  
            
            Движение = Движения.БронированиеТоваров.Добавить();
            Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
            Движение.Период = Дата;
            Движение.Контрагенты = ВыборкаДетальныеЗаписи.Контрагенты;
            Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
            Движение.КоличествоЗабронированного = ВыборкаДетальныеЗаписи.БроньКонтрагента;  
        КонецЕсли;
        
    КонецЦикла;
    
    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

{Документ.РеализацияТоваров.МодульОбъекта(63,42)}: Переменная не определена (Контрагенты)
    Запрос.УстановитьПараметр("Контрагенты",<<?>>Контрагенты); (Проверка: Сервер)
1 Гипервизор
 
21.11.22
22:02
Что есть "Контрагенты"?
2 hockeyist
 
21.11.22
22:16
(0) Если в запросе указан параметр, то для выполнения запроса нужно указать значение этого параметра.
Я ответил на вопрос "почему чего хочет 1С"?
3 НафНаф
 
21.11.22
22:38
Устанавливать остатки на момент времени или дату равным неопределено это как? Возможно я не всё понимаю в 1с
4 hockeyist
 
21.11.22
22:41
(3) Это на конец дня 31.12.3999
5 Repinovich
 
21.11.22
22:42
(1) контрагенты - измерение из БронированиеТоваров  регистра накопления
6 Repinovich
 
21.11.22
22:43
(2) Понял. Но я укстановил параметр и при этом выдаёт ошибку, что он не определен
7 Гипервизор
 
21.11.22
22:46
(6) В параметр передаёте измерение регистра?
8 hockeyist
 
21.11.22
22:46
(6) Нет. Сообщение об ошибке говорит о невозможности установить параметр. Впрочем...
в этом коде плохо, и эта ошибка не последняя.
9 salvator
 
21.11.22
22:49
(6) Написано же: "переменная не определена (Контрагенты)".
10 hockeyist
 
21.11.22
22:51
(8) ... плохо все