|
СверткаБазы: Значение не является значением объектного типа | ☑ | ||
---|---|---|---|---|
0
pnamik
10.03.14
✎
10:21
|
Текст ошибки:
{ВнешняяОбработка.СверткаБазы(149)}: Значение не является значением объектного типа (ПриходныйДокумент) СпрП.ПриходныйДокумент = ДокументОстатков.Ссылка; Модуль свертки: Процедура ДобавитьЗаписьНоменклатурыВТЧ(ДокументОстатков,Номенклатура,Количество,СтрокаВыборки,РозничнаяЦена) Нстр = ДокументОстатков.Накладная.Добавить(); НСтр.Артикул = Номенклатура.Артикул; НСтр.Штрихкод = СокрЛП(Номенклатура.ТекШтрихКод); Нстр.Номенклатура = Номенклатура; Нстр.Количество = Количество; НСтр.Единица = Номенклатура.Единица; НСтр.Коэффициент = Номенклатура.Коэффициент; Если ТипЗнч(СтрокаВыборки) = Тип("СправочникСсылка.Партии") Тогда Отбор = Новый Структура; Отбор.Вставить("Номенклатура",Номенклатура); СтрокиТаб = ДокументОстатков.Накладная.НайтиСтроки(Отбор); Если СтрокиТаб.Количество() > 0 Тогда ЗначСтроки = СтрокиТаб.Получить(0); Если ЗначСтроки.ЦенаПоступления > 0 Тогда НСтр.ЦенаПоступления = ЗначСтроки.ЦенаПоступления; Иначе НСтр.ЦенаПоступления = РозничнаяЦена; КонецЕсли; Иначе НСтр.ЦенаПоступления = РозничнаяЦена; КонецЕсли; НСтр.Партия = СтрокаВыборки; Иначе Попытка НСтр.ЦенаПоступления = СтрокаВыборки.СуммаОстаток/СтрокаВыборки.КоличествоОстаток; Исключение НСтр.ЦенаПоступления = РозничнаяЦена; КонецПопытки; СпрП = СтрокаВыборки.Партия.ПолучитьОбъект(); СпрП.ПриходныйДокумент = ДокументОстатков.Ссылка; СпрП.Записать(); НСтр.Партия = СтрокаВыборки.Партия; КонецЕсли; НСтр.Сумма = Нстр.ЦенаПоступления * Нстр.Коэффициент * НСтр.Количество; НСтр.РозничнаяЦена = РозничнаяЦена; НСтр.СуммаРозница = Нстр.РозничнаяЦена * Нстр.Коэффициент * НСтр.Количество; Нстр.СтавкаНДС = Номенклатура.СтавкаНДС; НДС = Нстр.Сумма * Нстр.СтавкаНДС.Ставка/(100+Нстр.СтавкаНДС.Ставка); НСтр.СуммаНДС = НДС; НСтр.СуммаБезНДС = НСтр.Сумма - НДС; КонецПроцедуры Как исправить ошибку? Помогите, пожалуйста |
|||
1
mulmulya
10.03.14
✎
10:24
|
отладчиком пробовали?
|
|||
2
pnamik
10.03.14
✎
10:33
|
Проверил, выдает ту же ошибку
|
|||
3
shuhard
10.03.14
✎
10:51
|
(2)[выдает ту же ошибку]
значит нет ДокументОстатков.Ссылка; |
|||
4
GANR
10.03.14
✎
10:54
|
(0) А именно стек вызовов пробовали смотреть? Что это за переменная ДокументОстатков передается а процедуру и может ли у нее быть поле Ссылка?
|
|||
5
NcSteel
10.03.14
✎
10:57
|
(0) Попробуй сделай так:
СпрП = Новая Структура("ПриходныйДокумент", Неопределено); Должно помочь. |
|||
6
GANR
10.03.14
✎
11:02
|
А это что за явление пупа народу???
СпрП = СтрокаВыборки.Партия.ПолучитьОбъект(); СпрП.ПриходныйДокумент = ДокументОстатков.Ссылка; Зачем так было написано? |
|||
7
GANR
10.03.14
✎
11:03
|
+(6) а нет-нет - это нормально
|
|||
8
pnamik
10.03.14
✎
11:11
|
+(5) Вместо:
СпрП = СтрокаВыборки.Партия.ПолучитьОбъект(); СпрП.ПриходныйДокумент = ДокументОстатков.Ссылка; СпрП.Записать(); Добавить: СпрП = Новая Структура("ПриходныйДокумент", Неопределено); СпрП.ПриходныйДокумент = ДокументОстатков.Ссылка; СпрП.Записать(); Правильно? |
|||
9
NcSteel
10.03.14
✎
11:12
|
(8) В каком документе или справочнике вы пытаетесь заполнить реквизит "ПриходныйДокумент". Как он называется?
|
|||
10
pnamik
10.03.14
✎
11:32
|
Привожу весь текст (т.к. сам не понимаю):
Процедура ВыполнитьПометкуНаУдалениеДокментов() Экспорт //Отмена проведения и установка пометки на удаление документов Для Сч=0 ПО Метаданные.Документы.Количество()-1 Цикл ИмяДок = Метаданные.Документы.Получить(Сч).Имя; Док = Документы[ИмяДок].Выбрать(,КонецДня(ДатаСвертки)); Пока Док.Следующий() Цикл Если ИмяДок = "ВводОстатковТМЦ" Тогда Если Док.Дата = КонецДня(ДатаСвертки)-600 Тогда Продолжить; КонецЕсли; КонецЕсли; Если Док.Проведен = Истина Тогда ДК = Док.ПолучитьОбъект(); Попытка ДК.УстановитьПометкуУдаления(Истина); Состояние(ДК); Исключение КонецПопытки; Иначе ДК = Док.ПолучитьОбъект(); Попытка ДК.УстановитьПометкуУдаления(Истина); Состояние(ДК); Исключение КонецПопытки; КонецЕсли; ТекстЗапроса = "ВЫБРАТЬ | Партии.Ссылка КАК СпрСсылка |ИЗ | Справочник.Партии КАК Партии |ГДЕ | Партии.ПриходныйДокумент = &ПриходныйДокумент"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("ПриходныйДокумент", Дк.Ссылка); СписокПартий = Запрос.Выполнить().Выбрать(); Пока СписокПартий.Следующий() Цикл Попытка ПартияОбъект = СписокПартий.СпрСсылка.ПолучитьОбъект(); ПартияОбъект.ПриходныйДокумент = Документы.ПриходнаяНакладная.ПустаяСсылка(); ПартияОбъект.Записать(); Исключение Продолжить; КонецПопытки; Попытка ПартияОбъект.УстановитьПометкуУдаления(Истина); Исключение КонецПопытки; КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры Функция СоздатьДокументОстатков() Док = Документы.ВводОстатковТМЦ.СоздатьДокумент(); Док.Дата = КонецДня(ДатаСвертки)-600; Док.КодОперации = Перечисления.КодыОпераций.ВводОстатковТМЦ; Док.Автор = глПользователь; Док.Склад = Константы.ОсновнойСклад.Получить(); Док.УчитыватьНДС = Истина; Док.СуммаВклНДС = Истина; Док.Комментарий = "Администратор. Свертка остатков товаров и партий!"; Док.Представление = "Оприходование остатков ТМЦ (свертка)"; Док.НеВыгружать = Истина; Док.Выгружен = Истина; Док.Записать(РежимЗаписиДокумента.Запись); Возврат Док; КонецФункции Процедура ЗавершитьДокументОстатков(ДокументОстатков) ДокументОстатков.СуммаИтог = ДокументОстатков.Накладная.Итог("Сумма"); ДокументОстатков.Записать(РежимЗаписиДокумента.Запись); ДокументОстатков.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный); Сообщить("Создан документ с остатками "+СокрЛП(ДокументОстатков)); КонецПроцедуры Функция ВыборкаОстатковПартий(Номенклатура) ТекстЗапроса = "ВЫБРАТЬ | ДвиженияПоПартиямОстатки.КоличествоОстаток, | ДвиженияПоПартиямОстатки.СуммаОстаток, | ДвиженияПоПартиямОстатки.Партия |ИЗ | РегистрНакопления.ДвиженияПоПартиям.Остатки(&КонПериода, Номенклатура = &Номенклатура) КАК ДвиженияПоПартиямОстатки |ГДЕ | ДвиженияПоПартиямОстатки.КоличествоОстаток > &МинОстаток | |УПОРЯДОЧИТЬ ПО | ДвиженияПоПартиямОстатки.Партия.ПриходныйДокумент.Дата УБЫВ"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("КонПериода",КонецДня(ДатаСвертки)); Запрос.УстановитьПараметр("МинОстаток",0); Запрос.УстановитьПараметр("Номенклатура",Номенклатура); Результат = Запрос.Выполнить(); Возврат Результат; КонецФункции Функция СоздатьНовуюПартию(Номенклатура,ДокументОстатков) спрП = Справочники.Партии.СоздатьЭлемент(); спрП.Владелец = Номенклатура.Ссылка; спрП.Записать(); спрП.ПриходныйДокумент = ДокументОстатков.Ссылка; спрП.СтранаПроисхождения = Номенклатура.СтранаПроисхождения; спрП.Поставщик = Справочники.Контрагенты.ГарантРесурс; спрП.Записать(); Возврат спрП.Ссылка; КонецФункции Процедура ДобавитьЗаписьНоменклатурыВТЧ(ДокументОстатков,Номенклатура,Количество,СтрокаВыборки,РозничнаяЦена) Нстр = ДокументОстатков.Накладная.Добавить(); НСтр.Артикул = Номенклатура.Артикул; НСтр.Штрихкод = СокрЛП(Номенклатура.ТекШтрихКод); Нстр.Номенклатура = Номенклатура; Нстр.Количество = Количество; НСтр.Единица = Номенклатура.Единица; НСтр.Коэффициент = Номенклатура.Коэффициент; Если ТипЗнч(СтрокаВыборки) = Тип("СправочникСсылка.Партии") Тогда Отбор = Новый Структура; Отбор.Вставить("Номенклатура",Номенклатура); СтрокиТаб = ДокументОстатков.Накладная.НайтиСтроки(Отбор); Если СтрокиТаб.Количество() > 0 Тогда ЗначСтроки = СтрокиТаб.Получить(0); Если ЗначСтроки.ЦенаПоступления > 0 Тогда НСтр.ЦенаПоступления = ЗначСтроки.ЦенаПоступления; Иначе НСтр.ЦенаПоступления = РозничнаяЦена; КонецЕсли; Иначе НСтр.ЦенаПоступления = РозничнаяЦена; КонецЕсли; НСтр.Партия = СтрокаВыборки; Иначе Попытка НСтр.ЦенаПоступления = СтрокаВыборки.СуммаОстаток/СтрокаВыборки.КоличествоОстаток; Исключение НСтр.ЦенаПоступления = РозничнаяЦена; КонецПопытки; СпрП = СтрокаВыборки.Партия.ПолучитьОбъект(); СпрП.Записать(); НСтр.Партия = СтрокаВыборки.Партия; КонецЕсли; НСтр.Сумма = Нстр.ЦенаПоступления * Нстр.Коэффициент * НСтр.Количество; НСтр.РозничнаяЦена = РозничнаяЦена; НСтр.СуммаРозница = Нстр.РозничнаяЦена * Нстр.Коэффициент * НСтр.Количество; Нстр.СтавкаНДС = Номенклатура.СтавкаНДС; НДС = Нстр.Сумма * Нстр.СтавкаНДС.Ставка/(100+Нстр.СтавкаНДС.Ставка); НСтр.СуммаНДС = НДС; НСтр.СуммаБезНДС = НСтр.Сумма - НДС; КонецПроцедуры Процедура СвернутьОстаткиПартии() Экспорт ТекстЗапроса = "ВЫБРАТЬ | ОстаткиТМЦОстатки.Номенклатура, | ОстаткиТМЦОстатки.КоличествоОстаток, | РозничныеЦеныСрезПоследних.РозничнаяЦена |ИЗ | РегистрНакопления.ОстаткиТМЦ.Остатки(&КонПериода, ) КАК ОстаткиТМЦОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РозничныеЦены.СрезПоследних(&КонПериода, ) КАК РозничныеЦеныСрезПоследних | ПО ОстаткиТМЦОстатки.Номенклатура = РозничныеЦеныСрезПоследних.Номенклатура"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("КонПериода",КонецДня(ДатаСвертки)); Выборка = Запрос.Выполнить().Выбрать(); СоздаватьНовыйДокумент = Ложь; ДокументОстатков = СоздатьДокументОстатков(); КолСтрок = 0; Пока Выборка.Следующий() Цикл Если Выборка.КоличествоОстаток <= 0 Тогда Продолжить; КонецЕсли; Если Выборка.Номенклатура.ЭтоГруппа = Истина Тогда Продолжить; КонецЕсли; Если СоздаватьНовыйДокумент = Истина Тогда ЗавершитьДокументОстатков(ДокументОстатков); СоздаватьНовыйДокумент = Ложь; ДокументОстатков = СоздатьДокументОстатков(); КонецЕсли; ВыборкаПартий = ВыборкаОстатковПартий(Выборка.Номенклатура.Ссылка).Выбрать(); ТекОстаток = Выборка.КоличествоОстаток; Если ВыборкаПартий.Количество() > 0 Тогда Пока ВыборкаПартий.Следующий() Цикл Если ВыборкаПартий.КоличествоОстаток <= ТекОстаток Тогда ТекОстаток = ТекОстаток - ВыборкаПартий.КоличествоОстаток; ДобавитьЗаписьНоменклатурыВТЧ(ДокументОстатков,Выборка.Номенклатура,ВыборкаПартий.КоличествоОстаток,ВыборкаПартий,Выборка.РозничнаяЦена); КолСтрок = КолСтрок + 1; Иначе ДобавитьЗаписьНоменклатурыВТЧ(ДокументОстатков,Выборка.Номенклатура,ТекОстаток,ВыборкаПартий,Выборка.РозничнаяЦена); КолСтрок = КолСтрок + 1; ТекОстаток = 0; КонецЕсли; Если ТекОстаток = 0 Тогда Прервать; КонецЕсли; КонецЦикла; КонецЕсли; Если ТекОстаток > 0 Тогда НовПартия = СоздатьНовуюПартию(Выборка.Номенклатура,ДокументОстатков); ДобавитьЗаписьНоменклатурыВТЧ(ДокументОстатков,Выборка.Номенклатура,ТекОстаток,НовПартия,Выборка.РозничнаяЦена); КолСтрок = КолСтрок + 1; КонецЕсли; Состояние("Обработано строк документа: "+Строка(КолСтрок)); Если Колстрок >= 1000 Тогда КолСтрок = 0; СоздаватьНовыйДокумент = Истина; КонецЕсли; КонецЦикла; Если КолСтрок > 0 Тогда ЗавершитьДокументОстатков(ДокументОстатков); КонецЕсли; КонецПроцедуры |
|||
11
pnamik
10.03.14
✎
14:43
|
Знатоки, как исправить ошибку?
|
|||
12
shuhard
10.03.14
✎
15:03
|
(11) это не лечиться
|
|||
13
NcSteel
10.03.14
✎
18:14
|
(10) Ответ на вопрос (9) Можно всеже услышать?
|
|||
14
toys
10.03.14
✎
19:00
|
походу СпрП = неопределено
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |