Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 сен 2021, 08:53

Ошибка "Поле объекта не обнаружено (Валюта)"

Автор mrFoxit, 30 янв 2015, 23:50

0 Пользователей и 1 гость просматривают эту тему.

mrFoxit

Общие модули.
        ПродажиСервер

Процедура ЗаполнитьЭтапыГрафикаОплатыПоШаблону(ДокументРеализации,
                                           Знач СуммаКРаспределениюОплаты,
                                           Знач СуммаКРаспределениюЗалога = 0,
                                           ШаблонГрафика,
                                           Знач Календарь) Экспорт

ЭтапыГрафикаОплаты = Новый ТаблицаЗначений();

ЭтапыГрафикаОплаты.Колонки.Добавить("ВариантОплаты");
ЭтапыГрафикаОплаты.Колонки.Добавить("ДатаПлатежа");
ЭтапыГрафикаОплаты.Колонки.Добавить("ПроцентПлатежа");
ЭтапыГрафикаОплаты.Колонки.Добавить("СуммаПлатежа");
ЭтапыГрафикаОплаты.Колонки.Добавить("ПроцентЗалогаЗаТару");
ЭтапыГрафикаОплаты.Колонки.Добавить("СуммаЗалогаЗаТару");

РаспределеннаяСуммаОплаты = 0;
РаспределеннаяСуммаЗалога = 0;
ТекущийЭтап               = 0;
ОдинДень                  = 86400;

КоличествоЭтапов = ШаблонГрафика.Количество();

ДатаДокумента = ?(ЗначениеЗаполнено(ДокументРеализации.Дата), ДокументРеализации.Дата, ТекущаяДата());
ДатаРеализации = ДокументРеализации.ЖелаемаяДатаОтгрузки;

// Определим календарную дату для каждого этапа графика оплаты
УчитыватьКалендарь = Ложь;

Если ЗначениеЗаполнено(Календарь) Тогда

УчитыватьКалендарь = Истина;

СдвигиАвансовыхЭтапов = Новый Массив();
СдвигиКредитныхЭтапов = Новый Массив();
МассивДатПоКалендарю  = Новый Массив();

Для Каждого Этап Из ШаблонГрафика Цикл

Если Этап.ВариантОплаты = Перечисления.ВариантыОплатыКлиентом.ПредоплатаДоОтгрузки Или
Этап.ВариантОплаты = Перечисления.ВариантыОплатыКлиентом.АвансДоОбеспечения Тогда
СдвигиАвансовыхЭтапов.Добавить(Этап.Сдвиг);
Иначе
СдвигиКредитныхЭтапов.Добавить(Этап.Сдвиг);
КонецЕсли;

КонецЦикла;

Если СдвигиАвансовыхЭтапов.Количество() > 0 Тогда

МассивДатПоКалендарюАвансовыхЭтапов = КалендарныеГрафики.ПолучитьМассивДатПоКалендарю(Календарь, ДатаДокумента, СдвигиАвансовыхЭтапов);

Для Каждого ДатаПоКалендарю Из МассивДатПоКалендарюАвансовыхЭтапов Цикл
МассивДатПоКалендарю.Добавить(ДатаПоКалендарю);
КонецЦикла;

КонецЕсли;

Если СдвигиКредитныхЭтапов.Количество() > 0 Тогда

Если Не ЗначениеЗаполнено(ДатаРеализации) Тогда

Если СдвигиАвансовыхЭтапов.Количество() > 0 Тогда
Если МассивДатПоКалендарюАвансовыхЭтапов.Количество() > 0 Тогда
ДатаРеализации = МассивДатПоКалендарюАвансовыхЭтапов[МассивДатПоКалендарюАвансовыхЭтапов.Количество()-1];
КонецЕсли;
Иначе
ДатаРеализации = ДатаДокумента;
КонецЕсли;

КонецЕсли;

МассивДатПоКалендарюКредитныхЭтапов = КалендарныеГрафики.ПолучитьМассивДатПоКалендарю(Календарь, ДатаРеализации, СдвигиКредитныхЭтапов);

Для Каждого ДатаПоКалендарю Из МассивДатПоКалендарюКредитныхЭтапов Цикл
МассивДатПоКалендарю.Добавить(ДатаПоКалендарю);
КонецЦикла;

КонецЕсли;

Иначе

Если Не ЗначениеЗаполнено(ДатаРеализации) Тогда

МаксСдвигАванса = 0;

Для Каждого ТекЭтап Из ШаблонГрафика Цикл

Если ТекЭтап.ВариантОплаты = Перечисления.ВариантыОплатыКлиентом.ПредоплатаДоОтгрузки Или
ТекЭтап.ВариантОплаты = Перечисления.ВариантыОплатыКлиентом.АвансДоОбеспечения Тогда

МаксСдвигАванса = Макс(МаксСдвигАванса, ТекЭтап.Сдвиг);

КонецЕсли;

КонецЦикла;

ДатаРеализации = ДатаДокумента + МаксСдвигАванса * ОдинДень;

КонецЕсли;

КонецЕсли;

//Определим последний незалоговый этап
ПоследнийНезалоговыйЭтап = КоличествоЭтапов;
Пока ПоследнийНезалоговыйЭтап <> 0 И ШаблонГрафика[ПоследнийНезалоговыйЭтап-1].ПроцентПлатежа = 0 Цикл
ПоследнийНезалоговыйЭтап = ПоследнийНезалоговыйЭтап - 1;
КонецЦикла;

//Определим последний залоговый этап
ПоследнийЗалоговыйЭтап = КоличествоЭтапов;
Пока ПоследнийЗалоговыйЭтап <> 0 И ШаблонГрафика[ПоследнийЗалоговыйЭтап-1].ПроцентЗалогаЗаТару = 0 Цикл
ПоследнийЗалоговыйЭтап = ПоследнийЗалоговыйЭтап - 1;
КонецЦикла;

// Заполним этапы в соответствии с графиком оплаты
ДокументРеализации.ЭтапыГрафикаОплаты.Очистить();
Для Каждого Этап Из ШаблонГрафика Цикл

ТекущийЭтап                     = ТекущийЭтап + 1;
ЭтапГрафикаОплаты               = ЭтапыГрафикаОплаты.Добавить();
ЭтапГрафикаОплаты.ВариантОплаты = Этап.ВариантОплаты;

Если УчитыватьКалендарь Тогда
ДатаПлатежа = МассивДатПоКалендарю[ТекущийЭтап-1];
Иначе
ДатаПлатежа = ?(ЭтапГрафикаОплаты.ВариантОплаты = Перечисления.ВариантыОплатыКлиентом.КредитПослеОтгрузки, ДатаРеализации, ДатаДокумента) + Этап.Сдвиг * ОдинДень;
КонецЕсли;

Если (ЭтапГрафикаОплаты.ВариантОплаты = Перечисления.ВариантыОплатыКлиентом.ПредоплатаДоОтгрузки
Или ЭтапГрафикаОплаты.ВариантОплаты = Перечисления.ВариантыОплатыКлиентом.АвансДоОбеспечения)
И ЗначениеЗаполнено(ДокументРеализации.ЖелаемаяДатаОтгрузки)
И ДатаПлатежа > ДокументРеализации.ЖелаемаяДатаОтгрузки Тогда
ДатаПлатежа = ДокументРеализации.ЖелаемаяДатаОтгрузки;
КонецЕсли;

//1С-Минск   
ПорядокОкругленияДЧВ = УправлениеФормамиУТВызовСервера_Локализация.ПолучитьПорядокОкругленияДЧВ(ДокументРеализации.Валюта);
//Конец 1С-Минск 

ЭтапГрафикаОплаты.ДатаПлатежа         = ДатаПлатежа;
ЭтапГрафикаОплаты.ПроцентПлатежа      = Этап.ПроцентПлатежа;
//1С-Минск   
СуммаОплатыПоЭтапу                    = Окр(СуммаКРаспределениюОплаты * Этап.ПроцентПлатежа / 100, ПорядокОкругленияДЧВ, РежимОкругления.Окр15как20);
//Конец 1С-Минск 
ЭтапГрафикаОплаты.СуммаПлатежа        = ?(ТекущийЭтап = ПоследнийНезалоговыйЭтап, СуммаКРаспределениюОплаты - РаспределеннаяСуммаОплаты, СуммаОплатыПоЭтапу);
РаспределеннаяСуммаОплаты             = РаспределеннаяСуммаОплаты + ЭтапГрафикаОплаты.СуммаПлатежа;
ЭтапГрафикаОплаты.ПроцентЗалогаЗаТару = Этап.ПроцентЗалогаЗаТару;
//1С-Минск   
СуммаЗалогаПоЭтапу                    = Окр(СуммаКРаспределениюЗалога * Этап.ПроцентЗалогаЗаТару / 100, ПорядокОкругленияДЧВ, РежимОкругления.Окр15как20);
//Конец 1С-Минск 
ЭтапГрафикаОплаты.СуммаЗалогаЗаТару   = ?(ТекущийЭтап = ПоследнийЗалоговыйЭтап, СуммаКРаспределениюЗалога - РаспределеннаяСуммаЗалога, СуммаЗалогаПоЭтапу);
РаспределеннаяСуммаЗалога             = РаспределеннаяСуммаЗалога + ЭтапГрафикаОплаты.СуммаЗалогаЗаТару;

КонецЦикла;

ДокументРеализации.ЭтапыГрафикаОплаты.Загрузить(ЭтапыГрафикаОплаты);

КонецПроцедуры

дфтын

это в обработке какойто?
Добавлено: 31 янв 2015, 00:50


ну вы же сами видите, в эту функцию передается какойто Документреализация. изучайте чо туда пришло
Помог? Нажми - Спасибо :)
skype: Soprov1C

mrFoxit

Цитироватьэто в обработке какойто?
Нет, это не обработка, это обычный документ реализации товаров и услуг. Конфигурация еще чистая, никах доработок в ней не было.
В программировании не силен, поэтому сам вряд ли решу проблему.


дфтын

Да не верю я что конфигурация чистая. все так говорят.
в ЛЮБОМ случае проблема купируется за пять минут в отладчике.
Помог? Нажми - Спасибо :)
skype: Soprov1C

mrFoxit

Цитата: дфтын от 31 янв 2015, 00:59
Да не верю я что конфигурация чистая. все так говорят.
в ЛЮБОМ случае проблема купируется за пять минут в отладчике.
Отладчик запущен, дальнейшие действия?

дфтын

Книга - радченко - программирование в 1С
Добавлено: 31 янв 2015, 01:17


Вспоминая Профессора Пребораженского на ум приходит фдраза - в большом пусть танцуют, а я буду оперировать
Помог? Нажми - Спасибо :)
skype: Soprov1C

SvoyaSistema

Цитата: mrFoxit от 31 янв 2015, 00:32
Цитата: дфтын от 31 янв 2015, 00:30
ээ? причем тут настройки? :)
Добавлено: 31 янв 2015, 00:31


В документ нужно добавить реквизит - валюта
В документе стоит нужная валюта, об этом я еще в первом сообщении писал.

Это в документе есть Валюта. А нужен Реквизит с ИМЕНЕМ "ВАЛЮТА" , а не "Валюта1" или "ещё с каким другим названием.

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск