Ошибка при выполнении себестоимости! , Ошибка при выполнении себестоимости
28.09.18, 3:02
Молчаливый
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0
Всем привет! Помогите пожалуйста разобраться.
При запуске Списание себестоимости когда нажимаю Выполнить списание выдает вот такую ошибку:
Вот код Функция СписатьСебестоимость(ДокументСсылка) Экспорт РезультатФункции = Истина; НачатьТранзакцию( РежимУправленияБлокировкойДанных.Управляемый); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", ДокументСсылка); Запрос.Текст = "ВЫБРАТЬ | ПродажаТоваров.Дата, | ПродажаТоваров.Склад |ИЗ | Документ.ПродажаТоваров КАК ПродажаТоваров |ГДЕ | ПродажаТоваров.Ссылка = &Ссылка"; Шапка = Запрос.Выполнить().Выбрать(); Шапка.Следующий(); УчетнаяПолитика = РегистрыСведений.УчетнаяПолитика. ПолучитьПоследнее(Шапка.Дата); СпособСписания = УчетнаяПолитика. СпособСписанияСебестоимости; ТекстЗапросаПорядок = ""; Если СпособСписания = Перечисления.СпособыСписанияСебестоимости.ЛИФО Тогда ТекстЗапросаПорядок = " УБЫВ"; КонецЕсли; Запрос.Текст = "ВЫБРАТЬ | ПродажаТоваров.Склад, | ПродажаТоваровТовары.Номенклатура |ИЗ | Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПродажаТоваров КАК ПродажаТоваров | ПО ПродажаТоваровТовары.Ссылка = ПродажаТоваров.Ссылка |ГДЕ | ПродажаТоваров.Ссылка = &Ссылка"; ДанныеБлокировки = Запрос.Выполнить().Выгрузить(); Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить( "РегистрНакопления.ОстаткиНоменклатуры"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; ЭлементБлокировки.ИсточникДанных = ДанныеБлокировки; ЭлементБлокировки.ИспользоватьИзИсточникаДанных( "Номенклатура", "Номенклатура"); ЭлементБлокировки.ИспользоватьИзИсточникаДанных( "Склад", "Склад"); Блокировка.Заблокировать(); НаборЗаписей = РегистрыНакопления. ОстаткиНоменклатуры.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить( ДокументСсылка); НаборЗаписей.Записать(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажаТоваровТовары.Номенклатура КАК Номенклатура, | СУММА(ПродажаТоваровТовары.Количество) КАК Количество, | МИНИМУМ(ПродажаТоваровТовары.НомерСтроки) КАК НомерСтроки |ПОМЕСТИТЬ ТаблицаДокумента |ИЗ | Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары |ГДЕ | ПродажаТоваровТовары.Ссылка = &Ссылка | И ПродажаТоваровТовары.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Товар) | |СГРУППИРОВАТЬ ПО | ПродажаТоваровТовары.Номенклатура | |ИНДЕКСИРОВАТЬ ПО | Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаДокумента.Номенклатура КАК Номенклатура, | ТаблицаДокумента.Количество КАК Количество, | ТаблицаДокумента.НомерСтроки КАК НомерСтроки, | ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток, | ОстаткиНоменклатурыОстатки.Партия, | ЕСТЬNULL(БронированиеТоваровОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокЗабронировано |ИЗ | ТаблицаДокумента КАК ТаблицаДокумента | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.БронированиеТоваров.Остатки( | &МоментДокумента, | Склад = &Склад | И Номенклатура В | (ВЫБРАТЬ | ТаблицаДокумента.Номенклатура | ИЗ | ТаблицаДокумента КАК ТаблицаДокумента)) КАК БронированиеТоваровОстатки | ПО ТаблицаДокумента.Номенклатура = БронированиеТоваровОстатки.Номенклатура | |УПОРЯДОЧИТЬ ПО | ОстаткиНоменклатурыОстатки.Партия.МоментВремени" + ТекстЗапросаПорядок + " |ИТОГИ | МАКСИМУМ(Количество), | МАКСИМУМ(НомерСтроки), | СУММА(КоличествоОстаток) |ПО | Номенклатура"; Запрос.УстановитьПараметр("МоментДокумента", ДокументСсылка.МоментВремени()); Запрос.УстановитьПараметр("Склад", Шапка.Склад); Запрос.УстановитьПараметр("Ссылка", ДокументСсылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаПоНоменклатуре = РезультатЗапроса.Выбрать( ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоНоменклатуре.Следующий() Цикл Если ВыборкаПоНоменклатуре.Количество > ВыборкаПоНоменклатуре.КоличествоОстаток Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Остатка товара " + ВыборкаПоНоменклатуре.Номенклатура + " недостаточно. В документе: " + ВыборкаПоНоменклатуре.Количество + " ед., остаток: " + ВыборкаПоНоменклатуре.КоличествоОстаток + " ед. "; Сообщение.Сообщить(); РезультатФункции = Ложь; Иначе ТребуетсяСписать = ВыборкаПоНоменклатуре.Количество(); Выборка = ВыборкаПоНоменклатуре.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.КоличествоОстаток <= ТребуетсяСписать Тогда КоличествоСписания = Выборка.КоличествоОстаток; СуммаСписания = Выборка.СуммаОстаток; ТребуетсяСписать = ТребуетсяСписать - КоличествоСписания; Иначе КоличествоСписания = ТребуетсяСписать; СуммаСписания = Выборка.СуммаОстаток / Выборка.КоличествоОстаток * КоличествоСписания; ТребуетсяСписать = 0; КонецЕсли; Движение = НаборЗаписей.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Шапка.Дата; Движение.Номенклатура = Выборка.Номенклатура; Движение.Склад = Шапка.Склад; Движение.Количество = КоличествоСписания; Движение.Сумма = СуммаСписания; Движение.Партия = Выборка.Партия; Если ТребуетсяСписать = 0 Тогда Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; НаборЗаписей.Записать(); ЗафиксироватьТранзакцию(); Возврат РезультатФункции; КонецФункции
что не так в нем?
Сообщение отредактировал Vofka - 01.10.18, 8:17
28.09.18, 8:21
Почти ветеран
Группа: Местный
Сообщений: 520
Спасибо сказали: 70 раз
Рейтинг: 51.3
SPARK44 @ Сегодня, 4:02
,
В запросе не видно что есть таблица
ОстаткиНоменклатурыОстатки
Замените
ОстаткиНоменклатурыОстатки
на
БронированиеТоваровОстатки
Бухгалтер - это не профессия! Это диагноз!
28.09.18, 8:37
Молчаливый
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0
awp @ Сегодня, 9:21
,
где конкретно заменить? потому что меняю всеравно ошибку эту же выдает
28.09.18, 8:58
Почти ветеран
Группа: Местный
Сообщений: 520
Спасибо сказали: 70 раз
Рейтинг: 51.3
SPARK44 @ Сегодня, 9:37
,
ТУТ, и проверить есть ли поля нужные в регистре
РегистрНакопления.БронированиеТоваров.Остатки
|ВЫБРАТЬ | ТаблицаДокумента.Номенклатура КАК Номенклатура, | ТаблицаДокумента.Количество КАК Количество, | ТаблицаДокумента.НомерСтроки КАК НомерСтроки, | ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток, | ОстаткиНоменклатурыОстатки.Партия, | ЕСТЬNULL(БронированиеТоваровОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокЗабронировано |ИЗ | ТаблицаДокумента КАК ТаблицаДокумента | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.БронированиеТоваров.Остатки( | &МоментДокумента, | Склад = &Склад | И Номенклатура В | (ВЫБРАТЬ | ТаблицаДокумента.Номенклатура | ИЗ | ТаблицаДокумента КАК ТаблицаДокумента)) КАК БронированиеТоваровОстатки | ПО ТаблицаДокумента.Номенклатура = БронированиеТоваровОстатки.Номенклатура | |УПОРЯДОЧИТЬ ПО | ОстаткиНоменклатурыОстатки.Партия.МоментВремени" + ТекстЗапросаПорядок + " |ИТОГИ | МАКСИМУМ(Количество), | МАКСИМУМ(НомерСтроки), | СУММА(КоличествоОстаток) |ПО | Номенклатура";
Бухгалтер - это не профессия! Это диагноз!
Не нашли ответа на свой вопрос?
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!