![]() |
![]() |
![]() |
|
Ошибка при проводке документа. | ☑ | ||
---|---|---|---|---|
0
ThugLife
31.03.12
✎
11:12
|
Программно созданный документ не хочет проводится. При этом ошибка возникает не в моем кода, а в общем модуле.
[code]по причине: Ошибка при выполнении обработчика - 'ОбработкаПроведения' по причине: {ОбщийМодуль.УчетНДС.Модуль(79)}: Преобразование значения к типу Булево не может быть выполнено новыйДокумент.Записать(РежимЗаписиДокумента.Проведение);[/code] Код создания документа [code]Если элемент.ИмяУзла = "РасходнаяНакладная" Тогда документРасходнаяНакладная = Документы.РеализацияТоваровУслуг; новыйДокумент = документРасходнаяНакладная.СоздатьДокумент(); новыйДокумент.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия; новыйДокумент.Комментарий = элемент.ПолучитьАтрибут("НомерДокумента"); новыйДокумент.Дата = Дата(элемент.ПолучитьАтрибут("Дата")); названиеСклада = элемент.ПервыйДочерний.ПолучитьАтрибут("Наименование"); Если Справочники.Склады.НайтиПоНаименованию(названиеСклада).Пустая() Тогда склад = Справочники.Склады.СоздатьЭлемент(); видСклада = элемент.ПолучитьЭлементыПоИмени("Клиент").Элемент(0).ПолучитьАтрибут("ВидСклада"); Если видСклада = "Опт" Тогда склад.ВидСклада = Перечисления.ВидыСкладов.Оптовый Иначе Если видСклада = "Розница" Тогда склад.ВидСклада = Перечисления.ВидыСкладов.Розничный Иначе склад.ВидСклада = Перечисления.ВидыСкладов.Оптовый; КонецЕсли; КонецЕсли; склад.Наименование = названиеСклада; склад.Записать(); КонецЕсли; новыйДокумент.ВалютаДокумента = рубли; новыйДокумент.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01"); новыйДокумент.Организация = Организация; новыйДокумент.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.НеЗачитывать; новыйДокумент.Склад = Справочники.Склады.НайтиПоНаименованию(названиеСклада); новыйДокумент.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(элемент.ПолучитьЭлементыПоИмени("Клиент").Элемент(0).ПолучитьАтрибут("Наименование")); табличнаяЧастьУзел = элемент.ПоследнийДочерний; договоры = Справочники.ДоговорыКонтрагентов.Выбрать(, Справочники.Контрагенты.НайтиПоНаименованию(элемент.ПолучитьЭлементыПоИмени("Клиент").Элемент(0).ПолучитьАтрибут("Наименование"))); названиеДоговора = элемент.ПолучитьАтрибут("НазваниеДоговора"); табличнаяЧастьДокумента = новыйДокумент.Товары; Пока договоры.Следующий() Цикл Если договоры.Наименование = названиеДоговора Тогда новыйДокумент.ДоговорКонтрагента = договоры.Ссылка; break; КонецЕсли; КонецЦикла; количество = 0; сумма = 0; Для к = 0 По табличнаяЧастьУзел.ДочерниеУзлы.Количество() - 1 Цикл количество = количество + Число(табличнаяЧастьУзел.ДочерниеУзлы.Элемент(к).ПолучитьАтрибут("Количество")); сумма = сумма + Число(табличнаяЧастьУзел.ДочерниеУзлы.Элемент(к).ПолучитьАтрибут("Сумма")); КонецЦикла; Если количество <> 0 Тогда строкаТабличнойЧасти = табличнаяЧастьДокумента.Добавить(); строкаТабличнойЧасти.Количество = количество; строкаТабличнойЧасти.Цена = сумма / количество; строкаТабличнойЧасти.Сумма = сумма; строкаТабличнойЧасти.Номенклатура = товар; строкаТабличнойЧасти.СчетУчета = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах; строкаТабличнойЧасти.СчетДоходов = ПланыСчетов.Хозрасчетный.ПрочиеДоходы; строкаТабличнойЧасти.СчетРасходов = ПланыСчетов.Хозрасчетный.ПрочиеРасходы; КонецЕсли; новыйДокумент.Записать(РежимЗаписиДокумента.Проведение); Сообщить("Создан документ ""Реализация товаров и услуг""..."); счетФактураВыданный = Документы.СчетФактураВыданный.СоздатьДокумент(); счетФактураВыданный.Дата = новыйДокумент.Дата; счетФактураВыданный.Организация = новыйДокумент.Организация; счетФактураВыданный.Контрагент = новыйДокумент.Контрагент; счетФактураВыданный.ДоговорКонтрагента = новыйДокумент.ДоговорКонтрагента; счетФактураВыданный.ВалютаДокумента = рубли; счетФактураВыданный.ВидСчетаФактуры = Перечисления.НДСВидСчетаФактуры.НаРеализацию; документОснованиеСчетаФактуры = счетФактураВыданный.ДокументыОснования.Добавить(); документОснованиеСчетаФактуры.ДокументОснование = документы.РеализацияТоваровУслуг.НайтиПоНомеру(новыйДокумент.Номер, новыйДокумент.Дата); счетФактураВыданный.Записать(РежимЗаписиДокумента.Проведение); Сообщить("Создан документ ""Счет-фактура выданный""..."); Продолжить; КонецЕсли;[/code] Я долго писал обработку, поэтому у меня соответственно создалось много справочников и документом, и в моей конфигурации (Бухгалтерия) документы все проводятся удачно. Когда пытаюсь запустить на другом компьютере выходит ошибка. Ошибка возникает в этом куске кода: [code] Если ЭтоУслуга Тогда ВидЦенности = Перечисления.ВидыЦенностей.ПрочиеРаботыИУслуги; Иначе ВидЦенности = Перечисления.ВидыЦенностей.Товары; КонецЕсли; [/code] В принципе, почему исключение возникает это понятно, переменная ЭтоУслуга равно Null, но что конкретно эта переменная обозначает и где в моем кода что не присвоилось мне не понятно. |
|||
1
КМ155
31.03.12
✎
11:16
|
(0) а ни чё, что в твоем коде нет НДС, но есть счёт-фактура ?
|
|||
2
ThugLife
31.03.12
✎
11:27
|
Если количество <> 0 Тогда
строкаТабличнойЧасти = табличнаяЧастьДокумента.Добавить(); строкаТабличнойЧасти.Количество = количество; строкаТабличнойЧасти.Цена = сумма / количество; строкаТабличнойЧасти.Сумма = сумма; строкаТабличнойЧасти.Номенклатура = товар; строкаТабличнойЧасти.СчетУчета = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах; строкаТабличнойЧасти.СчетДоходов = ПланыСчетов.Хозрасчетный.ПрочиеДоходы; строкаТабличнойЧасти.СчетРасходов = ПланыСчетов.Хозрасчетный.ПрочиеРасходы; строкаТабличнойЧасти.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; строкаТабличнойЧасти.СуммаНДС = 0; КонецЕсли; Исправил, толку ноль. |
|||
3
КМ155
31.03.12
✎
11:27
|
(2) найми отладчик
|
|||
4
ThugLife
31.03.12
✎
11:30
|
Я минут 10 трассировал общие модули, а до этой строки не добрался.
|
|||
5
ThugLife
01.04.12
✎
13:47
|
Ап...
|
|||
6
vicof
01.04.12
✎
13:55
|
"не в моем кода"
индус? |
|||
7
ThugLife
02.04.12
✎
06:15
|
vicof, еврей.
|
|||
8
Любопытная
02.04.12
✎
06:20
|
ЭтоУслуга - признак номенклатуры.
Что у тебя в переменной "товар"? |
|||
9
Любопытная
02.04.12
✎
06:28
|
На другом компьютере тоже бухгалтерия? Потому что у меня перед теми строками, что ты указал, в бухгалтерии есть проверка на Null
|
|||
10
ThugLife
02.04.12
✎
07:01
|
Осуществляется перенос данных из самописной конфигурации в бухгалтерию. Так как решили что бухгалтерам не важно знать какие товары продавались, решили завести в номенклатуре элемент с наименованием "Товар".
|
|||
11
ThugLife
02.04.12
✎
07:01
|
товар = Справочники.Номенклатура.НайтиПоНаименованию("Товар");
|
|||
12
ThugLife
02.04.12
✎
07:08
|
На другом тоже бухгалтерия.
|
|||
13
Рэйв
02.04.12
✎
07:15
|
Скорее всего у тебя ЭтоУслуга не булево, а строка или еще что-нить такое же неудобоваримое для Если.
Пробуй Если ЭтоУслуга= Истина Тогда Ругаться не будет, но в условие скорее всего никогда не войдет |
|||
14
ThugLife
02.04.12
✎
07:20
|
Оказывается товар, находился как группа справочника, а не как элемент, поставил чувствительность при поиске. Любопытная, спасибо.
|
|||
15
ThugLife
02.04.12
✎
07:21
|
Рэйв эта ошибка возникает в общем модуле, не в моем. А общий модуль править не хочется.
|
|||
16
Godofsin
02.04.12
✎
07:23
|
(14) Всегда лучше позиционироваться по коду в таких случаях
|
|||
17
Рэйв
02.04.12
✎
07:23
|
тогда смотри что в общем модуле сидит в ЭтоУслуга.Может что-то не то передается
|
|||
18
Godofsin
02.04.12
✎
07:26
|
+(16) А нее, это ж обмен.
|
|||
19
Мимохожий Однако
02.04.12
✎
07:37
|
При создании элемента номенклатуры или поиске проверь, что это услуга или товар. Если услуга, то эта номенклатура не должна попадать в табличную часть товары. Проверь переменную "Товар" в момент заполнения.
|
|||
20
ThugLife
02.04.12
✎
07:41
|
Проблема решена. Просто в строке
Справочники.Номенклатура.НайтиПоНаименованию("Товар") Находилась группа справочника "Товары". Сейчас передал второй параметр, теперь ищет точное соответствие. Справочники.Номенклатура.НайтиПоНаименованию("Товар", Истина) Всем спасибо. |
|||
21
ThugLife
02.04.12
✎
07:41
|
И как тут код выделять?
|
|||
22
Godofsin
02.04.12
✎
07:50
|
(21) Да да... я не глянул, что может использоваться для разных БД
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |