Имя: Пароль:
1C
1С v8
При заполнении ЗНРС реквизитами ЗП ошибка в ОбновленииОтображения
,
0 skupidom5
 
19.09.17
09:17
Управление производственным предприятием, редакция 1.2 (1.2.26.1)
Добавил процедуру "Заполнить по Заказу поставщику"
вот текст процедуры:
Процедура ПереЗаполнитьЗаявкуПоЗаказуПоставщику(ПеремОснование)Экспорт
    
    Если ТипЗнч(ПеремОснование) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда

    ДатаРасхода=ПеремОснование.ДатаОплаты;
    ДокументОснование = ПеремОснование;
    ЦФО = ПеремОснование.Подразделение;
    
    СтруктураКурсаОснования = МодульВалютногоУчета.ПолучитьКурсВалюты(ПеремОснование.ВалютаДокумента, ПеремОснование.Дата);
    КурсОснования=СтруктураКурсаОснования.Курс;
    КратностьОснования=СтруктураКурсаОснования.Кратность;
    
    ВидОперации    = Перечисления.ВидыОперацийЗаявкиНаРасходование.ОплатаПоставщику;
    
    Если ЗначениеЗаполнено(ПеремОснование.СтруктурнаяЕдиница) Тогда
        
        Если ТипЗнч(ПеремОснование.СтруктурнаяЕдиница) = Тип("СправочникСсылка.Кассы") Тогда
            ФормаОплаты = Перечисления.ВидыДенежныхСредств.Наличные;
        Иначе
            ФормаОплаты = Перечисления.ВидыДенежныхСредств.Безналичные;
        КонецЕсли;
        
        БанковскийСчетКасса = ПеремОснование.СтруктурнаяЕдиница;
    Иначе
        ФормаОплаты = Перечисления.ВидыДенежныхСредств.Наличные;
        БанковскийСчетКасса = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяКасса");
    КонецЕсли;
    
    Если ЗначениеЗаполнено(БанковскийСчетКасса) Тогда
        ВалютаДокумента=БанковскийСчетКасса.ВалютаДенежныхСредств;
    Иначе
        ВалютаДокумента=мВалютаРегламентированногоУчета;
    КонецЕсли;
    
    СтруктураКурсаДокумента      = МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаДокумента,КонецДня(ДатаРасхода));
    КурсДокумента                = СтруктураКурсаДокумента.Курс;
    КратностьДокумента           = СтруктураКурсаДокумента.Кратность;
    
    
    РасшифровкаПлатежа.Очистить();
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ОстаткиЗаказа.СтатьяДвиженияДенежныхСредств,
                   |    СУММА(ОстаткиЗаказа.Сумма) КАК Сумма,
                   |    ОстаткиЗаказа.ДоговорКонтрагента,
                   |    ОстаткиЗаказа.Номенклатура,
                   |    СУММА(ОстаткиЗаказа.Количество) КАК Количество
                   |ИЗ
                   |    (ВЫБРАТЬ
                   |        ВЫБОР
                   |            КОГДА ЗаказПоставщикуОборудование.рар_ВидРабот = ЗНАЧЕНИЕ(Справочник.рар_ВидыРабот.ПустаяСсылка)
                   |                ТОГДА ЗаказПоставщикуОборудование.Ссылка.рар_ВидРабот.СтатьяДвиженияДенежныхСредств
                   |            ИНАЧЕ ЗаказПоставщикуОборудование.рар_ВидРабот.СтатьяДвиженияДенежныхСредств
                   |        КОНЕЦ КАК СтатьяДвиженияДенежныхСредств,
                   |        ВЫБОР
                   |            КОГДА ЗаказПоставщикуОборудование.Ссылка.СуммаВключаетНДС
                   |                ТОГДА ЗаказПоставщикуОборудование.Сумма
                   |            ИНАЧЕ ЗаказПоставщикуОборудование.Сумма + ЗаказПоставщикуОборудование.СуммаНДС
                   |        КОНЕЦ КАК Сумма,
                   |        ЗаказПоставщикуОборудование.Ссылка.ДоговорКонтрагента КАК ДоговорКонтрагента,
                   |        ЗаказПоставщикуОборудование.Номенклатура КАК Номенклатура,
                   |        ЗаказПоставщикуОборудование.Количество КАК Количество
                   |    ИЗ
                   |        Документ.ЗаказПоставщику.Оборудование КАК ЗаказПоставщикуОборудование
                   |    ГДЕ
                   |        ЗаказПоставщикуОборудование.Ссылка = &Основание
                   |        И ЗаказПоставщикуОборудование.Ссылка.ВидОперации = &ВидОперацииОборудование
                   |    
                   |    ОБЪЕДИНИТЬ ВСЕ
                   |    
                   |    ВЫБРАТЬ
                   |        ВЫБОР
                   |            КОГДА ЗаказПоставщикуОборудование.рар_ВидРабот = ЗНАЧЕНИЕ(Справочник.рар_ВидыРабот.ПустаяСсылка)
                   |                ТОГДА ЗаказПоставщикуОборудование.Ссылка.рар_ВидРабот.СтатьяДвиженияДенежныхСредств
                   |            ИНАЧЕ ЗаказПоставщикуОборудование.рар_ВидРабот.СтатьяДвиженияДенежныхСредств
                   |        КОНЕЦ,
                   |        ВЫБОР
                   |            КОГДА ЗаказПоставщикуОборудование.Ссылка.СуммаВключаетНДС
                   |                ТОГДА ЗаказПоставщикуОборудование.Сумма
                   |            ИНАЧЕ ЗаказПоставщикуОборудование.Сумма + ЗаказПоставщикуОборудование.СуммаНДС
                   |        КОНЕЦ,
                   |        ЗаказПоставщикуОборудование.Ссылка.ДоговорКонтрагента,
                   |        ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка),
                   |        0
                   |    ИЗ
                   |        Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуОборудование
                   |    ГДЕ
                   |        ЗаказПоставщикуОборудование.Ссылка = &Основание
                   |    
                   |    ОБЪЕДИНИТЬ ВСЕ
                   |    
                   |    ВЫБРАТЬ
                   |        ВЫБОР
                   |            КОГДА ЗаказПоставщикуОборудование.рар_ВидРабот = ЗНАЧЕНИЕ(Справочник.рар_ВидыРабот.ПустаяСсылка)
                   |                ТОГДА ЗаказПоставщикуОборудование.Ссылка.рар_ВидРабот.СтатьяДвиженияДенежныхСредств
                   |            ИНАЧЕ ЗаказПоставщикуОборудование.рар_ВидРабот.СтатьяДвиженияДенежныхСредств
                   |        КОНЕЦ,
                   |        ВЫБОР
                   |            КОГДА ЗаказПоставщикуОборудование.Ссылка.СуммаВключаетНДС
                   |                ТОГДА ЗаказПоставщикуОборудование.Сумма
                   |            ИНАЧЕ ЗаказПоставщикуОборудование.Сумма + ЗаказПоставщикуОборудование.СуммаНДС
                   |        КОНЕЦ,
                   |        ЗаказПоставщикуОборудование.Ссылка.ДоговорКонтрагента,
                   |        ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка),
                   |        0
                   |    ИЗ
                   |        Документ.ЗаказПоставщику.Услуги КАК ЗаказПоставщикуОборудование
                   |    ГДЕ
                   |        ЗаказПоставщикуОборудование.Ссылка = &Основание
                   |    
                   |    ОБЪЕДИНИТЬ ВСЕ
                   |    
                   |    ВЫБРАТЬ
                   |        ЗаявкиНаРасходованиеСредствОбороты.СтатьяДвиженияДенежныхСредств,
                   |        -ЗаявкиНаРасходованиеСредствОбороты.СуммаВзаиморасчетовОборот,
                   |        ЗаявкиНаРасходованиеСредствОбороты.ДоговорКонтрагента,
                   |        ЗаявкиНаРасходованиеСредствОбороты.рар_Номенклатура,
                   |        -ЗаявкиНаРасходованиеСредствОбороты.рар_КоличествоОборот
                   |    ИЗ
                   |        РегистрНакопления.ЗаявкиНаРасходованиеСредств.Обороты(, , Период, Сделка = &Основание) КАК ЗаявкиНаРасходованиеСредствОбороты
                   |    
                   |    ОБЪЕДИНИТЬ ВСЕ
                   |    
                   |    ВЫБРАТЬ
                   |        ЗаявкиНаРасходованиеСредствОбороты.СтатьяДвиженияДенежныхСредств,
                   |        -ЗаявкиНаРасходованиеСредствОбороты.СуммаВзаиморасчетовОборот,
                   |        ЗаявкиНаРасходованиеСредствОбороты.ДоговорКонтрагента,
                   |        ЗаявкиНаРасходованиеСредствОбороты.рар_Номенклатура,
                   |        -ЗаявкиНаРасходованиеСредствОбороты.рар_КоличествоОборот
                   |    ИЗ
                   |        РегистрНакопления.рар_ЗаявкиНаРасходованиеСредствНеутвержденные.Обороты(, , Период, Сделка = &Основание) КАК ЗаявкиНаРасходованиеСредствОбороты) КАК ОстаткиЗаказа
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ОстаткиЗаказа.ДоговорКонтрагента,
                   |    ОстаткиЗаказа.СтатьяДвиженияДенежныхСредств,
                   |    ОстаткиЗаказа.Номенклатура";
    
    Запрос.УстановитьПараметр("Основание",ПеремОснование);
    Запрос.УстановитьПараметр("ВидОперацииОборудование",Перечисления.ВидыОперацийЗаказПоставщику.Оборудование);
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    КэшЗаменыСтатей=Новый Соответствие;
    
    Пока Выборка.Следующий() Цикл
        //
        СтрокаПлатеж = РасшифровкаПлатежа.Добавить();
        
        СтрокаПлатеж.ДоговорКонтрагента            = Выборка.ДоговорКонтрагента;
        
        СтатьяДДС=КэшЗаменыСтатей[Выборка.СтатьяДвиженияДенежныхСредств];
        Если СтатьяДДС=Неопределено Тогда
            СтатьяДДС=ЗаменитьСтатьюДДС(Выборка.СтатьяДвиженияДенежныхСредств);
            КэшЗаменыСтатей.Вставить(Выборка.СтатьяДвиженияДенежныхСредств,СтатьяДДС);
        КонецЕсли;
        СтрокаПлатеж.СтатьяДвиженияДенежныхСредств = СтатьяДДС;
        СтруктураКурсаВзаиморасчетов               = МодульВалютногоУчета.ПолучитьКурсВалюты(СтрокаПлатеж.ДоговорКонтрагента.ВалютаВзаиморасчетов, ДатаРасхода);
        СтрокаПлатеж.КурсВзаиморасчетов            = СтруктураКурсаВзаиморасчетов.Курс;
        СтрокаПлатеж.КратностьВзаиморасчетов       = СтруктураКурсаВзаиморасчетов.Кратность;
    
        СтрокаПлатеж.Сделка = ПеремОснование;
        СтрокаПлатеж.рар_Номенклатура = Выборка.Номенклатура;
        СтрокаПлатеж.рар_Количество = Выборка.Количество;
        СтрокаПлатеж.Проект = ЦФО.ОсновнойПроект;
        СтрокаПлатеж.СуммаВзаиморасчетов = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(Выборка.Сумма, ПеремОснование.ВалютаДокумента, ПеремОснование.ДоговорКонтрагента.ВалютаВзаиморасчетов,
                                            КурсОснования, ПеремОснование.КурсВзаиморасчетов, КратностьОснования, ПеремОснование.КратностьВзаиморасчетов);
        //
        
        СтрокаПлатеж.СуммаПлатежа = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(СтрокаПлатеж.СуммаВзаиморасчетов,
                                    СтрокаПлатеж.ДоговорКонтрагента.ВалютаВзаиморасчетов,
                                    ВалютаДокумента,
                                    СтрокаПлатеж.КурсВзаиморасчетов, КурсДокумента,
                                    СтрокаПлатеж.КратностьВзаиморасчетов, КратностьДокумента);
        
    КонецЦикла;
    СуммаДокумента      = РасшифровкаПлатежа.Итог("СуммаВзаиморасчетов");
               
КонецЕсли;

КонецПроцедуры
1 skupidom5
 
19.09.17
09:20
заполняется из реквизитов ЗП основания(есть реквизит на форе ЗНРС). При заполнении возникает ошибка в процедуре ОбновлениеОтображения():
{Документ.ЗаявкаНаРасходованиеСредств.Форма.ФормаДокумента.Форма(1093)}: Ошибка при получении значения атрибута контекста (ДоговорКонтрагента)
    ВалютаВзаиморасчетовПоДоговору = СтрокаПлатеж.ДоговорКонтрагента.ВалютаВзаиморасчетов;
по причине:
Выполнение операции невозможно, так как строка была удалена.
2 Lexey_
 
19.09.17
09:21
(1) "Выполнение операции невозможно, так как строка была удалена." какие слова не понятны?
3 skupidom5
 
19.09.17
09:21
СтрокаПлатеж видит как строку тч ЗНРС.
4 skupidom5
 
19.09.17
09:22
как исправить ошибку?
5 skupidom5
 
19.09.17
09:23
пробывал в процедуре заполнения на основании ЗП перезаписать ЗНРС и в ОбновлениеОтображения - получитьОбъект и Прочитать() - не помогает, при это процедура заполнения отрабатывает,но с этой ошибкой
6 Lexey_
 
19.09.17
09:24
(4) сделать чтобы в СтрокаПлатеж была существующая строка, а не удаленная
7 skupidom5
 
19.09.17
09:31
удалить строку?
8 Lexey_
 
19.09.17
09:33
(7)она ж уже удалена
9 skupidom5
 
19.09.17
09:36
что нужно сделать?
10 Lexey_
 
19.09.17
09:40
(9) еще раз: ответ в (6), ошибка будет до тех пор, пока в СтрокаПлатеж находится несуществующая строка, как только там будет существующая, ошибки не будет
11 Йохохо
 
19.09.17
09:47
(10) типа при обращении через точку происходит чтение из базы а строка не записана? Выборка.ДоговорКонтрагента.ВалютаВзаиморасчетов или добавить в запрос?
12 Lexey_
 
19.09.17
09:50
(11) обращение к ссылке на удаленную строку
13 skupidom5
 
19.09.17
09:51
все реквизиты строки  при просмотре отладчиком =
СтрокаПлатеж    ДокументТабличнаяЧастьСтрока.ЗаявкаНаРасходованиеСредств.РасшифровкаПлатежа
ДоговорКонтрагента    Выполнение операции невозможно, так как строка была удалена.
ДокументРасчетовСКонтрагентом    Выполнение операции невозможно, так как строка была удалена.
КратностьВзаиморасчетов    Выполнение операции невозможно, так как строка была удалена.
14 skupidom5
 
19.09.17
09:52
как исправить?
15 Lexey_
 
19.09.17
09:52
(14) читал (6)?
16 Lexey_
 
19.09.17
09:53
(13) сколько еще раз повторить фразу "Выполнение операции невозможно, так как строка была удалена"?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший