Имя: Пароль:
1C
1С v8
Помогите разобраться почему очищается табличная часть
0 sevensword
 
27.01.15
10:07
Собственно сабж, не могу понять почему при записи происходит очистка расчитываемых значений, при проведении выскакивает сообщение что данные изменены хотите ли вы сохранить и значения также очищаются
данные закачиваются и считаются через
    Для Каждого СтрокаОпт Из Опт Цикл
        
        Если (найти(нрег(СтрокаОпт.договор.наименование),"карты")>0) и (найти(нрег(СтрокаОпт.договор.наименование),"предоплата")>0) Тогда
        иначе
            продолжить;
        КонецЕсли;
            
        _объем=СтрокаОпт.объем;
        _сумма=0;
        
        СтрокаОпт.Цена=0;
        СтрокаОпт.Сумма=0;
        СтрокаОпт.СуммаНДС=0;
        
        Для Каждого СтрокаКРТ из ОстаткиКРТ цикл
            
            Если _объем=0 Тогда
                прервать;
            КонецЕсли;
            
            Если (СтрокаКРТ.контрагенты<>СтрокаОпт.покупатель)или(СтрокаКРТ.номенклатура<>СтрокаОпт.ГСМ)или(СтрокаКРТ.количество<=0) Тогда
                продолжить;
            КонецЕсли;
                          
            если СтрокаКРТ.количество<_объем тогда
                
                _сумма=_сумма+СтрокаКРТ.количество*(СтрокаКРТ.цена/100);
                _объем=_объем-СтрокаКРТ.количество;
                СтрокаКРТ.количество=0;
                
                
            иначе
                
                _сумма=_сумма+_объем*(СтрокаКРТ.цена/100);
                СтрокаКРТ.количество=СтрокаКРТ.количество-_объем;
                _объем=0;
                
            конецесли;
            
        конеццикла;
        
        Если _объем>0 Тогда
            сообщить("Недостаточно выданного по предоплате объема ГСМ - "+СтрокаОпт.ГСМ);
        КонецЕсли;
                
        СтрокаОпт.сумма=окр(_сумма,2,1);
        СтрокаОпт.СуммаНДС=окр(_сумма/118*18,2,1);
        СтрокаОпт.цена=?(СтрокаОпт.объем=0,0,окр(_сумма/СтрокаОпт.объем,2,1));

    КонецЦикла;
где не дописал запись? процедура передзаписью пустая
1 sevensword
 
27.01.15
10:07
где не дописал запись? процедура передзаписью пустая
2 mikecool
 
27.01.15
10:10
записывай объект, а потом открывай его
3 Godofsin
 
27.01.15
10:12
Если (найти(нрег(СтрокаОпт.договор.наименование),"карты")>0) и (найти(нрег(СтрокаОпт.договор.наименование),"предоплата")>0) Тогда
        иначе
            продолжить;
        КонецЕсли;

У тебя что, в каждом наименовании договора есть "карты предоплата"?
4 zsergey
 
27.01.15
10:15
еще тот быдлокод, дочитать до конца не смог.
5 Godofsin
 
27.01.15
10:15
(4) +1
6 sevensword
 
27.01.15
10:18
(3) продажи тянутся и fbd базы, все проходящие по безналу, делятся по типу договоров, по ним и идет выборка
7 sevensword
 
27.01.15
10:20
(4) (5) ну не осилили так проходите мимо в чем проблема
8 Ёпрст
 
27.01.15
10:20
(6) и че ?
У них у всех в наименовании присутствуют слова "карты" и "предоплата" ?
Если нет - то у вас "Продолжить" в цикле..
дальше думай.
9 Godofsin
 
27.01.15
10:21
(6) Твой цикл будет работать, если в наименовании договора встречается "карты" И "предоплата".
10 sevensword
 
27.01.15
10:24
(8) (9) все работает цены и суммы просчитываются по нужным договорам, почему идет очистка данных при проведении
11 sevensword
 
27.01.15
10:25
и при записи?
12 Godofsin
 
27.01.15
10:29
(10) Напиши наименование одного "нужного" договора.
13 wertyu
 
27.01.15
10:32
ОстаткиКРТ - это что такое?
14 sevensword
 
27.01.15
10:34
(12) что?
если выгружаются контрагенты с договором карты предоплата, идет сверка остатка по запросу и расчитывается цена и сумма
15 sevensword
 
27.01.15
10:34
(14)     Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ХозрасчетныйОстатки.Счет,
                   |    ХозрасчетныйОстатки.Субконто1 КАК Контрагенты,
                   |    ХозрасчетныйОстатки.Субконто2 КАК Номенклатура,
                   |    ХозрасчетныйОстатки.Субконто3  КАК Цена,
                   |    ХозрасчетныйОстатки.СуммаОстатокДт  КАК Сумма,
                   |    ХозрасчетныйОстатки.КоличествоОстатокДт КАК Количество,
                   |    ХозрасчетныйОстатки.Организация,
                   |    ХозрасчетныйОстатки.Субконто4 КАК Документ
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Позиция, Счет.Код = ""КРТ.1"", , ) КАК ХозрасчетныйОстатки
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Контрагенты,
                   |    Номенклатура,
                   |    Цена";
//    Запрос.УстановитьПараметр("Организация",    Склад.Организация);     //Организации
    Запрос.УстановитьПараметр("Позиция",    МоментВремени());     //Дата
    ОстаткиКРТ = Запрос.Выполнить().Выгрузить();
16 Godofsin
 
27.01.15
10:36
Смотри процедуры ПриЗаписи и обработкаПроведения
17 wertyu
 
27.01.15
10:41
(15) >>> ХозрасчетныйОстатки.Субконто3 КАК Цена
+(16) поставь точки на этих процедурах, а в табло выведи Модифицированность() и смотри в какой "подфункции" или "подпроцедуре" она станет Истиной
18 sevensword
 
27.01.15
10:56
при записи пустая
в проведении вот так
Процедура ОбработкаПроведения(Отказ, РежимПроведения)

    Перем Заголовок, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоТаре, ТаблицаПоАвансам, ТаблицаПоОплате, ТаблицаПоПрочее;

    ПодготовитьСтруктуруШапкиДокумента(Заголовок, СтруктураШапкиДокумента, Отказ);    
    
    // Проверим правильность заполнения шапки документа
    ПроверитьЗаполнениеШапки(СтруктураШапкиДокумента, Отказ, Заголовок);
    
    // Движения по документу
    Если Не Отказ Тогда
    ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента,
                            ТаблицаПоТоварам, ТаблицаПоТаре, ТаблицаПоАвансам, ТаблицаПоОплате, ТаблицаПоПрочее,
                            Отказ, Заголовок);
    КонецЕсли;

    Если Не Отказ Тогда
        Движения.Записать();
        
    КонецЕсли;
19 sevensword
 
27.01.15
10:56
ложь выдает на  ПодготовитьСтруктуруШапкиДокумента и  ПроверитьЗаполнениеШапки, закоментил не помогло
20 sevensword
 
27.01.15
10:57
(17) субконто 3 числовое что не очень хорошо конечно, но в последующем изменю структуру
21 wertyu
 
27.01.15
11:00
(19) ложь - это нормально
а после ДвиженияПоРегистрам, что?
22 wertyu
 
27.01.15
11:01
(20) я понял, что числовое, ты же его на 100 делишь )
23 sevensword
 
27.01.15
11:06
(21) движенияПоРегистраМБухгалтерия и погдотовитьструктуру шапки, а потом обработка проведения
24 wertyu
 
27.01.15
11:28
(23) найди уже место, где модифицированность меняется с ложь на истина )
25 sevensword
 
27.01.15
11:40
нашел в процедуре формирования остатков, в одном из запросов, убрал его, теперь истина показывает на конецпроцедуры
что это значит?=)
26 sevensword
 
27.01.15
11:54
после долгих манипуляций модифицированность истина осталась толкьо на этом запросе, что ему блин в нем не нравится=(


//остатки по 41 счету
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    ХозрасчетныйОстатки.Счет,
    |    ХозрасчетныйОстатки.Организация,
    |    ХозрасчетныйОстатки.Субконто2 КАК Номенклатура,
    |    ХозрасчетныйОстатки.Субконто3 КАК Склад,
    |    ХозрасчетныйОстатки.СуммаОстатокДт КАК Сумма,
    |    ХозрасчетныйОстатки.КоличествоОстатокДт КАК Количество
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Позиция,Счет.Код = ""41.01"", ,Субконто3 В (&Склад))  КАК ХозрасчетныйОстатки  
    |УПОРЯДОЧИТЬ ПО
    |    Номенклатура,
    |    Склад";
    Запрос.УстановитьПараметр("Организация",    Склад.Организация);     //Организации
    Запрос.УстановитьПараметр("Позиция",    МоментВремени());     //Дата
    Запрос.УстановитьПараметр("Склад",    Склад);     // АЗС
//    Запрос.УстановитьПараметр("Номенклатура",    ,,,Номенклатура);     // АЗС

    Остатки41 = Запрос.Выполнить().Выгрузить();
27 sevensword
 
27.01.15
12:40
все оказалось гораздо проще
огромное всем спасибо!!!