Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Движение документа по РС          
kosalex Подменю пользователя
сообщение 25.11.14, 9:57
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Добрый день! Есть РС, подченен регистратору, периодичность - секунда.

Есть документ, который делает двиежние по этому РС, а именно записывает хим состав из табличной части документа.

Возможна ситуация, когда в ТЧ документа есть строки с одинаковыми значениями по измерениям РС. Тогда нужно на момент проведения документа получать хим состав столько раз сколько строк в ТЧ документа. Значит при проведении нужно проверить есть ли там запись, если есть то сделать нужные вычисления и записать. Использую такой код:




Записываю такую таблицу с формы:



ХимСостав = Новый ТаблицаЗначений;
    ХимСостав.Колонки.Добавить("НеттоОстаток",,"Нетто остаток",);
    ХимСостав.Колонки.Добавить("НомерЗакрома",,"Номер закрома",);
    ХимСостав.Колонки.Добавить("Si",,"Si",);
    ХимСостав.Колонки.Добавить("Mn",,"Mn",);
    ХимСостав.Колонки.Добавить("C",,"C",);
    ХимСостав.Колонки.Добавить("P",,"P",);
    
    Для Каждого Строка Из ТЧБигБегов Цикл
        //Получим хим состав который есть на текущую дату документа в закроме
        ДанныеХимСостав = ПолучитьХимСостовФеромарганца(Строка.НомерЗакрома);
        
        Если ДанныеХимСостав <> Неопределено Тогда
            ЗаполнитьЗначенияСвойств(ХимСостав.Добавить(),ДанныеХимСостав[0]);
            
            //Расчет хим состава который образуется когда в закром добавляют какое то количество феромарганца,
            //если закром пустой тогда хим состав записывается с документа
            Для Каждого Строка Из ХимСостав Цикл
                Если Строка.НеттоОстаток < 0 Тогда
                    Предупреждение("В закроме нет остатка, хим состав будет записан с формы документа.");
                    Для Каждого СтрокаТЧ Из ТЧБигБегов Цикл
                        //Запишем хим состав в РС "ХимсоставВЗакромах" который образуется в закроме
                        Движения.ХимсоставВЗакромах.Записывать = Истина;
                        ДвижениеХимСостав = Движения.ХимсоставВЗакромах.Добавить();
                        
                        ДвижениеХимСостав.Период = Дата;
                        ДвижениеХимСостав.НомерЗакрома = СтрокаТЧ.НомерЗакрома;
                        ДвижениеХимСостав.Si = СтрокаТЧ.Si;
                        ДвижениеХимСостав.Mn = СтрокаТЧ.Mn;
                        ДвижениеХимСостав.C = СтрокаТЧ.C;
                        ДвижениеХимСостав.P = СтрокаТЧ.P;    
                    КонецЦикла;
                    
                    Движения.КФЗХимсоставВЗакромах.Записать();      
                    Движения.КФЗХимсоставВЗакромах.Очистить();

                Иначе
                    Для Каждого СтрокаТЧ Из ТЧБигБегов Цикл
                        //Расчет полученного хим состава в закроме
                        Движения.ХимсоставВЗакромах.Записывать = Истина;
                        ДвижениеХимСостав = Движения.ХимсоставВЗакромах.Добавить();    
                        
                        ДвижениеХимСостав.Период = Дата;
                        ДвижениеХимСостав.НомерЗакрома = СтрокаТЧ.НомерЗакрома;
                        
                        //ДвижениеХимСостав.Si = (ХимСостав[0].НеттоОстаток * ХимСостав[0].Si + ВсегоНетто * Строка.Si) / ХимСостав[0].НеттоОстаток + ВсегоНетто;
                        
                        ДвижениеХимСостав.Si = (Строка.НеттоОстаток * Строка.Si + ВсегоНетто * Строка.Si) / Строка.НеттоОстаток + ВсегоНетто;
                        ДвижениеХимСостав.Mn = (Строка.НеттоОстаток * Строка.Mn + ВсегоНетто * Строка.Mn) / Строка.НеттоОстаток + ВсегоНетто;
                        ДвижениеХимСостав.C = (Строка.НеттоОстаток * Строка.C + ВсегоНетто * Строка.C) / Строка.НеттоОстаток + ВсегоНетто;
                        ДвижениеХимСостав.P = (Строка.НеттоОстаток * Строка.P + ВсегоНетто * Строка.P) / Строка.НеттоОстаток + ВсегоНетто;
                        
                    КонецЦикла;
                    
                Движения.ХимсоставВЗакромах.Записать();
                Движения.ХимсоставВЗакромах.Очистить();
                КонецЕсли;
            КонецЦикла;


        Иначе
            
            Предупреждение("В закроме нет хим состова, хим состав будет записан с формы документа.");
            
            //Запишем хим состав в РС "КФЗХимсоставВЗакромах" который образуется в закроме
                Движения.КФЗХимсоставВЗакромах.Записывать = Истина;
                ДвижениеХимСостав = Движения.КФЗХимсоставВЗакромах.Добавить();
                
                ДвижениеХимСостав.НомерЗакрома = Строка.НомерЗакрома;
                ДвижениеХимСостав.Период = Дата;
                ДвижениеХимСостав.Si = Строка.Si;
                ДвижениеХимСостав.Mn = Строка.Mn;
                ДвижениеХимСостав.C = Строка.C;
                ДвижениеХимСостав.P = Строка.P;
            
            Движения.КФЗХимсоставВЗакромах.Записать();
            Движения.КФЗХимсоставВЗакромах.Очистить();
        КонецЕсли;
    КонецЦикла




Ошибка при проведении что запись с такими значениюми существует. По идеи нужно записать одну строку, потом проверить если по моим критериям строка в РС, если есть, то взять с нее нужные данные и провести вычисления, если нету дальше записывать в РС

sanechichek Подменю пользователя
сообщение 25.11.14, 12:46
Сообщение #2

Общительный
**
Группа: Пользователи
Сообщений: 10
Из: Киев
Спасибо сказали: 0 раз
Рейтинг: 0

Может не совсем правильно Вас понял, но что если перед тем как делать движения по РС хим состав, выгрузить данные ТЧ таблицы в таблицу значений, свернуть по колонкам и уже для записи данных в РС работать со свернутой табл. значений.

kosalex Подменю пользователя
сообщение 25.11.14, 13:56
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(sanechichek @ 25.11.14, 12:46) *
Может не совсем правильно Вас понял, но что если перед тем как делать движения по РС хим состав, выгрузить данные ТЧ таблицы в таблицу значений, свернуть по колонкам и уже для записи данных в РС работать со свернутой табл. значений.



Да =) Хороший вариант, делаю так smile.gif Посмотрим что получится))

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 7:50
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!