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

Хранилище

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

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



> Проведение Расходной Накладной , Не могу установить причину ошибки. Помогите кто чем может ))          
Hellga Подменю пользователя
сообщение 01.12.10, 12:23
Сообщение #1

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

В проведении Расходной Накладной при списании партий ФИФО|ЛИФО не получается найти значение партии по коду. Лист кода прилагаю:
Процедура ОбработкаПроведения() 
    
    Запрос = СоздатьОбъект("Запрос");
    Таб = СоздатьОбъект("ТаблицаЗначений");
    СпрПарт = СоздатьОбъект("Справочник.Партии");
    
    ВремРегистры=СоздатьОбъект("Регистры");
    Рег = ВремРегистры.ТМЦ;
    Рег.УстановитьЗначениеФильтра("ТМЦ",ТМЦ,1);
    Рег.УстановитьЗначениеФильтра("Склад",Склад,1);    
    Рег.УстановитьЗначениеФильтра("Партия",Партия,1);  
    
    Если ИтогиАктуальны()=0 Тогда
        Рег.ВременныйРасчет(1);
        ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент());
    КонецЕсли;  
    
    ТЗ = "    
            |Период с (НачалоПериодаБИ());
            |Товар = Регистр.ТМЦ.ТМЦ;
            |Скл = Регистр.ТМЦ.Склад;
            |Парт = Регистр.ТМЦ.Партия;
            |Кол = Регистр.ТМЦ.Количество;
            |Сум = Регистр.ТМЦ.Сумма;  
            |Функция КолКонОст = КонОст(Кол);
            |Функция СумКонОст = КонОст(Сум);
            |Группировка Товар Без Групп;
            |Группировка Скл Без Групп;
            |Группировка Парт упорядочить по Парт.Дата Без Групп;
            |Условие (Скл = Склад);
            |Без Итогов;
            |";

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

        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("902");
        Операция.Кредит.Счет = СчетУчета;
        Операция.Кредит.ТМЦ = ТМЦ;
        Операция.Кредит.Партии = П;
        Операция.Кредит.МестаХранения = Склад;
        Операция.Сумма = УчСумма;
        Операция.Коментарий = "Списание товаров";

    КонецЦикла;          
    
    Регистр.Взаиморасчеты.Контрагент = Контрагент;
    Регистр.Взаиморасчеты.Сумма = Итог("Сумма")+Итог("НДС");
    Регистр.Взаиморасчеты.ДвижениеПриходВыполнить();
    
    Операция.НоваяПроводка();
    Операция.Дебет.Счет = СчетУКон;
    Операция.Дебет.Контрагент = Контрагент;
    Операция.Кредит.Счет = СчетПоКоду("702");
    Операция.Сумма = Итог("Сумма")+Итог("НДС");
    Операция.Коментарий = "Получение оплаты";

    Операция.НоваяПроводка();
    Операция.Дебет.Счет = СчетПоКоду("702");
    Операция.Кредит.Счет = СчетПоКоду("644");
    Операция.Сумма = Итог("НДС");
    Операция.Коментарий = "Учет НДС";

    Операция.Содержание = "Продажа товара";
    Операция.СуммаОперации = Итог("Сумма")+Итог("НДС");
    Операция.Записать();
    
КонецПроцедуры

Значения в таблицу все попадают, из таблицы код партии выдается правильно, а вот поиск по справочнику не происходит. Может у кого-то есть идеи, поделитесь пожалуйста?

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

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 958 раз
Рейтинг: 0

СпрПарт.НайтиПоКоду(Таб.Парт,1);
Таб.Парт это партия а нужно Таб.Парт.Код это код этой партии.

Hellga Подменю пользователя
сообщение 01.12.10, 15:03
Сообщение #3

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

Цитата(MATEVI @ 01.12.10, 13:55) *
СпрПарт.НайтиПоКоду(Таб.Парт,1);
Таб.Парт это партия а нужно Таб.Парт.Код это код этой партии.

Спасибо большое за помощь.

Мне пришлось реализовать расчет цен по среднему.

Vofka Подменю пользователя
сообщение 01.12.10, 15:49
Сообщение #4

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

Hellga, +СПС жмите для Matevi

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


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

 

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