Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 21:08

Ошибка с переменными

Автор Владислав777777, 26 июн 2023, 02:28

0 Пользователей и 1 гость просматривают эту тему.

Владислав777777


Процедура ОбработкаПроведения(Отказ, Режим) 
   Движения.ОстаткиНоменклатуры.Записывать = Истина;
    Движения.Продажи.Записывать = Истина;

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

   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры




ОШИБКА({Документ.РасходнаяНакладная.МодульОбъекта(47,20)}: Переменная не определена (СредняяЦена)
      Движение.Сумма = <<?>>СредняяЦена;  (Проверка: Сервер)
{Документ.РасходнаяНакладная.МодульОбъекта(55,28)}: Переменная не определена (Доход)
        Движение.Прибыль = <<?>>Доход; (Проверка: Сервер)


Методы Решения
1 Пытался их объявить и  предать равенство, но из за этого платформа видит это другим типом, лезет ошибка  по Числу.
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      
   СредняяЦена   = ВыборкаДетальныеЗаписи.СуммаОстаток/ВыборкаДетальныеЗаписи.КоличествоОстаток*ВыборкаДетальныеЗаписи.Количество;
    Доход = ВыборкаДетальныеЗаписи.Выручка - ВыборкаДетальныеЗаписи.Сумма
2 Пробовал присвоить естьнулл этим переменным тоже не помогло.

alexandr_ll

Владислав777777, Посмотреть в отладчике, что возвращает переменные
   СредняяЦена   = ВыборкаДетальныеЗаписи.СуммаОстаток/ВыборкаДетальныеЗаписи.КоличествоОстаток*ВыборкаДетальныеЗаписи.Количество;
    Доход = ВыборкаДетальныеЗаписи.Выручка - ВыборкаДетальныеЗаписи.Сумма;
Какая ошибка при назначении переменным нуль?
   СредняяЦена   = 0;
    Доход = 0;

Владислав777777

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

КонецПроцедуры     
Решил проблему                           

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск