Имя: Пароль:
1C
1С v8
Откуда береться значение?
0 Boudybuilder
 
09.11.12
02:57
Хотел найти , какой обработкой получает в типовой закупочную цену товара партии. Вот в обработке проведения в УТ в ОбщийМодульУправлениеЗапасамиПартионныйУчет есть процедура

ВыполнитьСписание(СтруктураПараметров, ТаблицаСписания, МоментКон, Останавливаться = Ложь, ПроведениеОстановлено = Ложь )


СтруктураПараметров.ТаблицаДвиженийПартииТоваровНаСкладахУпр[0].Стоимость - Вот это меня и интересует. Но получается это значение только после исполнения этого цикла:

СтрокаДокумента = Новый Структура;
   Для Каждого Колонка ИЗ ТаблицаСписания.Колонки Цикл
       СтрокаДокумента.Вставить(Колонка.Имя);
   КонецЦикла;

До него в табло ничего не расчитывается , но чем исполняется конецЦикла , то сразу выскакивает Стоимость. Не могу понять как этот цикл влияет на СтруктураПараметров ?

Щас скину всю процедуру:
1 Boudybuilder
 
09.11.12
02:58
Процедура ВыполнитьСписание(СтруктураПараметров, ТаблицаСписания, МоментКон, Останавливаться = Ложь, ПроведениеОстановлено = Ложь )
   
   
   
   ДополнитьСтруктуруПараметров(СтруктураПараметров, ТаблицаСписания);
   
   СтруктураПараметров.Вставить("КодыОпераций",Перечисления.КодыОперацийПартииТоваров);
   
   Если ЗначениеЗаполнено(ТаблицаСписания[0].ОсновнойДокумент) Тогда
       
       СтруктураПараметров.Вставить("ОсновнойДокумент",ТаблицаСписания[0].ОсновнойДокумент);
       
   КонецЕсли;
   
   СтруктураПараметров.Вставить("ЕстьСтрокиОтражатьВУправленческомУчете",    ТаблицаСписания.Найти(Истина, "ОтражатьВУправленческомУчете")<>Неопределено);
   
   // Подготовка наборов записей
   ПодготовитьНаборыЗаписей(СтруктураПараметров, ТаблицаСписания, ТаблицаСписания[0].Период, ТаблицаСписания[0].Регистратор, Истина);
   
   СтруктураПараметров.Вставить("ТипЗначенияРегистратора", ТипЗнч(ТаблицаСписания[0].Регистратор));
   
   // Для закрытия заказов покупателей дерево остатков партий должно получаться особым способом
   Если СтруктураПараметров.ТипЗначенияРегистратора =Тип("ДокументСсылка.ЗакрытиеЗаказовПокупателей") тогда
       СтруктураПараметров.Вставить("ЗакрытиеЗаказовПокупателей");
   КонецЕсли;
   
   // В некоторых случаях получать остатки не нужно
   ТребуетсяПолучитьОстатки = Истина;
   
   // Ордерная схема поступления
   Если СтруктураПараметров.ТипЗначенияРегистратора =Тип("ДокументСсылка.ПоступлениеТоваровУслуг")
      Или СтруктураПараметров.ТипЗначенияРегистратора =Тип("ДокументСсылка.АвансовыйОтчет")  тогда
       
       ТребуетсяПолучитьОстатки = Ложь;
       
   // Возврат товаров от покупателя (возврат от комиссионера обрабатывается основным алгоритмом списания
   // фактически являясь частным случаем перемещения товаров)
   ИначеЕсли СтруктураПараметров.ТипЗначенияРегистратора =Тип("ДокументСсылка.ВозвратТоваровОтПокупателя") Тогда
       
       ТребуетсяПолучитьОстатки = НЕ ТаблицаСписания[0].КодОперацииПартииТоваров = СтруктураПараметров.КодыОпераций.ВозвратОтПокупателя;
   
   КонецЕсли;

   Если ТребуетсяПолучитьОстатки Тогда
               
       // Добавление в структуру остатков по партионному учету
       ПолучитьОстатки(СтруктураПараметров, ТаблицаСписания, МоментКон);
   
   КонецЕсли;
   
   ОбрабатываемыйДокумент = Неопределено;
   
   СтруктураВидовУчета = Новый Структура("ОтражатьВУправленческомУчете, ОтражатьВБухгалтерскомУчете, ОтражатьВНалоговомУчете");
   
   СтрокаДокумента = Новый Структура;
   Для Каждого Колонка ИЗ ТаблицаСписания.Колонки Цикл
       СтрокаДокумента.Вставить(Колонка.Имя);
   КонецЦикла;
   
   Для Каждого СтрокаТаблицыСписания Из ТаблицаСписания Цикл
       
       ОбрабатываемыйДокумент = СтрокаТаблицыСписания.Регистратор;
       
       // Строка не обрабатывается при списании
       Если НЕ СтруктураПараметров.СписыватьПартииРасходнымОрдером И
           ( СтрокаТаблицыСписания.КодОперацииПартииТоваров = Перечисления.КодыОперацийПартииТоваров.Реализация Или
               СтрокаТаблицыСписания.КодОперацииПартииТоваров = Перечисления.КодыОперацийПартииТоваров.ПередачаТарыКонтрагенту)
          Тогда
           // Для документа "Реализация товаров и услуг" реализована возможность списывать партии при
           // проведении документа, даже если вид передачи = "по ордеру"
           // В этом случае партия списывается за баланс и окончательное списание осуществляется ордером
           НеСписывать = Ложь;
       Иначе
           НеСписывать = СтрокаТаблицыСписания.НеСписывать;
       КонецЕсли;
       
       Если НеСписывать Тогда
           Продолжить;
       КонецЕсли;
       
       
       // Номер строки, по которой списана партия
       // Используется при возврате товаров от покупателя, ордерной схеме поступления,
       // механизмом корректировки стоимости списания
       СтруктураПараметров.Вставить("НомерСтрокиСписанныхТоваров",СтрокаТаблицыСписания.НомерСтроки);
       
       ЗаполнитьЗначенияСвойств(СтруктураВидовУчета, СтрокаТаблицыСписания);
       
       //Для Каждого КлючИЗначение ИЗ СтруктураВидовУчета Цикл
       //    Если КлючИЗначение.Значение Тогда
               
               ЗаполнитьЗначенияСвойств(СтрокаДокумента, СтрокаТаблицыСписания);
               
               //Шаблон = Новый Структура("ОтражатьВУправленческомУчете, ОтражатьВБухгалтерскомУчете, ОтражатьВНалоговомУчете", Ложь, Ложь, Ложь);
               //Шаблон[КлючИЗначение.Ключ] = ИСТИНА;
               //ЗаполнитьЗначенияСвойств(СтрокаДокумента, Шаблон);
               
               Если СтрокаДокумента.ОтражатьВБухгалтерскомУчете
                  И НЕ СтруктураПараметров.Свойство("СдвигГраницыПоследовательностиРасчетыПоРеализацииОрганизации")
                  И (СтрокаДокумента.КодОперацииПартииТоваров = СтруктураПараметров.КодыОпераций.Реализация
                  Или СтрокаДокумента.КодОперацииПартииТоваров = СтруктураПараметров.КодыОпераций.РеализацияКомиссия) тогда
                   
                   СтруктураПараметров.Вставить("СдвигГраницыПоследовательностиРасчетыПоРеализацииОрганизации");
                   
               КонецЕсли;
               
               // Специфические случаи списания :
               
               // 1. Возврат от покупателя
               Если СтрокаДокумента.КодОперацииПартииТоваров = СтруктураПараметров.КодыОпераций.ВозвратОтПокупателя Тогда
                   
                   ПоступлениеВозвратОтПокупателя(СтрокаДокумента, СтруктураПараметров);
                   
                   // 2. Поступление товаров по ордеру: корректировка предыдущих списаний
               ИначеЕсли  ЗначениеЗаполнено(СтрокаДокумента.ПоступлениеПриходныйОрдер) Тогда
                   
                   Если СтрокаДокумента.ОтражатьВУправленческомУчете Тогда
                       ПоступлениеТоваровПоОрдеруУпр(СтрокаДокумента, СтруктураПараметров);
                   КонецЕсли;
                   
                   // 3. Закрытие заказов
               ИначеЕсли ТипЗнч(СтрокаДокумента.Регистратор)=Тип("ДокументСсылка.ЗакрытиеЗаказовПокупателей") Тогда
                   
                   СнятиеРезервовПоЗаказамПокупателей(СтрокаДокумента, СтруктураПараметров);
                   
                   // 4. Документ, в котором указываются данные, которых нет в документе списания:
                   // - Списание партий по расходному ордеру
                   // - Перемещение партий по приходному ордеру
               ИначеЕсли  ЗначениеЗаполнено(СтрокаДокумента.ОсновнойДокумент) Тогда
                   
                   СписаниеПартийОрдерныйСклад(СтрокаДокумента, СтруктураПараметров);
                   
                   // Общий случай списания
               Иначе
                   
                   // Сначала обрабатывается списание
                   СписаниеПартий(СтрокаДокумента, СтруктураПараметров, СтрокаДокумента.ИсточникПоКодуОперации);
                   
               КонецЕсли;
               
           //КонецЕсли;
       //КонецЦикла;
       
       
   КонецЦикла;
   
   Если СтруктураПараметров.Свойство("ТаблицыСписанияРасходнымОрдером") тогда
       СтруктураПараметров.Удалить("ТаблицыСписанияРасходнымОрдером");
   КонецЕсли;
   
   Если Не ОбрабатываемыйДокумент = Неопределено Тогда
       
       // Дополнительные движения по результату списания документом определенных партий
       ВыполнитьДопДвиженияПоРезультатуСписания(СтруктураПараметров, ТаблицаСписания);
       
       // Если задан параметр останавливаться при нехватке партий и партий не хватило - прекратим проведение
       
       Если Останавливаться И СтруктураПараметров.Отказ тогда
           
           ОбщегоНазначения.СообщитьОбОшибке("Проведение по партиям остановлено ",СтруктураПараметров.Отказ);
           ПроведениеОстановлено = Истина;
           Возврат;
           
       КонецЕсли;
       
       ЗаписатьДвиженияДокумента(СтруктураПараметров, ТаблицаСписания, Истина);
       
       #Если Клиент Тогда
           Состояние("Проведен документ " + ОбрабатываемыйДокумент);
       #КонецЕсли
   КонецЕсли;
   
   
КонецПроцедуры//ВыполнитьСписание()
2 IamAlexy
 
09.11.12
03:01
мало кода

давай нахлобучивай еще
еще кода
еще больше типовых модулей


желательно надергать однотипных инструментов но из разных конфигураций.. чтобы больше квеста было
3 Boudybuilder
 
09.11.12
03:04
Эти действия я делал только для того , чтобы выследить как в типовой получается списание по партиям. Мне надо получать при проведении дока закупочную цену товара , в зависимости от ЛИФО или ФИФо. Потому как товары подбераются в карточку ремонта как запчасти и работы. Они должны списываться с точки , но по регистрам продаж не проводиться. А получать закупочную и продажную цену. Записать ее в регистр стоимость ремонта. А уже оотуда буду расчитывать прибыль при выдачи ремонта с вохможностью скидки и прочих...
4 Boudybuilder
 
09.11.12
03:05
(2) Ладно , а как тогда тот цикл может повлиять на изменение значения?
5 IamAlexy
 
09.11.12
03:06
уже бы свой написал давно.

карточка ремонта это же и так явно не УТшное..
6 IamAlexy
 
09.11.12
03:06
(4) легко

значнеие = 1;

пока истина цикл

значение = значение + 1;

если значение > чутьболеечемдофуя Тогда
прервать;
КонецЕсли;

конецЦикла;
7 Boudybuilder
 
09.11.12
03:11
СтруктураПараметров.ТаблицаДвиженийПартииТоваровНаСкладахУпр[0].Стоимость до этого = 0

СтрокаДокумента = Новый Структура;
   Для Каждого Колонка ИЗ ТаблицаСписания.Колонки Цикл
       СтрокаДокумента.Вставить(Колонка.Имя);
   КонецЦикла;

СтруктураПараметров.ТаблицаДвиженийПартииТоваровНаСкладахУпр[0].Стоимость  после этого = КакоеТоЧисло


Внимание вАпрос:

Как СтрокаДокумента влияет на СтруктураПараметров???
8 Dethmont
 
09.11.12
03:50
Не пойму только причем тут
СтрокаДокумента
9 Dethmont
 
09.11.12
03:52
Не

   Если ТребуетсяПолучитьОстатки Тогда
               
       // Добавление в структуру остатков по партионному учету

       ПолучитьОстатки(СтруктураПараметров, ТаблицаСписания, МоментКон);
   
   КонецЕсли;