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

Хранилище

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

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



> Ошибка при выполнении себестоимости! , Ошибка при выполнении себестоимости          
SPARK44 Подменю пользователя
сообщение 28.09.18, 3:02
Сообщение #1

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

Всем привет! Помогите пожалуйста разобраться.

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


 ! 

Правила: 8
 


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

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

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

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

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

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

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

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

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

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

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


что не так в нем?

Сообщение отредактировал Vofka - 01.10.18, 8:17

awp Подменю пользователя
сообщение 28.09.18, 8:21
Сообщение #2

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 520
Спасибо сказали: 70 раз
Рейтинг: 51.3

SPARK44 @ Сегодня, 4:02 * ,

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

Замените
ОстаткиНоменклатурыОстатки
на
БронированиеТоваровОстатки


Signature
Бухгалтер - это не профессия! Это диагноз!

SPARK44 Подменю пользователя
сообщение 28.09.18, 8:37
Сообщение #3

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

awp @ Сегодня, 9:21 * ,
где конкретно заменить? потому что меняю всеравно ошибку эту же выдает

awp Подменю пользователя
сообщение 28.09.18, 8:58
Сообщение #4

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 520
Спасибо сказали: 70 раз
Рейтинг: 51.3

SPARK44 @ Сегодня, 9:37 * ,

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


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


Signature
Бухгалтер - это не профессия! Это диагноз!

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


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

 

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