Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка при выполнении себестоимости!
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
SPARK44
Всем привет! Помогите пожалуйста разобраться.

При запуске Списание себестоимости когда нажимаю Выполнить списание выдает вот такую ошибку:


 ! 

необходимо зарегистрироваться для просмотра ссылки: 8
 


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

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

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

    ВыборкаПоНоменклатуре = РезультатЗапроса.Выбрать(
        ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока ВыборкаПоНоменклатуре.Следующий() Цикл
    
        
        Если ВыборкаПоНоменклатуре.Количество >
            ВыборкаПоНоменклатуре.КоличествоОстаток Тогда
            
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Остатка товара "
                            + ВыборкаПоНоменклатуре.Номенклатура
                            + " недостаточно. В документе: "
                            + ВыборкаПоНоменклатуре.Количество
                            + " ед., остаток: "
                            + ВыборкаПоНоменклатуре.КоличествоОстаток
                            + " ед. ";
                                
            Сообщение.Сообщить();
            
            РезультатФункции = Ложь;
                            
        Иначе
            
            ТребуетсяСписать =
                ВыборкаПоНоменклатуре.Количество();    
                
            Выборка = ВыборкаПоНоменклатуре.Выбрать();
            
            Пока Выборка.Следующий() Цикл
                
                Если Выборка.КоличествоОстаток <=
                    ТребуетсяСписать Тогда
                    
                КоличествоСписания = Выборка.КоличествоОстаток;
                СуммаСписания = Выборка.СуммаОстаток;
                ТребуетсяСписать = ТребуетсяСписать
                    - КоличествоСписания;

                
            Иначе
                
                КоличествоСписания = ТребуетсяСписать;
                СуммаСписания = Выборка.СуммаОстаток /
                    Выборка.КоличествоОстаток *
                    КоличествоСписания;
                ТребуетсяСписать = 0;

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

НаборЗаписей.Записать();

ЗафиксироватьТранзакцию();

Возврат РезультатФункции;

КонецФункции


что не так в нем?
awp
SPARK44 @ Сегодня, 4:02 необходимо зарегистрироваться для просмотра ссылки ,

В запросе не видно что есть таблица
ОстаткиНоменклатурыОстатки

Замените
ОстаткиНоменклатурыОстатки
на
БронированиеТоваровОстатки
SPARK44
awp @ Сегодня, 9:21 необходимо зарегистрироваться для просмотра ссылки ,
где конкретно заменить? потому что меняю всеравно ошибку эту же выдает
awp
SPARK44 @ Сегодня, 9:37 необходимо зарегистрироваться для просмотра ссылки ,

ТУТ, и проверить есть ли поля нужные в регистре
РегистрНакопления.БронированиеТоваров.Остатки


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