Ошибка при вызове метода контекста записать 1с отчетность

Ошибка при вызове метода контекста (Записать) ☑ 0

3axap_4

16.10.13

22:33

Доброго времени суток:

собственно принялся устранять дубли в Бухгалтерии 3.0 скачал обработку  от сюда http://infostart.ru/public/14986/ все хорошо находит дубли находит ссылки но при попытке замены и записи документа начинает ругаться на Ошибка при вызове метода контекста (Записать), как это можно поправить?

Спасибо за внимание!

1

3axap_4

16.10.13

22:39

Собственно по коду:

Попытка    

Параметры.Объект.Записать();

Исключение            

Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);

Собственно происходит замена значения реквизита (дубликата) на правильное значение и после этого попытка записи измененного документа где:

Параметры — структура

Параметры.Объект — собственно ДокументОбъект

2

3axap_4

16.10.13

22:49

или посоветуйте достойную альтернативу, кроме сам напиши, время поджимает

3

vicof

16.10.13

23:15

Сообщить(ТипЗнч(Объект));

4

vicof

16.10.13

23:16

Ну или как там в УФ

5

3axap_4

16.10.13

23:19

(3) минутку

6

3axap_4

16.10.13

23:20

например:

Документ объект: Ввод начальных остатков

7

vicof

16.10.13

23:25

Период открыт?

8

vicof

16.10.13

23:25

Дата и номер отличны от других документов того же типа?

9

vicof

16.10.13

23:26

Объект.ОбменДанными.Загрузка = Истина?

10

vicof

16.10.13

23:27

11

3axap_4

16.10.13

23:27

(9) Истина

Отличны, в ручную (проставляя те же значения) все отлично перепроводится и сохраняется…

12

3axap_4

16.10.13

23:28

(10) искал уже…

13

vicof

16.10.13

23:32

Ну давай сюда свой код полностью

14

3axap_4

16.10.13

23:36

БылиИсключения = Ложь;

    Если ВыполнятьВТранзакции Тогда

        НачатьТранзакцию();

    КонецЕсли;

    ОбрабатываемаяСсылка = Неопределено;

        
    Параметры = Новый Структура;

        
    Параметры.Вставить(«Объект», Неопределено);    

    СтруктураКоллизий = Новый Структура;

    
    ЕСли мФормаИндикатора<>Неопределено Тогда

        мФормаИндикатора.МаксимальноеЗначение = ТаблицаСсылок.Количество();

        мФормаИндикатора.КомментарийЗначения = «Выполняется замена элементов.» + ЗаголовокИндикации;

        мФормаИндикатора.Значение = 0;

    КонецЕсли;

    
    Для Каждого СтрокаТаблицы Из ТаблицаСсылок Цикл

        
        Ссылка = СтрокаТаблицы.Ссылка;

        
        // **** надо вынести в корень

        Заменяемые = Новый Соответствие;

        Заменяемые.Вставить(Ссылка, ПравильныйЭлемент);

        
        ОбработкаПрерыванияПользователя();

        Сообщить(«Обрабатывается » + СтрокаТаблицы.Данные);

        
        Если ОбрабатываемаяСсылка <> СтрокаТаблицы.Данные Тогда

            Если Истина

                И ОбрабатываемаяСсылка <> Неопределено

                И Не ЛксЛиКлючЗаписиРегистра(ОбрабатываемаяСсылка)

            Тогда

                Если ОтключатьКонтрольЗаписи Тогда

                    Параметры.Объект.ОбменДанными.Загрузка = Истина;

                КонецЕсли;

                
                Попытка

                    Параметры.Объект.Записать(РежимЗаписиДокумента.Проведение);

                Исключение

                    Сообщить(ТипЗнч(Параметры.Объект));

                    Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);

                    БылиИсключения = Истина;

                    Если ВыполнятьВТранзакции Тогда

                        Перейти ~ОТКАТ;

                    КонецЕсли;

                КонецПопытки;

                Параметры.Объект = Неопределено;

            КонецЕсли;

            ОбрабатываемаяСсылка = СтрокаТаблицы.Данные;

            
        КонецЕсли;

        
            
        Если Метаданные.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда

            
            Если Параметры.Объект = Неопределено Тогда

                Параметры.Объект = СтрокаТаблицы.Данные.ПолучитьОбъект();

            КонецЕсли;

            
            Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл

                Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) И Параметры.Объект[Реквизит.Имя] = Ссылка Тогда

                    Параметры.Объект[Реквизит.Имя] = ПравильныйЭлемент;

                КонецЕсли;

            КонецЦикла;

                
            Для Каждого ТЧ ИЗ СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл

                Для Каждого Реквизит Из ТЧ.Реквизиты Цикл

                    Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда

                        СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);

                        Пока СтрокаТабЧасти <> Неопределено Цикл

                            СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент;

                            СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);

                        КонецЦикла;

                    КонецЕсли;

                КонецЦикла;

            КонецЦикла;

            
            Для Каждого Движение ИЗ СтрокаТаблицы.Метаданные.Движения Цикл

                БылиИсключения = Не ОбработатьЗаписьРегистра(Параметры.Объект.Движения[Движение.Имя], Заменяемые);

                Если Истина

                    И БылиИсключения

                    И ВыполнятьВТранзакции

                Тогда

                    Перейти ~ОТКАТ;

                КонецЕсли;

            КонецЦикла;

            
            Для Каждого Последовательность ИЗ Метаданные.Последовательности Цикл

                Если Последовательность.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда

                    НадоЗаписывать = Ложь;

                    НаборЗаписи = Последовательности[Последовательность.Имя].СоздатьНаборЗаписей();

                    НаборЗаписи.Отбор.Регистратор.Установить(СтрокаТаблицы.Данные);

                    НаборЗаписи.Прочитать();

                    Если НаборЗаписи.Количество() = 0 Тогда

                        Продолжить;

                    КонецЕсли;

                    Для Каждого Измерение ИЗ Последовательность.Измерения Цикл

                        Если Истина

                            И Измерение.Тип.СодержитТип(ТипЗнч(Ссылка))

                            И НаборЗаписи[0][Измерение.Имя] = Ссылка

                        Тогда

                            НаборЗаписи[0][Измерение.Имя] = ПравильныйЭлемент;

                            НадоЗаписывать = Истина;

                        КонецЕсли;

                    КонецЦикла;

                    Если НадоЗаписывать Тогда

                        Если ОтключатьКонтрольЗаписи Тогда

                            НаборЗаписи.ОбменДанными.Загрузка = Истина;

                        КонецЕсли;

                        Попытка

                            НаборЗаписи.Записать();

                        Исключение

                            Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);

                            БылиИсключения = Истина;

                            Если ВыполнятьВТранзакции Тогда

                                Перейти ~ОТКАТ;

                            КонецЕсли;

                        КонецПопытки;

                    КонецЕсли;

                КонецЕсли;

            КонецЦикла;

            
        ИначеЕсли Метаданные.Справочники.Содержит(СтрокаТаблицы.Метаданные) Тогда

            
            Если Параметры.Объект = Неопределено Тогда

                Параметры.Объект = СтрокаТаблицы.Данные.ПолучитьОбъект();

            КонецЕсли;

            
            Если СтрокаТаблицы.Метаданные.Владельцы.Содержит(Ссылка.Метаданные()) И Параметры.Объект.Владелец = Ссылка Тогда

                Параметры.Объект.Владелец = ПравильныйЭлемент;

            КонецЕсли;

            
            Если СтрокаТаблицы.Метаданные.Иерархический И Параметры.Объект.Родитель = Ссылка Тогда

                Параметры.Объект.Родитель = ПравильныйЭлемент;

            КонецЕсли;

            
            Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл

                Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) И Параметры.Объект[Реквизит.Имя] = Ссылка Тогда

                    Параметры.Объект[Реквизит.Имя] = ПравильныйЭлемент;

                КонецЕсли;

            КонецЦикла;

            
            Для Каждого ТЧ ИЗ СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл

                Для Каждого Реквизит Из ТЧ.Реквизиты Цикл

                    Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда

                        СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);

                        Пока СтрокаТабЧасти <> Неопределено Цикл

                            СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент;

                            СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);

                        КонецЦикла;

                    КонецЕсли;

                КонецЦикла;

            КонецЦикла;

            
        ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(СтрокаТаблицы.Метаданные)

                  ИЛИ Метаданные.ПланыСчетов.Содержит(СтрокаТаблицы.Метаданные)

                  ИЛИ Метаданные.ПланыВидовРасчета.Содержит(СтрокаТаблицы.Метаданные)

                  ИЛИ Метаданные.Задачи.Содержит(СтрокаТаблицы.Метаданные)

                  ИЛИ Метаданные.БизнесПроцессы.Содержит(СтрокаТаблицы.Метаданные) Тогда

            
            Если Параметры.Объект = Неопределено Тогда

                Параметры.Объект = СтрокаТаблицы.Данные.ПолучитьОбъект();

            КонецЕсли;

                        
            Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл

                Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) И Параметры.Объект[Реквизит.Имя] = Ссылка Тогда

                    Параметры.Объект[Реквизит.Имя] = ПравильныйЭлемент;

                КонецЕсли;

            КонецЦикла;

            
            Для Каждого ТЧ ИЗ СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл

                Для Каждого Реквизит Из ТЧ.Реквизиты Цикл

                    Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда

                        СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);

                        Пока СтрокаТабЧасти <> Неопределено Цикл

                            СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент;

                            СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);

                        КонецЦикла;                            

                    КонецЕсли;

                КонецЦикла;

            КонецЦикла;    

            
        ИначеЕсли Метаданные.Константы.Содержит(СтрокаТаблицы.Метаданные) Тогда

            
            Константы[СтрокаТаблицы.Метаданные.Имя].Установить(ПравильныйЭлемент);

            
            
        ИначеЕсли Метаданные.РегистрыСведений.Содержит(СтрокаТаблицы.Метаданные) Тогда    

            
            МенеджерЗаписи            = РегистрыСведений[СтрокаТаблицы.Метаданные.Имя].СоздатьМенеджерЗаписи();

            КоллизийныйМенеджерЗаписи = РегистрыСведений[СтрокаТаблицы.Метаданные.Имя].СоздатьМенеджерЗаписи();

            Периодический = (СтрокаТаблицы.Метаданные.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический);

            Если Периодический Тогда

                МенеджерЗаписи.Период            = СтрокаТаблицы.Данные.Период;

                КоллизийныйМенеджерЗаписи.Период = СтрокаТаблицы.Данные.Период;

            КонецЕсли;

            МассивИзмененныхИзмерений = Новый Массив;

            Для каждого Рекв Из СтрокаТаблицы.Метаданные.Измерения Цикл

                ЗначениеИзмерения = СтрокаТаблицы.Данные[Рекв.Имя];

                МенеджерЗаписи[Рекв.Имя] = ЗначениеИзмерения;

                Если ЗначениеИзмерения = Ссылка Тогда

                    КоллизийныйМенеджерЗаписи[Рекв.Имя] = ПравильныйЭлемент;

                    МассивИзмененныхИзмерений.Добавить(Рекв.Имя);

                Иначе

                    КоллизийныйМенеджерЗаписи[Рекв.Имя] = ЗначениеИзмерения;

                КонецЕсли;

            КонецЦикла;

            
            БылаКоллизия = Ложь;

            Если МассивИзмененныхИзмерений.Количество() > 0 Тогда

                КоллизийныйМенеджерЗаписи.Прочитать();

                Если КоллизийныйМенеджерЗаписи.Выбран() Тогда

                    МенеджерЗаписи.Прочитать();

                    МассивКоллекцийРеквизитов = Новый Массив;

                    МассивКоллекцийРеквизитов.Добавить(СтрокаТаблицы.Метаданные.Ресурсы);

                    МассивКоллекцийРеквизитов.Добавить(СтрокаТаблицы.Метаданные.Реквизиты);

                    Если Не СтруктураКоллизий.Свойство(СтрокаТаблицы.Метаданные.Имя) Тогда

                        ТаблицаЗаписей = РегистрыСведений[СтрокаТаблицы.Метаданные.Имя].СоздатьНаборЗаписей().Выгрузить();

                        ТаблицаЗаписей.Колонки.Добавить(«МенеджерЗамены»);

                        ТаблицаЗаписей.Колонки.Добавить(«МенеджерОригинала»);

                        Для Каждого КоллекцияРеквизитов Из МассивКоллекцийРеквизитов Цикл

                            Для Каждого МетаРеквизит Из КоллекцияРеквизитов Цикл

                                ИмяКолонки = МетаРеквизит.Имя;

                                ПредставлениеКолонки = МетаРеквизит.Представление();

                                КолонкаОригинала = ТаблицаЗаписей.Колонки[ИмяКолонки];

                                КолонкаОригинала.Имя       = «Оригинал»   + ИмяКолонки;

                                КолонкаОригинала.Заголовок = «Оригинал: » + ПредставлениеКолонки;

                                КолонкаЗамены = ТаблицаЗаписей.Колонки.Вставить(ТаблицаЗаписей.Колонки.Индекс(КолонкаОригинала),

                                    «Замена» + ИмяКолонки, , «Замена: » + ПредставлениеКолонки);

                                ЗаполнитьЗначенияСвойств(КолонкаЗамены, КолонкаОригинала, , «Имя, Заголовок»);

                            КонецЦикла;

                        КонецЦикла;

                        ТаблицаЗаписей.Колонки.Вставить(0, «Заменить», Новый ОписаниеТипов(«Булево»), «Заменить»);

                        СтруктураКоллизий.Вставить(СтрокаТаблицы.Метаданные.Имя, ТаблицаЗаписей);

                    КонецЕсли;

                    НоваяКоллизийнаяЗапись = СтруктураКоллизий[СтрокаТаблицы.Метаданные.Имя].Добавить();

                    Для Каждого КоллекцияРеквизитов Из МассивКоллекцийРеквизитов Цикл

                        Для Каждого МетаРеквизит Из КоллекцияРеквизитов Цикл

                            ИмяКолонки = МетаРеквизит.Имя;

                            ЗначениеРеквизита = МенеджерЗаписи[ИмяКолонки];

                            НоваяКоллизийнаяЗапись[«Оригинал» + ИмяКолонки] = КоллизийныйМенеджерЗаписи[ИмяКолонки];

                            Если ЗначениеРеквизита = Ссылка Тогда

                                НоваяКоллизийнаяЗапись[«Замена» + ИмяКолонки] = ПравильныйЭлемент;

                            Иначе

                                НоваяКоллизийнаяЗапись[«Замена» + ИмяКолонки] = ЗначениеРеквизита;

                            КонецЕсли;

                            КоллизийныйМенеджерЗаписи[ИмяКолонки] = НоваяКоллизийнаяЗапись[«Замена» + ИмяКолонки];

                            Если НоваяКоллизийнаяЗапись[«Оригинал» + ИмяКолонки] <> НоваяКоллизийнаяЗапись[«Замена» + ИмяКолонки] Тогда

                                БылаКоллизия = Истина;

                            КонецЕсли;

                        КонецЦикла;

                    КонецЦикла;

                    Если БылаКоллизия Тогда

                        ЗаполнитьЗначенияСвойств(НоваяКоллизийнаяЗапись, КоллизийныйМенеджерЗаписи);

                        Для Каждого ИмяКолонки Из МассивИзмененныхИзмерений Цикл

                            НоваяКоллизийнаяЗапись[ИмяКолонки] = МенеджерЗаписи[ИмяКолонки];

                        КонецЦикла;

                        НоваяКоллизийнаяЗапись.МенеджерЗамены    = КоллизийныйМенеджерЗаписи;

                        НоваяКоллизийнаяЗапись.МенеджерОригинала = МенеджерЗаписи;

                    Иначе

                        СтруктураКоллизий[СтрокаТаблицы.Метаданные.Имя].Удалить(НоваяКоллизийнаяЗапись);

                        МенеджерЗаписи.Удалить();

                        БылаКоллизия = Истина;

                    КонецЕсли;

                КонецЕсли;

            КонецЕсли;

            
            Если БылаКоллизия Тогда

                БылиИсключения = Ложь;

            Иначе

                БылиИсключения = Не ОбработатьЗаписьРегистра(МенеджерЗаписи, Заменяемые);

            КонецЕсли;

            
            Если Истина

                И БылиИсключения

                И ВыполнятьВТранзакции

            Тогда

                Перейти ~ОТКАТ;

            КонецЕсли;

        Иначе

            Сообщить(«Ссылки типа «+СтрокаТаблицы.Метаданные+» не заменяются!!»);

        КонецЕсли;

        ОбработкаПрерыванияПользователя();

        Если мФормаИндикатора <> Неопределено Тогда

            мФормаИндикатора.Значение = мФормаИндикатора.Значение + 1;

        Иначе

            Состояние(«Выполнено » + Формат(100 * ТаблицаСсылок.Индекс(СтрокаТаблицы) + 1 / ТаблицаСсылок.Количество(), «ЧЦ=5; ЧДЦ=2») + «%»);

        КонецЕсли;

    КонецЦикла;

    
    Если Параметры.Объект <> Неопределено Тогда

        Если ОтключатьКонтрольЗаписи Тогда

            Параметры.Объект.ОбменДанными.Загрузка = Истина;

        КонецЕсли;

        Попытка

            Параметры.Объект.Записать();

            Если ОтключатьКонтрольЗаписи Тогда

                ЗаписьЖурналаРегистрации(«Запись с флагом Загрузка», УровеньЖурналаРегистрации.Информация, СтрокаТаблицы.Метаданные,

                    СтрокаТаблицы.Данные, «»);

            КонецЕсли;

        Исключение

            Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);

            БылиИсключения = Истина;

            Если ВыполнятьВТранзакции Тогда

                Перейти ~ОТКАТ;

            КонецЕсли;

        КонецПопытки;

    КонецЕсли;

    
    МассивЭлементовКУдалению = Новый Массив;

    Для Каждого ЭлементТаблицыРегистра Из СтруктураКоллизий Цикл

        Если ЭлементТаблицыРегистра.Значение.Количество() = 0 Тогда

            МассивЭлементовКУдалению.Добавить(ЭлементТаблицыРегистра.Ключ);

        КонецЕсли;

    КонецЦикла;

    Для Каждого ЭлементКУдалению Из МассивЭлементовКУдалению Цикл

        СтруктураКоллизий.Удалить(ЭлементКУдалению);

    КонецЦикла;

    Если СтруктураКоллизий.Количество() > 0 Тогда

        ФормаЗамещенияВНезависимыхРегистрахСведений = ПолучитьФорму(«ФормаЗамещенияВНезависимыхРегистрахСведений»);

        ФормаЗамещенияВНезависимыхРегистрахСведений.СтруктураКоллизий = СтруктураКоллизий;

        ФормаЗамещенияВНезависимыхРегистрахСведений.ОткрытьМодально();

    КонецЕсли;

~ОТКАТ:

    Если ВыполнятьВТранзакции Тогда

        Если БылиИсключения Тогда

            ОтменитьТранзакцию();

        Иначе

            ЗафиксироватьТранзакцию();

        КонецЕсли;    

    КонецЕсли;

    Возврат Не БылиИсключения;

15

vicof

16.10.13

23:49

На первый взгляд все нормуль. Может какие обязательные реквизиты не заполнены в документе.

16

vicof

16.10.13

23:49

Поковыряйся перед записью и при записи этого дока

17

3axap_4

16.10.13

23:50

да вроде нет вручную делаю абсолютно те же действия (меняю значения, перепровожу) все ок, ничего лишнего…

18

3axap_4

16.10.13

23:50

(16) в том то и дело что выскакивает на всех доках

19

3axap_4

16.10.13

23:51

(16) а хотя ты знаешь, не всех, есть опредеенная группа, действительно пойду в этом направлении спасибо!

20

Apokalipsec

17.10.13

00:07

посмотри в ЖР ошибки и так какую ошибку он тебе говорит?

21

3axap_4

17.10.13

00:22

(20) чёт в жр ничего про ошибки нет, если делать в транзакции то у нее статус — отменено, если без — то завершено, но документ не в том ни в другом случае не сохраняется

(8) А в какой именно строке? Просмотрела всю процедуру, не могу понять.

Процедура ЗаполнитьОперативныеВзаиморасчеты(ОсновныеПараметры) Экспорт

    
    #Область ИнициализацияЗапросаИПеременных

    

    АналитикаУчетаПоПартнерам      = ОсновныеПараметры.АналитикаУчетаПоПартнерам;

    ОбъектРасчетов                 = ОсновныеПараметры.ОбъектРасчетов;

    ВалютаРасчетов                 = ОсновныеПараметры.ВалютаРасчетов;

    ЭтоРасчетыСКлиентами           = ОсновныеПараметры.ЭтоРасчетыСКлиентами;

    Регистратор                    = ОсновныеПараметры.Регистратор;

    Порядок                        = ОсновныеПараметры.Порядок;

    

    ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();

    ВалютаУправленческогоУчета     = Константы.ВалютаУправленческогоУчета.Получить();

    АналитикаОбъектаРасчета = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(АналитикаУчетаПоПартнерам,»Организация»);

    
    Организация = АналитикаОбъектаРасчета.Организация;

    

    //Если график исполнения в договоре, то вместо графика заказа будет уточняться график договора.

    //Если пользователь каким-то образом ввел заказы с графиками по такому договору, то все этапы таких заказов будут отнесены к графику договора

    //и закрываться будут по ФИФО независимо от привязки накладных к заказам

    Если ТипЗнч(ОбъектРасчетов) = Тип(«СправочникСсылка.ДоговорыКонтрагентов») Тогда

        ГрафикИсполненияДоговора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбъектРасчетов,»ГрафикИсполненияДоговора»);

        ГрафикВДоговоре = ЗначениеЗаполнено(ГрафикИсполненияДоговора);

    Иначе

        ГрафикИсполненияДоговора = Неопределено;

        ГрафикВДоговоре = ЛОЖЬ;

    КонецЕсли;

    

    Если ЭтоРасчетыСКлиентами Тогда

        РасчетыПоЗаказу = ТипЗнч(ОбъектРасчетов) = Тип(«ДокументСсылка.ЗаказКлиента»)

                        ИЛИ ТипЗнч(ОбъектРасчетов) = Тип(«ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента»);

    Иначе

        РасчетыПоЗаказу = ТипЗнч(ОбъектРасчетов) = Тип(«ДокументСсылка.ЗаказПоставщику»);

    КонецЕсли;

    

    СписокТиповПлатежек = ТипыПлатежныхДокументов();

    РасчетыПоПлатежке = СписокТиповПлатежек.Найти(ТипЗнч(ОбъектРасчетов)) <> Неопределено;

    ХозяйственныеОперацииНеОтгрузка = ХозяйственныеОперацииНеОтгрузка();

    

    Если НЕ РасчетыПоПлатежке И ТипЗнч(ОбъектРасчетов) = Тип(«ДокументСсылка.ПервичныйДокумент») Тогда

        ТипПервичногоДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбъектРасчетов,»ТипПервичногоДокумента»);

        РасчетыПоПлатежке = ТипПервичногоДокумента = Перечисления.ТипыПервичныхДокументов.ОплатаПоставщику

                        ИЛИ ТипПервичногоДокумента = Перечисления.ТипыПервичныхДокументов.ОплатаОтКлиента;

    КонецЕсли;

    

    ГлобальныеПеременные = Новый Структура;

    ГлобальныеПеременные.Вставить(«ЕжедневнаяПереоценка», Константы.ПереоцениватьВалютныеСредстваПоДням.Получить());

    //Для уточнения плана оплат — в переменной хранится последний момент времени плана оплат,

    //чтобы при добавлении записи в план оплат можно было сразу определить есть ли планы оплат с датой больше, чем добавляемая запись.

    ГлобальныеПеременные.Вставить(«МаксимальныйПорядокПланаОплат»,»»);

    ГлобальныеПеременные.Вставить(«ВалютаРасчетов», ВалютаРасчетов);

    ГлобальныеПеременные.Вставить(«ГрафикВДоговоре», ГрафикВДоговоре);

    ГлобальныеПеременные.Вставить(«ЭтоРасчетыСКлиентами», ЭтоРасчетыСКлиентами);

    ГлобальныеПеременные.Вставить(«ПорядокПереоценки», Новый Соответствие);

    

    //Хозяйственные операции для заполнения.

    ХозяйственныеОперации = Новый Соответствие;

    

    Если ЭтоРасчетыСКлиентами Тогда

        ХозяйственныеОперации.Вставить(«ЗачетАванса»,             Перечисления.ХозяйственныеОперации.ЗачетАвансаКлиента);

        ХозяйственныеОперации.Вставить(«ПогашениеЗадолженности»,  Перечисления.ХозяйственныеОперации.ПогашениеЗадолженностиКлиента);

        ХозяйственныеОперации.Вставить(«ВозвратАванса»,           Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту);

        ХозяйственныеОперации.Вставить(«ПереоценкаПоложительная», Перечисления.ХозяйственныеОперации.КурсовыеРазницыКлиентыПрибыль);

        ХозяйственныеОперации.Вставить(«ПереоценкаОтрицательная», Перечисления.ХозяйственныеОперации.КурсовыеРазницыКлиентыУбыток);

        ХозяйственныеОперации.Вставить(«Планирование»,            Перечисления.ХозяйственныеОперации.ПланированиеПоЗаказуКлиента);

    Иначе

        ХозяйственныеОперации.Вставить(«ЗачетАванса»,             Перечисления.ХозяйственныеОперации.ЗачетАвансаПоставщику);

        ХозяйственныеОперации.Вставить(«ПогашениеЗадолженности»,  Перечисления.ХозяйственныеОперации.ПогашениеЗадолженностиПоставщику);

        ХозяйственныеОперации.Вставить(«ВозвратАванса»,           Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтПоставщика);

        ХозяйственныеОперации.Вставить(«ПереоценкаПоложительная», Перечисления.ХозяйственныеОперации.КурсовыеРазницыПоставщикиУбыток);

        ХозяйственныеОперации.Вставить(«ПереоценкаОтрицательная», Перечисления.ХозяйственныеОперации.КурсовыеРазницыПоставщикиПрибыль);

        ХозяйственныеОперации.Вставить(«Планирование»,            Перечисления.ХозяйственныеОперации.ПланированиеПоЗаказуПоставщику);

    КонецЕсли;

    ХозяйственныеОперации.Вставить(«ПереносАванса», Перечисления.ХозяйственныеОперации.ПереносАванса);

    
    ГлобальныеПеременные.Вставить(«ХозяйственныеОперации», ХозяйственныеОперации);

    

    Запрос                         = Новый Запрос;

    Менеджер                       = Новый МенеджерВременныхТаблиц;

    Запрос.МенеджерВременныхТаблиц = Менеджер;

    

    Запрос.УстановитьПараметр(«ОбъектРасчетов»,             ОбъектРасчетов);

    Запрос.УстановитьПараметр(«АналитикаУчетаПоПартнерам»,  АналитикаУчетаПоПартнерам);

    Запрос.УстановитьПараметр(«Организация»,                Организация);

    Запрос.УстановитьПараметр(«ВалютаУпр»,                  ВалютаУправленческогоУчета);

    Запрос.УстановитьПараметр(«ВалютаРегл»,                 ВалютаРегламентированногоУчета);

    Запрос.УстановитьПараметр(«СписокТиповЗаказов»,         СписокТиповРегистраторовПланов());

    Запрос.УстановитьПараметр(«ВалютаРасчетов»,             ВалютаРасчетов);

    Запрос.УстановитьПараметр(«Порядок»,                    Порядок);

    Запрос.УстановитьПараметр(«ГрафикВДоговоре»,            ГрафикВДоговоре);

    Запрос.УстановитьПараметр(«ГрафикИсполненияДоговора»,   ГрафикИсполненияДоговора);

    Запрос.УстановитьПараметр(«РасчетыПоЗаказу»,            РасчетыПоЗаказу);

    Запрос.УстановитьПараметр(«ЭтоРасчетыСКлиентами»,       ЭтоРасчетыСКлиентами);

    Запрос.УстановитьПараметр(«Регистратор»,                Регистратор);

    Запрос.УстановитьПараметр(«ПорядокЗачетаПоДатеПлатежа», Константы.ПорядокЗачетаДокументовПоДатеОперации.Получить() = 1);

    
    #КонецОбласти

    
    #Область ИнициализацияНаборовЗаписей

    

    Если ЭтоРасчетыСКлиентами Тогда

        НаборЗаписейПоСрокам = РегистрыНакопления.РасчетыСКлиентамиПоСрокам.СоздатьНаборЗаписей();

        НаборЗаписейПланОплат = РегистрыНакопления.РасчетыСКлиентамиПланОплат.СоздатьНаборЗаписей();

        НаборЗаписейПланОтгрузокПоставок = РегистрыНакопления.РасчетыСКлиентамиПланОтгрузок.СоздатьНаборЗаписей();

    Иначе

        НаборЗаписейПоСрокам = РегистрыНакопления.РасчетыСПоставщикамиПоСрокам.СоздатьНаборЗаписей();

        НаборЗаписейПланОплат = РегистрыНакопления.РасчетыСПоставщикамиПланОплат.СоздатьНаборЗаписей();

        НаборЗаписейПланОтгрузокПоставок = РегистрыНакопления.РасчетыСПоставщикамиПланПоставок.СоздатьНаборЗаписей();

    КонецЕсли;

    

    Если ОсновныеПараметры.Свойство(«ДополнительныеСвойстваПроведения») И ОсновныеПараметры.ДополнительныеСвойстваПроведения <> Неопределено Тогда

        НаборЗаписейПоСрокам.ДополнительныеСвойства.Вставить(«ПроверятьИзмененияРегистра», Истина);

        Если ОсновныеПараметры.Свойство(«Регистратор») Тогда

            // При изменении проведения документа будут изменения в регистре, но по ним не следует регистрировать документ к отражению,

            //    так как он в любом случае изменит свои данные отражения при проведении (или распроведении).

            НаборЗаписейПоСрокам.ДополнительныеСвойства.Вставить(«НеотражаемыйДокумент», ОсновныеПараметры.Регистратор);

        КонецЕсли;

    КонецЕсли;

    

    РегистраторРасчетовОбъект = РегистраторРасчетов(ОбъектРасчетов, АналитикаУчетаПоПартнерам, ВалютаРасчетов, ЭтоРасчетыСКлиентами, Организация);

    РегистраторРасчетов = РегистраторРасчетовОбъект.Ссылка;

    

    НаборЗаписейПоСрокам.Отбор.Регистратор.Установить(РегистраторРасчетов);

    НаборЗаписейПланОплат.Отбор.Регистратор.Установить(РегистраторРасчетов);

    НаборЗаписейПланОтгрузокПоставок.Отбор.Регистратор.Установить(РегистраторРасчетов);

    
    #КонецОбласти

    

    //Движения до начала пересчета и остатки.

    СформироватьВТДанныхРегистровДоНачалаРасчетов(Запрос, ЭтоРасчетыСКлиентами);

    //Данные регистров с порядком меньше порядка начала расчета, далее дополняются.

    ТаблицаРасчетовПоСрокам     = Менеджер.Таблицы[«ВТРасчетыПоСрокамДо»].ПолучитьДанные().Выгрузить();

    ТаблицаПланОплат            = Менеджер.Таблицы[«ВТРасчетыПланОплатДо»].ПолучитьДанные().Выгрузить();

    ТаблицаПланОтгрузокПоставок = Менеджер.Таблицы[«ВТРасчетыПланОтгрузокПоставокДо»].ПолучитьДанные().Выгрузить();

    

    //Движения после начала пересчета и остатки до начала пересчета для распределения.

    РасчетыОтгрузкиПоставки    = ПолучитьОтгрузкиПоставки(Запрос, Порядок);

    ПланыОплат                 = ПолучитьПланыОплат(Запрос, Порядок, ЭтоРасчетыСКлиентами);

    ПланыОтгрузокПоставок      = ПолучитьПланыОтгрузокПоставок(Запрос, Порядок, ЭтоРасчетыСКлиентами);

    РасчетыОплаты              = ПолучитьОплаты(Запрос, Порядок);

    

    Если РасчетыОплаты.Количество() = 0 И РасчетыОтгрузкиПоставки.Количество() = 0 И ТаблицаРасчетовПоСрокам.Количество() = 0 И НЕ ОсновныеПараметры.ТолькоПланы Тогда

        НаборЗаписейПоСрокам.Записать();

    КонецЕсли;

    Если ПланыОплат.Количество() = 0 И РасчетыОтгрузкиПоставки.Количество() = 0 И ТаблицаПланОплат.Количество() = 0 Тогда

        НаборЗаписейПланОплат.Записать();

    КонецЕсли;

    Если ПланыОтгрузокПоставок.Количество() = 0 И ТаблицаПланОтгрузокПоставок.Количество() = 0 Тогда

        НаборЗаписейПланОтгрузокПоставок.Записать();

    КонецЕсли;

    

    НужнаПереоценка = (ВалютаРасчетов <> ВалютаРегламентированногоУчета ИЛИ ВалютаРасчетов <> ВалютаУправленческогоУчета)

        И РасчетыОтгрузкиПоставки.Количество() > 0

        И НЕ ОсновныеПараметры.ТолькоПланы;

    

    Если НужнаПереоценка Тогда

        ДатаНачалаКурсов = Мин(РасчетыОтгрузкиПоставки[0].Период,

                                    ?(РасчетыОплаты.Количество() > 0,

                                        РасчетыОплаты[0].Период,

                                        РасчетыОтгрузкиПоставки[0].Период));

        ТаблицаКурсовВалют = ПолучитьКурсыВалют(Запрос, ДатаНачалаКурсов, ГлобальныеПеременные);

        ГлобальныеПеременные.Вставить(«ТаблицаКурсовВалют», ТаблицаКурсовВалют);

    КонецЕсли;

    

    ДокументыРасчетаКурсовыхРазниц = Документы.РасчетКурсовыхРазниц.ДокументыПереоценки(Организация,

        ?(РасчетыОтгрузкиПоставки.Количество() > 0, РасчетыОтгрузкиПоставки[0].ДатаВозникновения, ТекущаяДатаСеанса()),

        ТекущаяДатаСеанса(),

        ЭтоРасчетыСКлиентами);

    
    ГлобальныеПеременные.Вставить(«ДокументыРасчетаКурсовыхРазниц», ДокументыРасчетаКурсовыхРазниц);

    

    //Добавляем приходные записи по плану оплаты (заказы , график договора)

    //накладные не добавляем, т.к они могут быть уменьшены авансами.

    Для Каждого Стр Из ПланыОплат Цикл

        Если НЕ Стр.ПриходДобавлен Тогда

            НовСтр = ТаблицаПланОплат.Добавить();

            НовСтр.ВидДвижения               = ВидДвиженияНакопления.Приход;

            НовСтр.ДокументРегистратор       = Стр.Регистратор;

            НовСтр.ДокументПлан              = Стр.Регистратор;

            НовСтр.ВариантОплаты             = Стр.ВариантОплаты;

            НовСтр.Период                    = Стр.Период;

            НовСтр.ДатаВозникновения         = Стр.ДатаВозникновения;

            НовСтр.ДатаПлановогоПогашения    = Стр.ДатаПлановогоПогашения;

            НовСтр.КОплате                   = Стр.КОплате;

            НовСтр.ПорядокОперации           = Стр.ПорядокОперации;

            НовСтр.ПорядокЗачета             = Стр.ПорядокОперации;

            НовСтр.ХозяйственнаяОперация     = ГлобальныеПеременные.ХозяйственныеОперации[«Планирование»];

        КонецЕсли;

    КонецЦикла;

    

    //Добавляем приходные записи планов отгрузок.

    Для Каждого Стр Из ПланыОтгрузокПоставок Цикл

        Если НЕ Стр.ПриходДобавлен Тогда

            НовСтр = ТаблицаПланОтгрузокПоставок.Добавить();

            НовСтр.ВидДвижения               = ВидДвиженияНакопления.Приход;

            НовСтр.ДокументРегистратор       = Стр.Регистратор;

            НовСтр.ДокументПлан              = Стр.Регистратор;

            НовСтр.Период                    = Стр.Период;

            НовСтр.ДатаВозникновения         = Стр.ДатаВозникновения;

            НовСтр.ДатаПлановогоПогашения    = Стр.ДатаПлановогоПогашения;

            НовСтр.Сумма                     = Стр.КОтгрузкеПоставке;

            НовСтр.ПорядокЗачета             = Стр.ПорядокОперации;

            НовСтр.ПорядокОперации           = Стр.ПорядокОперации;

        КонецЕсли;

    КонецЦикла;

    

    //Для определения курса корректировки реализации в минус.

    //Ключ     — ДокументСсылка.РеализациТоваровУслуг, ДокументСсылка.АктВыполненныхРабот

    //Значение — Структура

    //     * СуммаДокумента, СуммаДокументаРегл, СуммаДокументаУпр — нужны для определения среднего курса реализации при проведении корректировок.

    ДанныеНакладных = Новый Соответствие;

    ТаблицаДанныхНакладных = ПолучитьДанныеНакладных(Запрос);

    Для Каждого Строка Из ТаблицаДанныхНакладных Цикл

        ДанныеНакладных.Вставить(Строка.Накладная,

                                    СтруктураСумм(Строка.Сумма,

                                                    Строка.СуммаРегл,

                                                    Строка.СуммаУпр));

    КонецЦикла;

    ГлобальныеПеременные.Вставить(«ДанныеНакладных», ДанныеНакладных);

    

    ЗаписейОплаты           = РасчетыОплаты.Количество();

    ЗаписейОтгрузкиПоставки = РасчетыОтгрузкиПоставки.Количество();

    ЗаписейОбработать       = ЗаписейОплаты + ЗаписейОтгрузкиПоставки;

    

    Индексы = Новый Структура;

    //Индекс текущей обрабатываемой строки отгрузок.

    Индексы.Вставить(«ИндексОтгрузкиПоставки», 0);

    //Индекс текущей обрабатываемой строки оплат.

    Индексы.Вставить(«ИндексОплаты», 0);

    

    //Для распределения копеек в рамках документа.

    ТекущийДокументОплаты           = Неопределено;

    ТекущийДокументОтгрузкиПоставки = Неопределено;

    

    //Сколько строк отгрузки пропущено для зачета корректировкой реализации.

    ПропускОтгрузкиПоставки = 0;

    
    Пока Индексы.ИндексОплаты + Индексы.ИндексОтгрузкиПоставки < ЗаписейОбработать Цикл

        
        Если Индексы.ИндексОплаты <= ЗаписейОплаты — 1 И Индексы.ИндексОтгрузкиПоставки <= ЗаписейОтгрузкиПоставки — 1 Тогда

            

            СтрокаОплаты           = РасчетыОплаты[Индексы.ИндексОплаты];

            СтрокаОтгрузкиПоставки = РасчетыОтгрузкиПоставки[Индексы.ИндексОтгрузкиПоставки];

            

            //Оплата раньше отгрузки.

            Если СтрокаОплаты.ПорядокОперации < СтрокаОтгрузкиПоставки.ПорядокОперации

                //В пределах регистратора (при расчетах по накладным) должен происходить зачет аванса.

                ИЛИ СтрокаОплаты.Регистратор = СтрокаОтгрузкиПоставки.Регистратор Тогда

                

                //Переброс аванса на расчетный документ — накладную.

                НеОтгрузка = ХозяйственныеОперацииНеОтгрузка.Найти(СтрокаОтгрузкиПоставки.ХозяйственнаяОперация) <> Неопределено;

                ДвойнаяЗаписьНеНужна = НеОтгрузка

                    //Если расчеты по платежке, то эти движения уже отражены в оперативных расчетах в рамках переноса с одного объекта расчетов на другой.

                    ИЛИ РасчетыПоПлатежке;

                

                //Приход предоплаты.

                Если НЕ СтрокаОплаты.ПриходДобавлен Тогда

                    ПересчитатьСуммыЕслиЭтоКорректировка(ГлобальныеПеременные, СтрокаОплаты);

                    ДобавитьПриход(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОплаты, «Оплата»);

                КонецЕсли;

                

                //Уменьшаем план отгрузки, если есть.

                Если НЕ СтрокаОтгрузкиПоставки.ПланОтгрузокПоставокСписан Тогда

                    СписатьПланОтгрузкиПоставки(ГлобальныеПеременные, ТаблицаПланОтгрузокПоставок, СтрокаОтгрузкиПоставки, ПланыОтгрузокПоставок);

                КонецЕсли;

                
                Если СтрокаОтгрузкиПоставки.Сумма <> 0 Тогда

                

                    Если ТекущийДокументОплаты <> СтрокаОплаты.РасчетныйДокумент Тогда

                        ПредоплатаРаспределеноРегл = 0;

                        ПредоплатаРаспределеноУпр  = 0;

                        ТекущийДокументОплаты      = СтрокаОплаты.РасчетныйДокумент;

                    КонецЕсли;

                    

                    Если ТекущийДокументОтгрузкиПоставки <> СтрокаОтгрузкиПоставки.РасчетныйДокумент Тогда

                        ДолгРаспределеноРегл       = 0;

                        ДолгРаспределеноУпр        = 0;

                        ТекущийДокументОтгрузкиПоставки = СтрокаОтгрузкиПоставки.РасчетныйДокумент;

                    КонецЕсли;

                    

                    //Добавляем запись списания предоплаты.

                    НовСтр_Предоплата_Расход                          = ТаблицаРасчетовПоСрокам.Добавить();

                    НовСтр_Предоплата_Расход.ВидДвижения              = ВидДвиженияНакопления.Расход;

                    НовСтр_Предоплата_Расход.ДокументРегистратор      = СтрокаОтгрузкиПоставки.Регистратор;

                    НовСтр_Предоплата_Расход.ВалютаДокумента          = СтрокаОтгрузкиПоставки.ВалютаДокумента;

                    НовСтр_Предоплата_Расход.Период                   = СтрокаОтгрузкиПоставки.Период;

                    НовСтр_Предоплата_Расход.РасчетныйДокумент        = СтрокаОплаты.РасчетныйДокумент;

                    НовСтр_Предоплата_Расход.ДатаВозникновения        = СтрокаОплаты.ДатаВозникновения;

                    НовСтр_Предоплата_Расход.ДатаПлановогоПогашения   = Дата(1,1,1);

                    НовСтр_Предоплата_Расход.ПорядокЗачета            = СтрокаОплаты.ПорядокОперации;

                    НовСтр_Предоплата_Расход.ПорядокОперации          = СтрокаОтгрузкиПоставки.ПорядокОперации;

                    НовСтр_Предоплата_Расход.СтатьяДвиженияДенежныхСредств = СтрокаОтгрузкиПоставки.СтатьяДвиженияДенежныхСредств;

                    
                    НовСтр_Предоплата_Расход.КорОбъектРасчетов        = СтрокаОплаты.КорОбъектРасчетов;

                    
                    СуммаСписания = Мин(СтрокаОплаты.Сумма, СтрокаОтгрузкиПоставки.Сумма);

                    

                    //Возврат аванса с ручным курсом отражаем по курсу возврата.

                    Если СтрокаОтгрузкиПоставки.ЭтоВозвратАванса И СтрокаОтгрузкиПоставки.РучнойКурсРегл Тогда

                        ПредоплатаРеглПредв = СтрокаОтгрузкиПоставки.СуммаРегл / СтрокаОтгрузкиПоставки.Сумма * СуммаСписания;

                    //Ошибки округления сразу зачитываем, если что они переоценятся.

                    ИначеЕсли СтрокаОтгрузкиПоставки.РучнойКурсРегл И СтрокаОтгрузкиПоставки.Сумма = СуммаСписания Тогда

                        ПредоплатаРеглПредв = СтрокаОтгрузкиПоставки.СуммаРегл;

                    //Остальные авансы по курсу аванса.

                    Иначе

                        ПредоплатаРеглПредв = СтрокаОплаты.СуммаРегл / СтрокаОплаты.Сумма * СуммаСписания;

                    КонецЕсли;

                    

                    Если СтрокаОтгрузкиПоставки.ЭтоВозвратАванса И СтрокаОтгрузкиПоставки.РучнойКурсУпр Тогда

                        ПредоплатаУпрПредв = СтрокаОтгрузкиПоставки.СуммаУпр / СтрокаОтгрузкиПоставки.Сумма * СуммаСписания;

                    ИначеЕсли СтрокаОтгрузкиПоставки.РучнойКурсУпр И СтрокаОтгрузкиПоставки.Сумма = СуммаСписания Тогда

                        ПредоплатаУпрПредв = СтрокаОтгрузкиПоставки.СуммаУпр;

                    Иначе

                        ПредоплатаУпрПредв = СтрокаОплаты.СуммаУпр / СтрокаОплаты.Сумма * СуммаСписания;

                    КонецЕсли;

                    

                    Если СтрокаОтгрузкиПоставки.ЭтоВозвратАванса Тогда

                        НовСтр_Предоплата_Расход.ХозяйственнаяОперация = ХозяйственныеОперации[«ВозвратАванса»];

                    ИначеЕсли РасчетыПоПлатежке И НЕ СтрокаОтгрузкиПоставки.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВзаимозачетЗадолженности Тогда

                        НовСтр_Предоплата_Расход.ХозяйственнаяОперация = ХозяйственныеОперации[«ПереносАванса»];

                    ИначеЕсли НеОтгрузка Тогда

                        НовСтр_Предоплата_Расход.ХозяйственнаяОперация = СтрокаОтгрузкиПоставки.ХозяйственнаяОперация;

                    Иначе

                        НовСтр_Предоплата_Расход.ХозяйственнаяОперация = ХозяйственныеОперации[«ЗачетАванса»];

                    КонецЕсли;

                    

                    НовСтр_Предоплата_Расход.Предоплата     = СуммаСписания;

                    НовСтр_Предоплата_Расход.ПредоплатаРегл = Окр(ПредоплатаРеглПредв + ПредоплатаРаспределеноРегл — Окр(ПредоплатаРаспределеноРегл, 2), 2);

                    НовСтр_Предоплата_Расход.ПредоплатаУпр  = Окр(ПредоплатаУпрПредв + ПредоплатаРаспределеноУпр — Окр(ПредоплатаРаспределеноУпр, 2), 2);

                    

                    ПредоплатаРаспределеноРегл = ПредоплатаРаспределеноРегл + ПредоплатаРеглПредв;

                    ПредоплатаРаспределеноУпр  = ПредоплатаРаспределеноУпр  + ПредоплатаУпрПредв;

                    

                    //Уменьшаем строку оплаты на сумму зачета

                    СтрокаОплаты.Сумма         = СтрокаОплаты.Сумма     — НовСтр_Предоплата_Расход.Предоплата;

                    СтрокаОплаты.СуммаРегл     = СтрокаОплаты.СуммаРегл — НовСтр_Предоплата_Расход.ПредоплатаРегл;

                    СтрокаОплаты.СуммаУпр      = СтрокаОплаты.СуммаУпр  — НовСтр_Предоплата_Расход.ПредоплатаУпр;

                    

                    Если НЕ ДвойнаяЗаписьНеНужна Тогда

                        //Отражаем приход на сумму долга по курсу предоплаты.

                        НовСтр_Долг_Приход = ТаблицаРасчетовПоСрокам.Добавить();

                        ЗаполнитьЗначенияСвойств(НовСтр_Долг_Приход, НовСтр_Предоплата_Расход , ,»Предоплата, ПредоплатаУпр, ПредоплатаРегл, КорОбъектРасчетов»);

                        

                        НовСтр_Долг_Приход.ВидДвижения                   = ВидДвиженияНакопления.Приход;

                        НовСтр_Долг_Приход.Период                        = СтрокаОтгрузкиПоставки.Период;

                        НовСтр_Долг_Приход.ДатаВозникновения             = СтрокаОтгрузкиПоставки.Период;

                        НовСтр_Долг_Приход.ДатаПлановогоПогашения        = СтрокаОтгрузкиПоставки.ДатаПлановогоПогашения;

                        НовСтр_Долг_Приход.РасчетныйДокумент             = СтрокаОтгрузкиПоставки.Регистратор;

                        НовСтр_Долг_Приход.ПорядокЗачета                 = СтрокаОтгрузкиПоставки.ПорядокЗачета;

                        НовСтр_Долг_Приход.ХозяйственнаяОперация         = СтрокаОтгрузкиПоставки.ХозяйственнаяОперация;

                        НовСтр_Долг_Приход.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.ПустаяСсылка();

                        

                        НовСтр_Долг_Приход.Долг                          = НовСтр_Предоплата_Расход.Предоплата;

                        Если СтрокаОтгрузкиПоставки.РучнойКурсУпр Тогда

                            НовСтр_Долг_Приход.ДолгУпр                   = СтрокаОтгрузкиПоставки.КурсУпр * СуммаСписания;

                        Иначе

                            НовСтр_Долг_Приход.ДолгУпр                   = НовСтр_Предоплата_Расход.ПредоплатаУпр;

                        КонецЕсли;

                        Если СтрокаОтгрузкиПоставки.РучнойКурсРегл Тогда

                            НовСтр_Долг_Приход.ДолгРегл                  = СтрокаОтгрузкиПоставки.КурсРегл * СуммаСписания;

                        Иначе

                            НовСтр_Долг_Приход.ДолгРегл                  = НовСтр_Предоплата_Расход.ПредоплатаРегл;

                        КонецЕсли;

                        

                        //Переносим предоплату на расчетный документ отгрузки.

                        НовСтр_Долг_Расход = ТаблицаРасчетовПоСрокам.Добавить();

                        ЗаполнитьЗначенияСвойств(НовСтр_Долг_Расход, НовСтр_Долг_Приход);

                        НовСтр_Долг_Расход.ВидДвижения                   = ВидДвиженияНакопления.Расход;

                        НовСтр_Долг_Расход.ХозяйственнаяОперация         = ХозяйственныеОперации[«ЗачетАванса»];

                        НовСтр_Долг_Расход.ДатаПлановогоПогашения        = СтрокаОтгрузкиПоставки.ДатаПлановогоПогашения;

                        НовСтр_Долг_Расход.РасчетныйДокумент             = СтрокаОтгрузкиПоставки.Регистратор;

                        НовСтр_Долг_Расход.ДатаВозникновения             = СтрокаОтгрузкиПоставки.Период;

                        НовСтр_Долг_Расход.ПорядокЗачета                 = СтрокаОтгрузкиПоставки.ПорядокЗачета;

                        НовСтр_Долг_Расход.ДокументРегистратор           = СтрокаОтгрузкиПоставки.Регистратор;

                        НовСтр_Долг_Расход.СтатьяДвиженияДенежныхСредств = СтрокаОтгрузкиПоставки.СтатьяДвиженияДенежныхСредств;

                        

                        НовСтр_Долг_Расход.Долг                          = НовСтр_Предоплата_Расход.Предоплата;

                        НовСтр_Долг_Расход.ДолгУпр                       = НовСтр_Предоплата_Расход.ПредоплатаУпр;

                        НовСтр_Долг_Расход.ДолгРегл                      = НовСтр_Предоплата_Расход.ПредоплатаРегл;

                        

                        //Если курс переноса предоплаты и прихода по долгу не совпал, делаем переоценку.

                        //Возможно, когда и в оплате и в накладной ручные суммы в валюте регл. или упр. учета.

                        Если НовСтр_Долг_Приход.ДолгРегл <> НовСтр_Долг_Расход.ДолгРегл

                            ИЛИ НовСтр_Долг_Приход.ДолгУпр <> НовСтр_Долг_Расход.ДолгУпр Тогда

                            ДобавитьЗаписьПереоценки(ГлобальныеПеременные,

                                                        ТаблицаРасчетовПоСрокам,

                                                        СтрокаОтгрузкиПоставки.Период,

                                                        НовСтр_Долг_Приход,

                                                        «Долг»,

                                                        НовСтр_Долг_Расход.ДолгРегл — НовСтр_Долг_Приход.ДолгРегл,

                                                        НовСтр_Долг_Расход.ДолгУпр — НовСтр_Долг_Приход.ДолгУпр);

                        КонецЕсли;

                        
                    КонецЕсли;

                    

                    Если СтрокаОтгрузкиПоставки.РучнойКурсРегл И НЕ ДвойнаяЗаписьНеНужна Тогда

                        //Остаток должен быть уменьшен ровно на ту сумму, на которую уже сформирован приход в двойной записи.

                        ДолгРеглПредв = НовСтр_Долг_Приход.ДолгРегл;

                    Иначе

                        //Иначе пропорционально уменьшаем остаток строки.

                        ДолгРеглПредв = СтрокаОтгрузкиПоставки.КурсРегл * СуммаСписания;

                    КонецЕсли;

                    

                    Если СтрокаОтгрузкиПоставки.РучнойКурсУпр И НЕ ДвойнаяЗаписьНеНужна Тогда

                        ДолгУпрПредв = НовСтр_Долг_Приход.ДолгУпр;

                    Иначе

                        ДолгУпрПредв = СтрокаОтгрузкиПоставки.КурсУпр * СуммаСписания;

                    КонецЕсли;

                    

                    Если ГлобальныеПеременные.ДанныеНакладных[СтрокаОтгрузкиПоставки.Регистратор] = Неопределено Тогда

                        ГлобальныеПеременные.ДанныеНакладных.Вставить(СтрокаОтгрузкиПоставки.Регистратор, СтруктураСумм());

                    КонецЕсли;

                    

                    СтрокаОтгрузкиПоставки.Сумма     = СтрокаОтгрузкиПоставки.Сумма — СуммаСписания;

                    СтрокаОтгрузкиПоставки.СуммаРегл = СтрокаОтгрузкиПоставки.СуммаРегл — Окр(ДолгРеглПредв + ДолгРаспределеноРегл — Окр(ДолгРаспределеноРегл,2),2);

                    СтрокаОтгрузкиПоставки.СуммаУпр  = СтрокаОтгрузкиПоставки.СуммаУпр — Окр(ДолгУпрПредв + ДолгРаспределеноУпр — Окр(ДолгРаспределеноУпр,2),2);

                    

                    ДолгРаспределеноРегл = ДолгРаспределеноРегл + ДолгРеглПредв;

                    ДолгРаспределеноУпр  = ДолгРаспределеноУпр  + ДолгУпрПредв;

                    

                    ДанныеНакладной                    = ГлобальныеПеременные.ДанныеНакладных[СтрокаОтгрузкиПоставки.Регистратор];

                    ДанныеНакладной.СуммаДокумента     = ДанныеНакладной.СуммаДокумента     + СуммаСписания;

                    ДанныеНакладной.СуммаДокументаРегл = ДанныеНакладной.СуммаДокументаРегл + НовСтр_Предоплата_Расход.ПредоплатаРегл; //-

                    ДанныеНакладной.СуммаДокументаУпр  = ДанныеНакладной.СуммаДокументаУпр  + НовСтр_Предоплата_Расход.ПредоплатаУпр;

                    

                    //Уменьшаем график оплаты условной задолженности на разницу суммы зачтенного аванса и строк накладной сверх заказа.

                    СуммаУменьшенияГрафика = ВзаиморасчетыСервер.СписатьСумму(СуммаСписания, СтрокаОтгрузкиПоставки.КОплате);

                    Если СуммаСписания > 0 И НЕ СтрокаОплаты.ГрафикСписан Тогда

                        СкорректироватьПлановыеОплаты(ГлобальныеПеременные, ТаблицаПланОплат, СтрокаОплаты, СуммаСписания, «Аванс», ПланыОплат);

                    КонецЕсли;

                    

                    Если СтрокаОплаты.Сумма = 0 Тогда

                        Индексы.ИндексОплаты = Индексы.ИндексОплаты + 1;

                        Если Окр(СтрокаОплаты.СуммаРегл, 2) <> 0 ИЛИ Окр(СтрокаОплаты.СуммаУпр, 2) <> 0 Тогда

                            ДобавитьЗаписьПереоценки(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОтгрузкиПоставки.Период,

                                СтрокаОплаты, «Предоплата», -Окр(СтрокаОплаты.СуммаРегл, 2), -Окр(СтрокаОплаты.СуммаУпр, 2));

                        КонецЕсли;

                    КонецЕсли;

                КонецЕсли;

                

                Если СтрокаОтгрузкиПоставки.Сумма = 0 Тогда

                    Индексы.ИндексОтгрузкиПоставки = Индексы.ИндексОтгрузкиПоставки + 1;

                    Если СтрокаОтгрузкиПоставки.СуммаРегл <> 0 ИЛИ СтрокаОтгрузкиПоставки.СуммаУпр <> 0 Тогда

                        ДобавитьЗаписьПереоценки(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, НачалоДня(СтрокаОплаты.Период),

                            СтрокаОтгрузкиПоставки, «Долг», -Окр(СтрокаОтгрузкиПоставки.СуммаРегл, 2), -Окр(СтрокаОтгрузкиПоставки.СуммаУпр, 2));

                    КонецЕсли;

                КонецЕсли;

                

            //Отгрузка раньше оплаты.

            Иначе

                //Обычная оплата.

                Если НЕ СтрокаОплаты.ЭтоКорректировка Тогда

                    

                    //Добавляем строку прихода долга по отгрузке/поставке.

                    Если НЕ СтрокаОтгрузкиПоставки.ПриходДобавлен И СтрокаОтгрузкиПоставки.Сумма <> 0 Тогда

                        

                        ПересчитатьСуммыЕслиЭтоКорректировка(ГлобальныеПеременные, СтрокаОтгрузкиПоставки);

                        ДобавитьПриход(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОтгрузкиПоставки, «ОтгрузкаПоставка»);

                        

                        //Уточняется план только на сумму по заказу.

                        СкорректироватьПлановыеОплаты(ГлобальныеПеременные, ТаблицаПланОплат, СтрокаОтгрузкиПоставки, СтрокаОтгрузкиПоставки.Сумма — СтрокаОтгрузкиПоставки.КОплате, «УточнениеПлана»,ПланыОплат);

                        //Добавляются записи плана на всю сумму включая уточнение и сверхзаказа.

                        СкорректироватьПлановыеОплаты(ГлобальныеПеременные, ТаблицаПланОплат, СтрокаОтгрузкиПоставки, СтрокаОтгрузкиПоставки.Сумма, «ОтгрузкаПоставка», ПланыОплат);

                    КонецЕсли;

                    

                    //Списываем план отгрузки если есть.

                    Если НЕ СтрокаОтгрузкиПоставки.ПланОтгрузокПоставокСписан Тогда

                        СписатьПланОтгрузкиПоставки(ГлобальныеПеременные, ТаблицаПланОтгрузокПоставок, СтрокаОтгрузкиПоставки, ПланыОтгрузокПоставок);

                    КонецЕсли;

                    
                    Если СтрокаОтгрузкиПоставки.Сумма <> 0 Тогда

                    

                        //Переоценка накладной до даты оплаты.

                        Если НужнаПереоценка Тогда

                            ПереоценитьДолг(ГлобальныеПеременные, ТаблицаРасчетовПоСрокам, СтрокаОтгрузкиПоставки, СтрокаОплаты);

                        КонецЕсли;

                        

                        //Если расчетный документ накладная изменился, то сбрасываем служебные реквизиты распределения копеек.

                        Если ТекущийДокументОтгрузкиПоставки <> СтрокаОтгрузкиПоставки.РасчетныйДокумент Тогда

                            ДолгРаспределеноРегл       = 0;

                            ДолгРаспределеноУпр        = 0;

                            ТекущийДокументОтгрузкиПоставки = СтрокаОтгрузкиПоставки.РасчетныйДокумент;

                        КонецЕсли;

                        

                        //Добавляем строку погашения задолженности.

                        НовСтр_Долг_Расход = ТаблицаРасчетовПоСрокам.Добавить();

                        НовСтр_Долг_Расход.ВидДвижения                   = ВидДвиженияНакопления.Расход;

                        НовСтр_Долг_Расход.ДокументРегистратор           = СтрокаОплаты.Регистратор;

                        //Взаимозачет считаем взаимозачетом

                        Если СтрокаОплаты.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВзаимозачетЗадолженности Тогда

                            НовСтр_Долг_Расход.ХозяйственнаяОперация         = СтрокаОплаты.ХозяйственнаяОперация;

                        Иначе

                            НовСтр_Долг_Расход.ХозяйственнаяОперация         = ХозяйственныеОперации[«ПогашениеЗадолженности»];

                        КонецЕсли;

                        НовСтр_Долг_Расход.ВалютаДокумента               = СтрокаОплаты.ВалютаДокумента;

                        НовСтр_Долг_Расход.Период                        = СтрокаОплаты.Период;

                        НовСтр_Долг_Расход.ПорядокОпера

Показывать по
10
20
40
сообщений

Новая тема

Ответить

enches

Дата регистрации: 24.01.2014
Сообщений: 9

«Здравствуйте!<br>Необходимо в ПФР сделать корректировку за 1 квартал 2013 г. При записи документа происходит следующая ошибка:<br> <br>{Обработка.ПодготовкаДанныхПФР2010.МодульОбъекта(1259)}: Ошибка при вызове метода контекста (Записать)<br>                                                             ЭлементСоответствия.Значение.Записать(?(ЭлементСоответствия.Значение.Проведен,РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));<br>по причине:<br>Не удалось провести «Опись сведений АДВ-6-2 (до 2010 года — Ведомость уплаты АДВ-11) 00000000002 от 27.02.2014 0:00:00″!<br> <br>У пользователя полные права. Подскажите, пожалуйста, что лучше сделать?»

Тэра

Дата регистрации: 25.12.2008
Сообщений: 22390

релиз? И при записи какого документа это происходит?

enches

Дата регистрации: 24.01.2014
Сообщений: 9

Зарплата и Управление Персоналом, редакция 2.5 (2.5.78.1)<br>документ Опись сведений АДВ-6-2 (до 2010 года — Ведомость уплаты АДВ-11)

Sh_S

Дата регистрации: 02.03.2007
Сообщений: 7730

ну так а пачки, входящие в состав описи, проведены?

enches

Дата регистрации: 24.01.2014
Сообщений: 9

пачка не проводилась одна

enches

Дата регистрации: 24.01.2014
Сообщений: 9

Большое спасибо за советы!<br> <br>Проблема решена. А проблема была в следующем: в отправленной в пфр исходной описи пользователь смог исправить период, который был указан неверно, на верный период, а потом пытался создать корректировку с правильным периодом работы, т.е. с тем же периодом, который указан в исходных сведениях. В результате изменили период в исходных сведениях на тот период, который был указан при отправке в пфр (неверный), потом в корректировке поставили верный период.

Показывать по
10
20
40
сообщений

Читают тему:

Ошибка при вызове метода контекста (Записать)

Я

  

3axap_4

16.10.13 — 22:33

Доброго времени суток:

собственно принялся устранять дубли в Бухгалтерии 3.0 скачал обработку  от сюда http://infostart.ru/public/14986/ все хорошо находит дубли находит ссылки но при попытке замены и записи документа начинает ругаться на Ошибка при вызове метода контекста (Записать), как это можно поправить?

Спасибо за внимание!

  

3axap_4

1 — 16.10.13 — 22:39

Собственно по коду:

Попытка    

Параметры.Объект.Записать();

Исключение            

Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);

Собственно происходит замена значения реквизита (дубликата) на правильное значение и после этого попытка записи измененного документа где:

Параметры — структура

Параметры.Объект — собственно ДокументОбъект

  

3axap_4

2 — 16.10.13 — 22:49

или посоветуйте достойную альтернативу, кроме сам напиши, время поджимает

  

vicof

3 — 16.10.13 — 23:15

Сообщить(ТипЗнч(Объект));

  

vicof

4 — 16.10.13 — 23:16

Ну или как там в УФ

  

3axap_4

5 — 16.10.13 — 23:19

(3) минутку

  

3axap_4

6 — 16.10.13 — 23:20

например:

Документ объект: Ввод начальных остатков

  

vicof

7 — 16.10.13 — 23:25

Период открыт?

  

vicof

8 — 16.10.13 — 23:25

Дата и номер отличны от других документов того же типа?

  

vicof

9 — 16.10.13 — 23:26

Объект.ОбменДанными.Загрузка = Истина?

  

vicof

10 — 16.10.13 — 23:27

  

3axap_4

11 — 16.10.13 — 23:27

(9) Истина

Отличны, в ручную (проставляя те же значения) все отлично перепроводится и сохраняется…

  

3axap_4

12 — 16.10.13 — 23:28

(10) искал уже…

  

vicof

13 — 16.10.13 — 23:32

Ну давай сюда свой код полностью

  

3axap_4

14 — 16.10.13 — 23:36

БылиИсключения = Ложь;

    Если ВыполнятьВТранзакции Тогда

        НачатьТранзакцию();

    КонецЕсли;

    ОбрабатываемаяСсылка = Неопределено;

        
    Параметры = Новый Структура;

        

    Параметры.Вставить(«Объект», Неопределено);    

    СтруктураКоллизий = Новый Структура;

    

    ЕСли мФормаИндикатора<>Неопределено Тогда

        мФормаИндикатора.МаксимальноеЗначение = ТаблицаСсылок.Количество();

        мФормаИндикатора.КомментарийЗначения = «Выполняется замена элементов.» + ЗаголовокИндикации;

        мФормаИндикатора.Значение = 0;

    КонецЕсли;

    
    Для Каждого СтрокаТаблицы Из ТаблицаСсылок Цикл

        
        Ссылка = СтрокаТаблицы.Ссылка;

        

        // **** надо вынести в корень

        Заменяемые = Новый Соответствие;

        Заменяемые.Вставить(Ссылка, ПравильныйЭлемент);

        

        ОбработкаПрерыванияПользователя();

        Сообщить(«Обрабатывается » + СтрокаТаблицы.Данные);

        

        Если ОбрабатываемаяСсылка <> СтрокаТаблицы.Данные Тогда

            Если Истина

                И ОбрабатываемаяСсылка <> Неопределено

                И Не ЛксЛиКлючЗаписиРегистра(ОбрабатываемаяСсылка)

            Тогда

                Если ОтключатьКонтрольЗаписи Тогда

                    Параметры.Объект.ОбменДанными.Загрузка = Истина;

                КонецЕсли;

                

                Попытка

                    Параметры.Объект.Записать(РежимЗаписиДокумента.Проведение);

                Исключение

                    Сообщить(ТипЗнч(Параметры.Объект));

                    Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);

                    БылиИсключения = Истина;

                    Если ВыполнятьВТранзакции Тогда

                        Перейти ~ОТКАТ;

                    КонецЕсли;

                КонецПопытки;

                Параметры.Объект = Неопределено;

            КонецЕсли;

            ОбрабатываемаяСсылка = СтрокаТаблицы.Данные;

            
        КонецЕсли;

            
        Если Метаданные.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда

            

            Если Параметры.Объект = Неопределено Тогда

                Параметры.Объект = СтрокаТаблицы.Данные.ПолучитьОбъект();

            КонецЕсли;

            

            Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл

                Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) И Параметры.Объект[Реквизит.Имя] = Ссылка Тогда

                    Параметры.Объект[Реквизит.Имя] = ПравильныйЭлемент;

                КонецЕсли;

            КонецЦикла;

                

            Для Каждого ТЧ ИЗ СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл

                Для Каждого Реквизит Из ТЧ.Реквизиты Цикл

                    Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда

                        СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);

                        Пока СтрокаТабЧасти <> Неопределено Цикл

                            СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент;

                            СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);

                        КонецЦикла;

                    КонецЕсли;

                КонецЦикла;

            КонецЦикла;

            

            Для Каждого Движение ИЗ СтрокаТаблицы.Метаданные.Движения Цикл

                БылиИсключения = Не ОбработатьЗаписьРегистра(Параметры.Объект.Движения[Движение.Имя], Заменяемые);

                Если Истина

                    И БылиИсключения

                    И ВыполнятьВТранзакции

                Тогда

                    Перейти ~ОТКАТ;

                КонецЕсли;

            КонецЦикла;

            

            Для Каждого Последовательность ИЗ Метаданные.Последовательности Цикл

                Если Последовательность.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда

                    НадоЗаписывать = Ложь;

                    НаборЗаписи = Последовательности[Последовательность.Имя].СоздатьНаборЗаписей();

                    НаборЗаписи.Отбор.Регистратор.Установить(СтрокаТаблицы.Данные);

                    НаборЗаписи.Прочитать();

                    Если НаборЗаписи.Количество() = 0 Тогда

                        Продолжить;

                    КонецЕсли;

                    Для Каждого Измерение ИЗ Последовательность.Измерения Цикл

                        Если Истина

                            И Измерение.Тип.СодержитТип(ТипЗнч(Ссылка))

                            И НаборЗаписи[0][Измерение.Имя] = Ссылка

                        Тогда

                            НаборЗаписи[0][Измерение.Имя] = ПравильныйЭлемент;

                            НадоЗаписывать = Истина;

                        КонецЕсли;

                    КонецЦикла;

                    Если НадоЗаписывать Тогда

                        Если ОтключатьКонтрольЗаписи Тогда

                            НаборЗаписи.ОбменДанными.Загрузка = Истина;

                        КонецЕсли;

                        Попытка

                            НаборЗаписи.Записать();

                        Исключение

                            Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);

                            БылиИсключения = Истина;

                            Если ВыполнятьВТранзакции Тогда

                                Перейти ~ОТКАТ;

                            КонецЕсли;

                        КонецПопытки;

                    КонецЕсли;

                КонецЕсли;

            КонецЦикла;

            
        ИначеЕсли Метаданные.Справочники.Содержит(СтрокаТаблицы.Метаданные) Тогда

            

            Если Параметры.Объект = Неопределено Тогда

                Параметры.Объект = СтрокаТаблицы.Данные.ПолучитьОбъект();

            КонецЕсли;

            

            Если СтрокаТаблицы.Метаданные.Владельцы.Содержит(Ссылка.Метаданные()) И Параметры.Объект.Владелец = Ссылка Тогда

                Параметры.Объект.Владелец = ПравильныйЭлемент;

            КонецЕсли;

            

            Если СтрокаТаблицы.Метаданные.Иерархический И Параметры.Объект.Родитель = Ссылка Тогда

                Параметры.Объект.Родитель = ПравильныйЭлемент;

            КонецЕсли;

            

            Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл

                Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) И Параметры.Объект[Реквизит.Имя] = Ссылка Тогда

                    Параметры.Объект[Реквизит.Имя] = ПравильныйЭлемент;

                КонецЕсли;

            КонецЦикла;

            

            Для Каждого ТЧ ИЗ СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл

                Для Каждого Реквизит Из ТЧ.Реквизиты Цикл

                    Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда

                        СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);

                        Пока СтрокаТабЧасти <> Неопределено Цикл

                            СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент;

                            СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);

                        КонецЦикла;

                    КонецЕсли;

                КонецЦикла;

            КонецЦикла;

            

        ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(СтрокаТаблицы.Метаданные)

                  ИЛИ Метаданные.ПланыСчетов.Содержит(СтрокаТаблицы.Метаданные)

                  ИЛИ Метаданные.ПланыВидовРасчета.Содержит(СтрокаТаблицы.Метаданные)

                  ИЛИ Метаданные.Задачи.Содержит(СтрокаТаблицы.Метаданные)

                  ИЛИ Метаданные.БизнесПроцессы.Содержит(СтрокаТаблицы.Метаданные) Тогда

            

            Если Параметры.Объект = Неопределено Тогда

                Параметры.Объект = СтрокаТаблицы.Данные.ПолучитьОбъект();

            КонецЕсли;

                        

            Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл

                Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) И Параметры.Объект[Реквизит.Имя] = Ссылка Тогда

                    Параметры.Объект[Реквизит.Имя] = ПравильныйЭлемент;

                КонецЕсли;

            КонецЦикла;

            

            Для Каждого ТЧ ИЗ СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл

                Для Каждого Реквизит Из ТЧ.Реквизиты Цикл

                    Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда

                        СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);

                        Пока СтрокаТабЧасти <> Неопределено Цикл

                            СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент;

                            СтрокаТабЧасти = Параметры.Объект[ТЧ.Имя].Найти(Ссылка, Реквизит.Имя);

                        КонецЦикла;                            

                    КонецЕсли;

                КонецЦикла;

            КонецЦикла;    

            
        ИначеЕсли Метаданные.Константы.Содержит(СтрокаТаблицы.Метаданные) Тогда

            
            Константы[СтрокаТаблицы.Метаданные.Имя].Установить(ПравильныйЭлемент);

            
        ИначеЕсли Метаданные.РегистрыСведений.Содержит(СтрокаТаблицы.Метаданные) Тогда    

            

            МенеджерЗаписи            = РегистрыСведений[СтрокаТаблицы.Метаданные.Имя].СоздатьМенеджерЗаписи();

            КоллизийныйМенеджерЗаписи = РегистрыСведений[СтрокаТаблицы.Метаданные.Имя].СоздатьМенеджерЗаписи();

            Периодический = (СтрокаТаблицы.Метаданные.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический);

            Если Периодический Тогда

                МенеджерЗаписи.Период            = СтрокаТаблицы.Данные.Период;

                КоллизийныйМенеджерЗаписи.Период = СтрокаТаблицы.Данные.Период;

            КонецЕсли;

            МассивИзмененныхИзмерений = Новый Массив;

            Для каждого Рекв Из СтрокаТаблицы.Метаданные.Измерения Цикл

                ЗначениеИзмерения = СтрокаТаблицы.Данные[Рекв.Имя];

                МенеджерЗаписи[Рекв.Имя] = ЗначениеИзмерения;

                Если ЗначениеИзмерения = Ссылка Тогда

                    КоллизийныйМенеджерЗаписи[Рекв.Имя] = ПравильныйЭлемент;

                    МассивИзмененныхИзмерений.Добавить(Рекв.Имя);

                Иначе

                    КоллизийныйМенеджерЗаписи[Рекв.Имя] = ЗначениеИзмерения;

                КонецЕсли;

            КонецЦикла;

            

            БылаКоллизия = Ложь;

            Если МассивИзмененныхИзмерений.Количество() > 0 Тогда

                КоллизийныйМенеджерЗаписи.Прочитать();

                Если КоллизийныйМенеджерЗаписи.Выбран() Тогда

                    МенеджерЗаписи.Прочитать();

                    МассивКоллекцийРеквизитов = Новый Массив;

                    МассивКоллекцийРеквизитов.Добавить(СтрокаТаблицы.Метаданные.Ресурсы);

                    МассивКоллекцийРеквизитов.Добавить(СтрокаТаблицы.Метаданные.Реквизиты);

                    Если Не СтруктураКоллизий.Свойство(СтрокаТаблицы.Метаданные.Имя) Тогда

                        ТаблицаЗаписей = РегистрыСведений[СтрокаТаблицы.Метаданные.Имя].СоздатьНаборЗаписей().Выгрузить();

                        ТаблицаЗаписей.Колонки.Добавить(«МенеджерЗамены»);

                        ТаблицаЗаписей.Колонки.Добавить(«МенеджерОригинала»);

                        Для Каждого КоллекцияРеквизитов Из МассивКоллекцийРеквизитов Цикл

                            Для Каждого МетаРеквизит Из КоллекцияРеквизитов Цикл

                                ИмяКолонки = МетаРеквизит.Имя;

                                ПредставлениеКолонки = МетаРеквизит.Представление();

                                КолонкаОригинала = ТаблицаЗаписей.Колонки[ИмяКолонки];

                                КолонкаОригинала.Имя       = «Оригинал»   + ИмяКолонки;

                                КолонкаОригинала.Заголовок = «Оригинал: » + ПредставлениеКолонки;

                                КолонкаЗамены = ТаблицаЗаписей.Колонки.Вставить(ТаблицаЗаписей.Колонки.Индекс(КолонкаОригинала),

                                    «Замена» + ИмяКолонки, , «Замена: » + ПредставлениеКолонки);

                                ЗаполнитьЗначенияСвойств(КолонкаЗамены, КолонкаОригинала, , «Имя, Заголовок»);

                            КонецЦикла;

                        КонецЦикла;

                        ТаблицаЗаписей.Колонки.Вставить(0, «Заменить», Новый ОписаниеТипов(«Булево»), «Заменить»);

                        СтруктураКоллизий.Вставить(СтрокаТаблицы.Метаданные.Имя, ТаблицаЗаписей);

                    КонецЕсли;

                    НоваяКоллизийнаяЗапись = СтруктураКоллизий[СтрокаТаблицы.Метаданные.Имя].Добавить();

                    Для Каждого КоллекцияРеквизитов Из МассивКоллекцийРеквизитов Цикл

                        Для Каждого МетаРеквизит Из КоллекцияРеквизитов Цикл

                            ИмяКолонки = МетаРеквизит.Имя;

                            ЗначениеРеквизита = МенеджерЗаписи[ИмяКолонки];

                            НоваяКоллизийнаяЗапись[«Оригинал» + ИмяКолонки] = КоллизийныйМенеджерЗаписи[ИмяКолонки];

                            Если ЗначениеРеквизита = Ссылка Тогда

                                НоваяКоллизийнаяЗапись[«Замена» + ИмяКолонки] = ПравильныйЭлемент;

                            Иначе

                                НоваяКоллизийнаяЗапись[«Замена» + ИмяКолонки] = ЗначениеРеквизита;

                            КонецЕсли;

                            КоллизийныйМенеджерЗаписи[ИмяКолонки] = НоваяКоллизийнаяЗапись[«Замена» + ИмяКолонки];

                            Если НоваяКоллизийнаяЗапись[«Оригинал» + ИмяКолонки] <> НоваяКоллизийнаяЗапись[«Замена» + ИмяКолонки] Тогда

                                БылаКоллизия = Истина;

                            КонецЕсли;

                        КонецЦикла;

                    КонецЦикла;

                    Если БылаКоллизия Тогда

                        ЗаполнитьЗначенияСвойств(НоваяКоллизийнаяЗапись, КоллизийныйМенеджерЗаписи);

                        Для Каждого ИмяКолонки Из МассивИзмененныхИзмерений Цикл

                            НоваяКоллизийнаяЗапись[ИмяКолонки] = МенеджерЗаписи[ИмяКолонки];

                        КонецЦикла;

                        НоваяКоллизийнаяЗапись.МенеджерЗамены    = КоллизийныйМенеджерЗаписи;

                        НоваяКоллизийнаяЗапись.МенеджерОригинала = МенеджерЗаписи;

                    Иначе

                        СтруктураКоллизий[СтрокаТаблицы.Метаданные.Имя].Удалить(НоваяКоллизийнаяЗапись);

                        МенеджерЗаписи.Удалить();

                        БылаКоллизия = Истина;

                    КонецЕсли;

                КонецЕсли;

            КонецЕсли;

            

            Если БылаКоллизия Тогда

                БылиИсключения = Ложь;

            Иначе

                БылиИсключения = Не ОбработатьЗаписьРегистра(МенеджерЗаписи, Заменяемые);

            КонецЕсли;

            

            Если Истина

                И БылиИсключения

                И ВыполнятьВТранзакции

            Тогда

                Перейти ~ОТКАТ;

            КонецЕсли;

        Иначе

            Сообщить(«Ссылки типа «+СтрокаТаблицы.Метаданные+» не заменяются!!»);

        КонецЕсли;

        ОбработкаПрерыванияПользователя();

        Если мФормаИндикатора <> Неопределено Тогда

            мФормаИндикатора.Значение = мФормаИндикатора.Значение + 1;

        Иначе

            Состояние(«Выполнено » + Формат(100 * ТаблицаСсылок.Индекс(СтрокаТаблицы) + 1 / ТаблицаСсылок.Количество(), «ЧЦ=5; ЧДЦ=2») + «%»);

        КонецЕсли;

    КонецЦикла;

    

    Если Параметры.Объект <> Неопределено Тогда

        Если ОтключатьКонтрольЗаписи Тогда

            Параметры.Объект.ОбменДанными.Загрузка = Истина;

        КонецЕсли;

        Попытка

            Параметры.Объект.Записать();

            Если ОтключатьКонтрольЗаписи Тогда

                ЗаписьЖурналаРегистрации(«Запись с флагом Загрузка», УровеньЖурналаРегистрации.Информация, СтрокаТаблицы.Метаданные,

                    СтрокаТаблицы.Данные, «»);

            КонецЕсли;

        Исключение

            Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);

            БылиИсключения = Истина;

            Если ВыполнятьВТранзакции Тогда

                Перейти ~ОТКАТ;

            КонецЕсли;

        КонецПопытки;

    КонецЕсли;

    

    МассивЭлементовКУдалению = Новый Массив;

    Для Каждого ЭлементТаблицыРегистра Из СтруктураКоллизий Цикл

        Если ЭлементТаблицыРегистра.Значение.Количество() = 0 Тогда

            МассивЭлементовКУдалению.Добавить(ЭлементТаблицыРегистра.Ключ);

        КонецЕсли;

    КонецЦикла;

    Для Каждого ЭлементКУдалению Из МассивЭлементовКУдалению Цикл

        СтруктураКоллизий.Удалить(ЭлементКУдалению);

    КонецЦикла;

    Если СтруктураКоллизий.Количество() > 0 Тогда

        ФормаЗамещенияВНезависимыхРегистрахСведений = ПолучитьФорму(«ФормаЗамещенияВНезависимыхРегистрахСведений»);

        ФормаЗамещенияВНезависимыхРегистрахСведений.СтруктураКоллизий = СтруктураКоллизий;

        ФормаЗамещенияВНезависимыхРегистрахСведений.ОткрытьМодально();

    КонецЕсли;

~ОТКАТ:

    Если ВыполнятьВТранзакции Тогда

        Если БылиИсключения Тогда

            ОтменитьТранзакцию();

        Иначе

            ЗафиксироватьТранзакцию();

        КонецЕсли;    

    КонецЕсли;

    Возврат Не БылиИсключения;

  

vicof

15 — 16.10.13 — 23:49

На первый взгляд все нормуль. Может какие обязательные реквизиты не заполнены в документе.

  

vicof

16 — 16.10.13 — 23:49

Поковыряйся перед записью и при записи этого дока

  

3axap_4

17 — 16.10.13 — 23:50

да вроде нет вручную делаю абсолютно те же действия (меняю значения, перепровожу) все ок, ничего лишнего…

  

3axap_4

18 — 16.10.13 — 23:50

(16) в том то и дело что выскакивает на всех доках

  

3axap_4

19 — 16.10.13 — 23:51

(16) а хотя ты знаешь, не всех, есть опредеенная группа, действительно пойду в этом направлении спасибо!

  

Apokalipsec

20 — 17.10.13 — 00:07

посмотри в ЖР ошибки и так какую ошибку он тебе говорит?

  

3axap_4

21 — 17.10.13 — 00:22

(20) чёт в жр ничего про ошибки нет, если делать в транзакции то у нее статус — отменено, если без — то завершено, но документ не в том ни в другом случае не сохраняется

  1. 13.01.2023, 15:12

    #1

    Smarsa вне форума


    Гость форума


    Добрый день, в 1с:Свод отчётов, не получается записать и закрыть новый отчёт, пишет:
    Ошибка при вызове метода контекста (Записать)
    {Документ.УниверсальныйРег ламентированныйОтчет.Форм� �.ФормаДокументаУправляема я.Форма(2136)}: Записать(Новый Структура(«ЗакрытьФорму»));
    по причине:
    Не удалось записать «Отчет учреждения 00000015 от 12.01.2023 0:00:00»!

    И потом в служебных сообщениях пишет:
    — Отчет с такими параметрами уже существует в информационной базе. Запись невозможна.

    Пожалуйста помогите не знаю, что делать

    Последний раз редактировалось Smarsa; 13.01.2023 в 15:19.


В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


	 Запрос = Новый Запрос;
	 Запрос.Текст =
	         "ВЫБРАТЬ
	          |        Номенклатура.Ссылка КАК Ссылка,
	          |        Номенклатура.ВерсияДанных КАК ВерсияДанных,
	          |        Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	          |        Номенклатура.Родитель КАК Родитель,
	          |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	          |        Номенклатура.Код КАК Код,
	          |        Номенклатура.Наименование КАК Наименование,
	          |        Номенклатура.Артикул КАК Артикул,
	          |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	          |        Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	          |        Номенклатура.Предопределенный КАК Предопределенный,
	          |        Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	          |ИЗ
	          |        Справочник.Номенклатура КАК Номенклатура
	          |ГДЕ
	          |         ";
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 КонецЦикла;

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник

Рис.3 Синтакс-помощник

В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.

Показывать по
10
20
40
сообщений

Новая тема

Ответить

enches

Дата регистрации: 24.01.2014
Сообщений: 9

«Здравствуйте!<br>Необходимо в ПФР сделать корректировку за 1 квартал 2013 г. При записи документа происходит следующая ошибка:<br> <br>{Обработка.ПодготовкаДанныхПФР2010.МодульОбъекта(1259)}: Ошибка при вызове метода контекста (Записать)<br>                                                             ЭлементСоответствия.Значение.Записать(?(ЭлементСоответствия.Значение.Проведен,РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));<br>по причине:<br>Не удалось провести «Опись сведений АДВ-6-2 (до 2010 года — Ведомость уплаты АДВ-11) 00000000002 от 27.02.2014 0:00:00″!<br> <br>У пользователя полные права. Подскажите, пожалуйста, что лучше сделать?»

Тэра

Дата регистрации: 25.12.2008
Сообщений: 22390

релиз? И при записи какого документа это происходит?

enches

Дата регистрации: 24.01.2014
Сообщений: 9

Зарплата и Управление Персоналом, редакция 2.5 (2.5.78.1)<br>документ Опись сведений АДВ-6-2 (до 2010 года — Ведомость уплаты АДВ-11)

Sh_S

Дата регистрации: 02.03.2007
Сообщений: 7730

ну так а пачки, входящие в состав описи, проведены?

enches

Дата регистрации: 24.01.2014
Сообщений: 9

пачка не проводилась одна

enches

Дата регистрации: 24.01.2014
Сообщений: 9

Большое спасибо за советы!<br> <br>Проблема решена. А проблема была в следующем: в отправленной в пфр исходной описи пользователь смог исправить период, который был указан неверно, на верный период, а потом пытался создать корректировку с правильным периодом работы, т.е. с тем же периодом, который указан в исходных сведениях. В результате изменили период в исходных сведениях на тот период, который был указан при отправке в пфр (неверный), потом в корректировке поставили верный период.

Показывать по
10
20
40
сообщений

Читают тему:

  • Главная
  •  — 
  • Форум
  •  — 
  • ТЕХПОДДЕРЖКА
  •  — 
  • ЭКСЕЛОН — Загрузка в 1С из EXCEL
  •  — 
  • Ошибка при вызове метода контекста (Записать)
 

Вчера заметил, что перестали обновляется цены, проверил выгрузку и обнаружил что часть номенклатуры не записывается.
Возможно это как то связано с переходом на 1с 11.5
Сегодня обновил модуль проблема осталась

Номенклатура_СоздатьОбновить 020: {ВнешняяОбработка.APPLIX_RU_ЗагрузкаИзExcel_ЗМ.МодульОбъекта(70081)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: {Справочник.Номенклатура.МодульМенеджера(2911)}: Преобразование значения к типу Булево не может быть выполнено

 

Ошибка при попытке обновить номенклатуру

 

1С:Предприятие 8.3 (8.3.20.1674)
Управление торговлей, редакция 11 (11.5.7.336)
модуль загрузки 16.5.8

Прикрепленные файлы

 

Модуль создал номенклатуру, теперь ее невозможно открыть

ТекстыЗапросов = Новый Массив;
ПараметрыЗапроса = Новый Структура;

ИменаОбъектовМетаданных = Новый Массив;

Для Каждого СсылкиПоТипу Из СсылкиПоТипам Цикл
Тип = СсылкиПоТипу.Ключ;
ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
Если ОбъектМетаданных = Неопределено Тогда
ВызватьИсключение
НСтр(«ru = ‘Неверный первый параметр Ссылки в функции ОбщегоНазначения.ЗначенияРеквизитовОбъектов:
          |- Значения массива должны быть ссылками'»);
КонецЕсли;

ПолноеИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя();
ИменаОбъектовМетаданных.Добавить(ПолноеИмяОбъектаМетаданных);

Прикрепленные файлы

 

пришлите ваш файл и скриншоты всех настроек колонок

 
 
 

у нас загрузилось нормально

доступ к базе дадите? попробуем на вашей базе отладкой посмотреть что не так

 

Сергей Юданов

Пользователь

Сообщений: 23
Регистрация: 09.04.2019

#9


0
 

30.05.2022 15:03:02

Разобрались сами.

На некоторые позиции номенклатуры в поле (Вид номенклатуры) было назначено не значение, а почему-то название категории в котором содержались значения.

ПОСЛЕДНИЕ СООБЩЕНИЯ

Сейчас на форуме (гостей: 50)

Всего зарегистрированных пользователей: 2322

Приняло участие в обсуждении: 376

Всего тем: 846

Если при отладке COM-соединения Вы встретили ошибку «Ошибка при вызове метода контекста Записать», то есть вероятность, что Вы не получите в отладчике причину отказа в записи.

То есть, никакая строка кода не будет соответствовать данной ошибке. Например, такое происходит, если код записываемого элемента справочника не уникален. Такую ошибку можно увидеть лишь в пользовательском режиме, при попытке добавить запись справочника вручную.

Запись опубликована в рубрике Без рубрики с метками записать, отладка, ошибка. Добавьте в закладки постоянную ссылку.

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста занять сканер
  • Ошибка при вызове метода контекста значениевданныеформы
  • Ошибка при вызове метода контекста зафиксироватьтранзакцию
  • Ошибка при вызове метода контекста данныеформывзначение
  • Ошибка при вызове метода контекста зарегистрироватьизменения