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

Хранилище

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

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



> Пересчет необходимого колва и суммы ТМЦ в РН (создаю программно!)) , База 1с 7.7. Бухгалтерия          
inna.innainna84 Подменю пользователя
сообщение 01.12.16, 2:41
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

Добрый вечер. Очень давно хотела обработку по Формированию РН из ТЗОстатков. Как смогла так и настряпала. Прошу не ругать меня.
1.Сначала я выбрала в ТЗКлиенты данные по контрагентам по 361 счету с отрицательным долгом
2.Набрала ВыбДок (это излишки по остаткам ТМЦ между Бух.базой и Складом и загрузила их в Расходную накладную по продажной цене)
3.Выгрузила эти излишки в ТЗОстатки
4.СоздатьОбъект("Документ.РасходнаяНакладная") и загружаю в ТЗОстатки
5. Необходимо их обработать
а)Если докРН.СуммаДокНал>докРН.Итог("СуммаСНДС") Тогда
Сообщить ("Нехватает товара!!!");
прерываю!!!!!!!
б) Если докРН.СуммаДокНал>докРН.Итог("СуммаСНДС") Тогда
и начинается самое ТРУДНОЕ 09000000.gif как расчитать ТекКво= если ТМЦ.БазЕдиница "шт". то ОКР, если "кг" оставляем как есть ("помогите расчитать нужное колво!!!!");
Я понимаю, что нужно пробежаться по строках в документе и убрать лишнее кво и вернуть его в ТЗОстатки для создания следующей РН !!!!!! 09000000.gif help.gif help.gif
Если не трудно подскажите
Процедура СоздатьДокРН()
  //=========================не трогать====================================================================        
                           //---1---//
//==========создаем расходныйе накладный по выбраным контрагентам==========  
                                         
        ТЗКлиенты.ВыбратьСтроки();
        Пока ТЗКлиенты.ПолучитьСтроку()=1 Цикл//1  начало
        докРН = СоздатьОбъект("Документ.РасходнаяНакладная");
        докРН.Новый();
        докРН.Фирма =          глВосстановитьЗначение(,"БазФирма");
        докРН.Валюта =         Константа.ОсновнаяВалюта;  
        докРН.Курс =           докРН.Валюта.Курс.Получить(докРН.ДатаДок);        
        докРН.ВидНДС =         докРН.Фирма.СтавкаНДС;
        докРН.ДатаДок =        ТекущаяДата();         
        докРН.Контрагент =        ТЗКлиенты.Контрагент;
        докРН.СуммаДокНал=     ТЗКлиенты.Долг;
        докРН.ВидТорговли =    докРН.Контрагент.ВидТорговли;    
        докРН.СчетКонтрагента =СчетПоКоду("361");
        докРН.МестоХранения =  ВыбСклад;    
//=========================не трогать====================================================================        
                     //----2----//
//==========создаем список ТМЦ в расходных накладных по выбраным контрагентам====  
        ТЗОстатки.ВыбратьСтроки();
        Пока ТЗОстатки.ПолучитьСтроку()=1 Цикл //2 начало
        докРН.НоваяСтрока();
        докРН.ТМЦ =         ТЗОстатки.ТМЦ;      
        докРН.Ед =          ТЗОстатки.Ед;
        докРН.Коэффициент = ТЗОстатки.Коэффициент;
        докРН.Кво =         ТЗОстатки.СписатьКво;        
        докРН.ЦенаСНДС =    ТЗОстатки.ЦенаСНДС;         
        докРН.СуммаСНДС =   докРН.Кво* докРН.ЦенаСНДС;
//=========================не трогать====================================================================
                      //----3----//
         Если докРН.СуммаДокНал>докРН.Итог("СуммаСНДС") Тогда
          Сообщить ("Нехватает товара!!!");  
          возврат;      
         КонецЕсли;  
//=========================не трогать====================================================================                    
        
        
        

                      //----4----//
//    как расчитать сколько нужно списать колва в РН !!!!!!!!!!!  
        Если докРН.СуммаДокНал>докРН.Итог("СуммаСНДС") Тогда  
    
        докРН.ВыбратьСтроки();
        Пока докРН.ПолучитьСтроку()=1 Цикл //3
    
        ИзлишекСуммы=докРН.СуммаДокНал-докРН.Итог("СуммаСНДС");    
        сообщить("излишек"+    ИзлишекСуммы);
        // не обходимо пробежаться по строках в документе и убрать лишее!!!!!!    
              текКолСтрокРН = ТЗОстатки.КоличествоСтрок();
        Для ы = 1 По текКолСтрокРН Цикл      
           
            ТекКво= если ТМЦ.БазЕдиница "шт". то ОКР, если "кг" оставляем как есть ("помогите расчитать нужное колво!!!!");     
        докРН.Кво =         ТекКво;        
        докРН.ЦенаСНДС =    ТЗОстатки.ЦенаСНДС;         
        докРН.СуммаСНДС =   докРН.Кво* докРН.ЦенаСНДС;
        
       КонецЦикла;        
       КонецЦикла;
       КонецЕсли;

                //----5----//
// возращаяю в таблицу ТЗОстатки-лишее кол-во товара из РН                
                
           докРН.ВыбратьСтроки();
            Пока докРН.ПолучитьСтроку()=1 Цикл //3                 
        
            ТЗОстатки.НоваяСтрока();          
        ТЗОстатки.СписатьКво=ТЗОстатки.СписатьКво-докРН.Кво;
        ТЗОстатки.СписатьЦенаСНДС= ТЗОстатки.ЦенаСНДС;
        ТЗОстатки.СписатьСумма= ТЗОстатки.СписатьКво*ТЗОстатки.СписатьЦенаСНДС;
        КонецЦикла;
        
                        
    
    
    
//=========================не трогать====================================================================    
        
        КонецЦикла;//2 конец     
        Сообщить(докРН.Контрагент);
        Сообщить("Итого"+докРН.Итог("СуммаСНДС"));           
    
    
    //=========================не трогать====================================================================        
        докРН.Записать();
        Сообщить(докРН.ТекущийДокумент()+"Создан!");
        Если флПроводить=1  Тогда
        докРН.Провести();
        Сообщить(докРН.ТекущийДокумент()+"Проведен!");                  
        КонецЕсли;  
    //====================================================================================================        
        КонецЦикла; //1 конец        
    КонецПроцедуры  
    
    //=====================================================================
    Процедура Удалить()
        Если ТЗОстатки.СписатьКво<=0 Тогда
            ТЗОстатки.УдалитьСтроку(ТЗОстатки.НомерСтроки);
        КонецЕсли;
    КонецПроцедуры



//=========================не трогать==================================================================== Это я пишу для себя пометки, люблю сначала все поломать,а потом 3 часа вспоминать.

inna.innainna84 Подменю пользователя
сообщение 01.12.16, 10:14
Сообщение #2

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

Процедура СоздатьДокРН()
  //=========================не трогать====================================================================        
                           //---1---//
//==========создаем расходныйе накладный по выбраным контрагентам==========  
                                         
        ТЗКлиенты.ВыбратьСтроки();
        Пока ТЗКлиенты.ПолучитьСтроку()=1 Цикл//1  начало
        докРН = СоздатьОбъект("Документ.РасходнаяНакладная");
        докРН.Новый();
        докРН.Фирма =          глВосстановитьЗначение(,"БазФирма");
        докРН.Валюта =         Константа.ОсновнаяВалюта;  
        докРН.Курс =           докРН.Валюта.Курс.Получить(докРН.ДатаДок);        
        докРН.ВидНДС =         докРН.Фирма.СтавкаНДС;
        докРН.ДатаДок =        ТекущаяДата();         
        докРН.Контрагент =        ТЗКлиенты.Контрагент;
        докРН.СуммаДокНал=     ТЗКлиенты.Долг;
        докРН.ВидТорговли =    докРН.Контрагент.ВидТорговли;    
        докРН.СчетКонтрагента =СчетПоКоду("361");
        докРН.МестоХранения =  ВыбСклад;    
//=========================не трогать====================================================================        
                     //----2----//
//==========создаем список ТМЦ в расходных накладных по выбраным контрагентам====  
        ТЗОстатки.ВыбратьСтроки();
        Пока ТЗОстатки.ПолучитьСтроку()=1 Цикл //2 начало
        докРН.НоваяСтрока();
        докРН.ТМЦ =         ТЗОстатки.ТМЦ;      
        докРН.Ед =          ТЗОстатки.Ед;
        докРН.Коэффициент = ТЗОстатки.Коэффициент;
        докРН.Кво =         ТЗОстатки.СписатьКво;        
        докРН.ЦенаСНДС =    ТЗОстатки.ЦенаСНДС;         
        докРН.СуммаСНДС =   докРН.Кво* докРН.ЦенаСНДС;
//=========================не трогать====================================================================
                      //----3----//
         Если докРН.СуммаДокНал>ТЗОстатки.Итог("СписатьКво") Тогда
          Сообщить (ТЗОстатки.Итог("СписатьКво"));    
          Сообщить ("Нехватает товара!!!");  
          возврат;      
         КонецЕсли;  
//=========================не трогать====================================================================                    
        
        
        

                      //----4----//
//    как расчитать сколько нужно списать колва в РН !!!!!!!!!!!  
        Если докРН.СуммаДокНал<докРН.Итог("СуммаСНДС") Тогда  
    
        докРН.ВыбратьСтроки();
        Пока докРН.ПолучитьСтроку()=1 Цикл //3
    
        ИзлишекСуммы=докРН.СуммаДокНал-докРН.Итог("СуммаСНДС");    
        сообщить("излишек"+    ИзлишекСуммы);
        // не обходимо пробежаться по строках в документе и убрать лишее!!!!!!    
        текКолСтрокРН = ТЗОстатки.КоличествоСтрок();
        Для ы = 1 По текКолСтрокРН Цикл      
           
        ТекКво= ОКР("помогите расчитать нужное колво!!!!");
        докРН.Кво =         ТекКво;        
        докРН.ЦенаСНДС =    ТЗОстатки.ЦенаСНДС;         
        докРН.СуммаСНДС =   докРН.Кво* докРН.ЦенаСНДС;
        
       КонецЦикла;        
       КонецЦикла;
       КонецЕсли;

                //----5----//
// возращаяю в таблицу ТЗОстатки-лишее кол-во товара из РН                
                
        докРН.ВыбратьСтроки();
        Пока докРН.ПолучитьСтроку()=1 Цикл //3                 
        
        ТЗОстатки.НоваяСтрока();          
        ТЗОстатки.СписатьКво=ТЗОстатки.СписатьКво-докРН.Кво;
        ТЗОстатки.СписатьЦенаСНДС= ТЗОстатки.ЦенаСНДС;
        ТЗОстатки.СписатьСумма= ТЗОстатки.СписатьКво*ТЗОстатки.СписатьЦенаСНДС;
        КонецЦикла;
        
                        
    
    
    
//=========================не трогать====================================================================    
        
        КонецЦикла;//2 конец     
        Сообщить(докРН.Контрагент);
        Сообщить("Итого"+докРН.Итог("СуммаСНДС"));           
    
    
    //=========================не трогать====================================================================        
        докРН.Записать();
        Сообщить(докРН.ТекущийДокумент()+"Создан!");
        Если флПроводить=1  Тогда
        докРН.Провести();
        Сообщить(докРН.ТекущийДокумент()+"Проведен!");                  
        КонецЕсли;  
    //====================================================================================================        
        КонецЦикла; //1 конец        
    КонецПроцедуры  
    
    //=====================================================================
    Процедура Удалить()
        Если ТЗОстатки.СписатьКво<=0 Тогда
            ТЗОстатки.УдалитьСтроку(ТЗОстатки.НомерСтроки);
        КонецЕсли;
    КонецПроцедуры


Немного изменила.

Acid Подменю пользователя
сообщение 01.12.16, 10:48
Сообщение #3

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Количество рассчитывается так :
Количество = Док.Количество * Док.Коэффициент


inna.innainna84 Подменю пользователя
сообщение 01.12.16, 11:05
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

После того как я загрузила из ТЗОстатков в РН мне необходимо пробежаться по строках в документе снизу в вверх и убрать лишние суммы и расчитать ТекКво= если ТМЦ.БазЕдиница "шт". то ОКР, если "кг" оставляем как есть ("помогите расчитать нужное колво!!!!"); чтобы расзницу по кво вернуть обратно в ТЗОстатки.
Acid @ Сегодня, 10:48 * ,

XBrut Подменю пользователя
сообщение 01.12.16, 19:48
Сообщение #5

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

inna.innainna84 @ Сегодня, 11:05 * ,
Там же написано "не трогать" , а вы трогаете.

inna.innainna84 Подменю пользователя
сообщение 01.12.16, 20:22
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

не трогать писала я. Это мой код.XBrut @ Сегодня, 19:48 * ,

Vofka Подменю пользователя
сообщение 02.12.16, 9:20
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

inna.innainna84 @ Вчера, 20:22 * ,
когда Жмете "ответ", то текст, который автоматически подставляется в форму, лучше оставлять в начале сообщения, а не в конце.

inna.innainna84 Подменю пользователя
сообщение 02.12.16, 13:36
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

Может нужно создать еще третью ТЗ и выгрузить туда Долги по клиенту и Остатки по ТМЦ? Может кто-то такое уже делал подскажите пожалуйста наглядный код.

inna.innainna84 Подменю пользователя
сообщение 03.12.16, 13:24
Сообщение #9

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

У меня получилось. Я это сделала!:32542460: 32542460.gif 32542460.gif inna.innainna84 @ Вчера, 13:36 * ,

inna.innainna84 Подменю пользователя
сообщение 03.12.16, 16:16
Сообщение #10

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

                  //----4----//  
            
//=========================не трогать====================================================================
    Если ДокРН.Итог("СуммаСНДС")<ДокРН.СуммаДокНал  Тогда//   **начало
        сообщить ("Не хватает товара!!");  
    иначе
        
        //правим суммы    
        Ном = ДокРН.КоличествоСтрок();
        Если Ном > 0 Тогда   //**1
            Пока  Ном > 0 Цикл
                ДокРН.ПолучитьСтрокуПоНомеру(Ном);
                Если ДокРН.Итог("СуммаСНДС")>ДокРН.СуммаДокНал  Тогда //**2                 
                    Дельта2=    ДокРН.Итог("СуммаСНДС")-ДокРН.СуммаДокНал;
                ДокРН.СуммаСНДС=ДокРН.Суммасндс-Дельта2;
                    
                    Если ДокРН.СуммаСНДС=0 Тогда
                        ДокРН.Удалитьстроку();
                    КонецЕсли;
                    
                    //**выбрает вессой или штучный товар и правим кво с условием                 
                    Если ДокРН.ТМЦ.Весовой = 0 тогда                          
                        ДокРН.Кво=Окр(ДокРН.СуммаСНДС/ДокРН.ЦенаСНДС);                         
                    иначе
                        ДокРН.Кво=ДокРН.СуммаСНДС/ДокРН.ЦенаСНДС;                             
                    КонецЕсли;//**выбрала
                    
                    ДокРН.ЦенаСНДС= ДокРН.СуммаСНДС/ДокРН.Кво;      
        
                    ДокРН.СуммаБезНДС=Формат(ДокРН.СуммаСНДС/1.2,"Ч12.2");                         
                    ДокРН.НДС= Формат(ДокРН.СуммаСНДС-ДокРН.СуммаБезНДС,"Ч12.2");
                    ДокРН.СуммаБезСкидки=ДокРН.СуммаБезНДС;                     
                КонецЕсли; //**2
                Ном = Ном-1;
                
            КонецЦикла;
        КонецЕсли; //**1         
    КонецЕсли; //*** начало

алгоритм подбора кол-ва и подгонка суммы в документе на согласно указанной ДокРН.СуммаДокНал (СуммаДокНал-это сумма переплаты по покупателю)

Спасибо сказали: XBrut,

XBrut Подменю пользователя
сообщение 04.12.16, 9:18
Сообщение #11

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

вай маладэц! если мне прийдётся подгонять цены товара под сумму оплаты. именно так и сделаю.

inna.innainna84 Подменю пользователя
сообщение 04.12.16, 14:34
Сообщение #12

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

Спасибо за "спасибо". С первым меня "Спасибо." XBrut @ Сегодня, 9:18 * ,

Спасибо сказали: cos12,

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


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

 

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