Имя: Пароль:
1C
1С v8
Обращение к процедуре как к функции (Записать)
0 XiPyPg2012
 
26.09.13
12:28
Подскажите где ошибка, в этом варианте:


Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    для каждого стр из Товары цикл
        ЗакПоставщику = стр.ПЛ_ЗаказПоставщику.ПолучитьОбъект();
        ТоварыЗаказа = ЗакПоставщику.Товары;
        для каждого строка из ТоварыЗаказа цикл
            строка.ПЛ_ОрганизацияОтгрузки = "!!!";
        конеццикла;
        закПоставщику.Записать();
        //закПоставщику.Записать(РежимЗаписиДокумента.Запись);
    конеццикла;
КонецПроцедуры


Просто есть большая доработка в ней такая-же ошибка. Это как пример чтоб разобраться в чем дело.
1 Чайник Рассела
 
26.09.13
12:30
апшипка тут
для каждого строка из ТоварыЗаказа цикл
2 XiPyPg2012
 
26.09.13
12:30
да забыл уточнить ошибку в клиентском приложение не выдает, просто начал смотреть почему значения в документе не поменялись и в отладчике выяснилась эта проблема.
3 XiPyPg2012
 
26.09.13
12:32
(1) в этом нету ошибки это тут не правильно код он выделил, я строка использую не как функции а как переменную и суть не в этом. потому что в рабочей версии такого нет там используется СтрЗаказа
4 Privalov
 
26.09.13
12:36
Сначала определись, что у тебя есть чего нет, код нормальный покажи и ошибку.
5 goleaff2006
 
26.09.13
12:38
Че за ошибка то телепатов нету!
6 Любопытная
 
26.09.13
12:39
(3) не надо использовать зарезервированные слова в названиях переменных. Это неправильно, переименуйся
7 Infsams654
 
26.09.13
12:39
(3) как в рабочей версии сделано - там используется СтрЗаказа, так и делай, а не то что в (0)
8 XiPyPg2012
 
26.09.13
12:54
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ЗаказПоставщикуТовары.Ссылка,
    |    ЗаказПоставщикуТовары.НомерСтроки
    |ИЗ
    |    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
    |ГДЕ
    |    ЗаказПоставщикуТовары.Номенклатура = &Номенклатура
    |    И ЗаказПоставщикуТовары.Характеристика = &Характеристика
    |    И ЗаказПоставщикуТовары.Отменено = ЛОЖЬ
    |    И ЗаказПоставщикуТовары.Ссылка = &Ссылка";
    
    //Товары = ЭтотОбъект.Товары;
    Для каждого стр  Из Товары Цикл
        Запрос.УстановитьПараметр("Номенклатура", стр.Номенклатура);
        Запрос.УстановитьПараметр("Характеристика", стр.Характеристика);
        Запрос.УстановитьПараметр("Ссылка", стр.ПЛ_ЗаказПоставщику);
        
        Результат = Запрос.Выполнить();
        Выборка = Результат.Выбрать();
        
        Если Выборка.Количество() > 0 тогда
            ЗакПоставщику = Стр.ПЛ_ЗаказПоставщику.ПолучитьОбъект();
            ТоварыЗаказа = ЗакПоставщику.Товары;
        КонецЕсли;
        СделаноРазбиение = ложь;
        
        Если Выборка.Количество() = 1 и стр.Отменено = Ложь  тогда
            выборка.Следующий();
            Если стр.Количество = ТоварыЗаказа[выборка.НомерСтроки - 1].Количество и стр.КоличествоУпаковок = ТоварыЗаказа[выборка.НомерСтроки - 1].КоличествоУпаковок Тогда
                ТоварыЗаказа[выборка.НомерСтроки - 1].ПЛ_ОрганизацияОтгрузки = "Отгрузка организованна отд.логистики АСТ";
                СделаноРазбиение = истина;
            иначе
                КэшированныеЗначения = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
                ТекСтрКоличество = 0;
                Если стр.КоличествоУпаковок > 0 Тогда
                    ТекСтрКоличество = стр.КоличествоУпаковок;
                    ИмяПоляКоличество = "КоличествоУпаковок";
                иначе                
                    ТекСтрКоличество = стр.Количество;
                    ИмяПоляКоличество = "Количество";
                КонецЕсли;
                ТекущаяСтрокаТаблицы = ТоварыЗаказа[выборка.НомерСтроки - 1];
                ИндексТекущейСтроки = ТоварыЗаказа.Индекс(ТекущаяСтрокаТаблицы);
                НоваяСтрока = ТоварыЗаказа.Вставить(ИндексТекущейСтроки + 1);
                ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекущаяСтрокаТаблицы);
                НоваяСтрока[ИмяПоляКоличество] = ТекущаяСтрокаТаблицы[ИмяПоляКоличество] - ТекСтрКоличество;
                ТекущаяСтрокаТаблицы[ИмяПоляКоличество] = ТекСтрКоличество;
                
                Если НоваяСтрока <> Неопределено Тогда
                    
                    НоваяСтрока.КодСтроки = 0;
                    
                    СтруктураДействий = Новый Структура;
                    ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЗакПоставщику);
                    
                    ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрокаТаблицы, СтруктураДействий, КэшированныеЗначения);
                    ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
                    
                    ТекущаяСтрокаТаблицы.ПЛ_ОрганизацияОтгрузки = "Отгрузка организованна отд.логистики АСТ";
                    //НоваяСтрока.ПЛ_ОрганизацияОтгрузки = "Отгрузка организованна отд.логистики АСТ";
                КонецЕсли;
                СделаноРазбиение = Истина;
                конецесли;
            иначеесли Выборка.Количество() > 1 и стр.Отменено = Ложь тогда
                пока выборка.Следующий() цикл
                    если стр.Количество = ТоварыЗаказа[выборка.НомерСтроки - 1].Количество и стр.КоличествоУпаковок = ТоварыЗаказа[выборка.НомерСтроки - 1].КоличествоУпаковок Тогда
                        ТоварыЗаказа[выборка.НомерСтроки - 1].ПЛ_ОрганизацияОтгрузки = "Отгрузка организованна отд.логистики АСТ";
                        СделаноРазбиение = истина;
                        прервать;
                    иначеесли стр.Количество < ТоварыЗаказа[выборка.НомерСтроки - 1].Количество и стр.КоличествоУпаковок < ТоварыЗаказа[выборка.НомерСтроки - 1].КоличествоУпаковок Тогда    
                        КэшированныеЗначения = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
                        ТекСтрКоличество = 0;
                        Если стр.КоличествоУпаковок > 0 Тогда
                            ТекСтрКоличество = стр.КоличествоУпаковок;
                            ИмяПоляКоличество = "КоличествоУпаковок";
                        иначе                
                            ТекСтрКоличество = стр.Количество;
                            ИмяПоляКоличество = "Количество";
                        КонецЕсли;
                        ТекущаяСтрокаТаблицы = ТоварыЗаказа[выборка.НомерСтроки - 1];
                        ИндексТекущейСтроки = ТоварыЗаказа.Индекс(ТекущаяСтрокаТаблицы);
                        НоваяСтрока = ТоварыЗаказа.Вставить(ИндексТекущейСтроки + 1);
                        ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекущаяСтрокаТаблицы);
                        НоваяСтрока[ИмяПоляКоличество] = ТекущаяСтрокаТаблицы[ИмяПоляКоличество] - ТекСтрКоличество;
                        ТекущаяСтрокаТаблицы[ИмяПоляКоличество] = ТекСтрКоличество;
                        
                        Если НоваяСтрока <> Неопределено Тогда
                            
                            НоваяСтрока.КодСтроки = 0;
                            
                            СтруктураДействий = Новый Структура;
                            ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЗакПоставщику);
                            
                            ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрокаТаблицы, СтруктураДействий, КэшированныеЗначения);
                            ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
                            
                            ТекущаяСтрокаТаблицы.ПЛ_ОрганизацияОтгрузки = "Отгрузка организованна отд.логистики АСТ";
                            //НоваяСтрока.ПЛ_ОрганизацияОтгрузки = "Отгрузка организованна отд.логистики АСТ";
                            СделаноРазбиение = истина;
                            прервать;
                        иначеесли стр.Количество > ТоварыЗаказа[выборка.НомерСтроки - 1].Количество и стр.КоличествоУпаковок > ТоварыЗаказа[выборка.НомерСтроки - 1].КоличествоУпаковок Тогда  
                            СделаноРазбиение = ложь;
                        конецесли;
                    КонецЕсли;
                КонецЦикла;
                если СделаноРазбиение = ложь тогда
                    Сообщение = Новый СообщениеПользователю;
                    Сообщение.Текст = "В заявки на транспортировку " + стр.Номенклатура + " указано больше чем требуется по " + стр.ПЛ_ЗаказПоставщику;
                    Сообщение.Сообщить();
                конецесли;
            конецесли;    
            //КонецЕсли;
            если выборка.Количество() > 0 и СделаноРазбиение = Истина  тогда
                ЗакПоставщику.Записать();
            конецесли;
            
        КонецЦикла;
9 XiPyPg2012
 
26.09.13
12:55
ЗакПоставщику.Записать(); точка останова тут, нажимаешь вычислить...пишет Обращение к процедуре как к функции (Записать)
10 ДенисЧ
 
26.09.13
12:56
СделаноРазбиение = Истина это сильно...
(9) А вот нефиг вычислять в отладчике процедуру. Что он тебе там покажет? И из окна вычислений внизу тоже убери....
11 XiPyPg2012
 
26.09.13
13:05
смысл не в том что покажет смысл в том что он не записывает
12 catena
 
26.09.13
13:07
(11)Проблема явно в другом месте
13 Галахад
 
гуру
26.09.13
13:07
(11) Ну, иди дальше. Перед записью и т.д.
14 XiPyPg2012
 
26.09.13
13:26
Все разобрался, какой-то умник вставил при чтение заполнить этот же реквезит на основание другой ерунды
15 Infsams654
 
26.09.13
14:30
(14) похоже, я - телепат, см. (7)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший