helpf.pro
Регистрация

v8: Странная ошибка , при проведении созданого документа программно

stanislavyakuza
18.04.2012 14:58Прочитано: 14019
Здравствуйте!
Помогите разобраться голову сломал.Почему так?
При создании документа программно, заполняю его.После записываю док(если сразу првожу нарываюсь на ошибку , далее).Захожу в документ нажимаю провести И нарываюсь на ошибку - "Запись не верна",значение поля склад не может быть пустым.Хотя склад заполнен и если даже перезаполню склад не помогает, если пробую сделать тоже самое создаю документ в программе выбираю тот же склад все нормально.

Вот кусок кода моей обработки:
////Данные для документа////
Товар10 = Справочники.Номенклатура.НайтиПоКоду("260867");
Товар18 = Справочники.Номенклатура.НайтиПоКоду("260868");
Рубль = Справочники.Валюты.НайтиПоКоду("643");
Менеджер = Справочники.Пользователи.НайтиПоНаименованию("Администратор");
Организация = Справочники.Организации.НайтиПоНаименованию("Авоська");
Подразделение = справочники.СтруктураПредприятия.НайтиПоКоду(Значение.Подразделение);
Партнер = Справочники.Партнеры.НайтиПоКоду(Значение.Контрагент);
////////////////////////////////
// Создадим док поступление
ДокПоступление = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
ДокПоступление.Дата = Объект.ДатаПрихода;
ДокПоступление.Организация = Организация;
ДокПоступление.Склад = Объект.Склад;
Если ПустаяСтрока(Партнер) Тогда
Сообщить("Не найден контрагент с кодом"+Значение.Контрагент);
спрПартнер = Справочники.Партнеры.СоздатьЭлемент();
спрПартнер.Наименование = "Смотрите название в джестори по коду"+Значение.Контрагент;

спрПартнер.Код = Значение.Контрагент;
спрПартнер.Клиент = Истина;
спрПартнер.Поставщик=Истина;
спрПартнер.Записать();
КонецЕсли;
Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Партнер);

ДокПоступление.Партнер = Партнер;

Если ПустаяСтрока(Контрагент) Тогда
спрКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
спрКонтрагент.Наименование = Партнер.Наименование;
спрКонтрагент.Партнер = Партнер;
спрКонтрагент.Записать();
КонецЕсли;

ДокПоступление.Валюта = рубль;
ДокПоступление.Подразделение = Подразделение;
ДокПоступление.ХозяйственнаяОперация = ПеречислениЯ.ХозяйственныеОперации.ЗакупкаУПоставщика;
ДокПоступление.ДатаПлатежа = Объект.ДатаПрихода;
ДокПоступление.ВалютаВзаиморасчетов = Рубль;
ДокПоступление.ЦенаВключаетНДС = Истина;
ДокПоступление.НалогообложениеНДС = ПеречислениЯ.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС;
ДокПоступление.Менеджер = Менеджер;
ДокПоступление.Контрагент = Контрагент;

ТабЧ = ДокПоступление.Товары.Добавить();
Если Значение.Ставка = "18" Тогда
Ном=Товар18;
СумНдс= (Значение.сумма/100)*18;
Ставка = ПеречислениЯ.СтавкиНДС.НДС18;
Иначе
СумНдс = (Значение.сумма/100)*10;
ном=товар10;
Ставка = ПеречислениЯ.СтавкиНДС.НДС10;
КонецЕсли;
ТабЧ.Номенклатура = ном;
ТабЧ.КоличествоУпаковок = 1;
Табч.Количество = 1;
Табч.Цена = Значение.Сумма;
Табч.Сумма = Значение.сумма;
Табч.СтавкаНДС = Ставка;
ТабЧ.СуммаНДС = СумНДС;
////Попытка
////Исключение
ДокПоступление.Записать();//(РежимЗаписиДокумента.Проведение);
Yandex
Возможно, вас также заинтересует
Реклама на портале
Mokey
18.04.2012 15:05Ответ № 1
Из кода ничего непонятно, если Вы говорите, что эта часть работает без проблем, то надо анализировать ту, которая выдаёт ошибку. Такая ошибка возникает тогда, когда в регистре накопления, по которому проводится документ, на реквизит склад наложено ограничение на запись пустых полей. Надо смотреть проведение документа и связь элемента формы Склад с реквизитом документа Склад. Скорее всего они есть что-то каждый сам по себе.
stanislavyakuza
18.04.2012 15:46Ответ № 2
Благодарю вас ). Не стал разбираться как там все цепляется, оказалось что у каждой строки в табличной части имеется поле склад который так не увидишь.Также аналогичная ситуация у поля(в таб части) "СуммаСНДС"- она же себестоимость и "сумма взаиморасчетов".
Подсказка: Для редактирования своего ответа щелкните по значку (справа)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.