Имя: Пароль:
1C
1С v8
Как реализовать партионый учет
,
0 marat700
 
17.10.11
14:53
Бухгалтерия переделанная V8. Необходимо реализовать партионный учет !
FIFO . .создал регистр накопления который обозвал , Партия1 ,
Измерения : Организация ,склад ,док-оприходывания ,номенклатура,
Ресурсы: количество -цена ,,
1.В документе приход естественно создал при проведении движения по нему !
2.Вопрос как реализовать выборку из этого регистра ( и движения по нему) при проведении расхода, запрос использовать или еще чо нить , может кто пример скинет !
1 CTmuB
 
17.10.11
14:58
Ресурсы: количество , сумма
2 CTmuB
 
17.10.11
14:59
Запрос остатков по регистру накопления
3 marat700
 
17.10.11
15:00
Пусть будет сумма , это не важно
4 Alex_MA
 
17.10.11
15:00
(1)документ забыл
5 Alex_MA
 
17.10.11
15:00
(4)+в измерения
6 marat700
 
17.10.11
15:01
док оприходывания в измерениях
7 marat700
 
17.10.11
15:01
конструктором запрос зафигачить ?
8 shuhard
 
17.10.11
15:02
(0) открой типовую УТ 10.3, велокат давно сделан
9 marat700
 
17.10.11
15:03
Там наверно так все перевернуто , что хрен что поймешь !
10 marat700
 
17.10.11
15:05
может кто нить скинуть пример запроса ,
11 ptiz
 
17.10.11
15:07
(10) Опиши сначала этот алгоритм без кода, обычными словами. А потом и сам поймешь.
12 aleks-id
 
17.10.11
15:08
>>док оприходывания в измерениях
шедеврально
13 marat700
 
17.10.11
15:12
а что ты предлагаешь ?
14 shuhard
 
17.10.11
15:13
(12) не поверишь,
в типовых так и сделано
15 rinatru
 
17.10.11
15:14
блин... задачка из Спеца... можно было бы и решить самому для разнообразия
16 aleks-id
 
17.10.11
15:15
(14) прям так и сделано? >>док оприходЫЫЫЫЫЫвания ???? може вы еще и пробЫЫЫваете???
17 aleks-id
 
17.10.11
15:16
(13) я предлагаю док оприходОвания. и учить русский.
18 marat700
 
17.10.11
15:21
Умнее есть мысли ?
19 Eugene_life
 
17.10.11
15:23
(18) Можно построить партионный учет и без регистра. При списании ищешь поступление товара в документах.
20 rinatru
 
17.10.11
15:24
(19 ) вот это шедевр.... просто супер
21 marat700
 
17.10.11
15:25
Без регистра будет медленнее на порядок ,
22 marat700
 
17.10.11
15:25
Да и удобнее на порядок .!
23 marat700
 
17.10.11
15:26
У кого нить есть пример запроса .1
24 rinatru
 
17.10.11
15:27
// расчет стоимости МПЗ при списании методом FIFO
   
   ВыборкаЗапроса = Запасы.ПолучитьСтоимостьТоваров(ЭтотОбъект);
   
   Пока ВыборкаЗапроса.Следующий() Цикл
               
       Если  ?(ВыборкаЗапроса.Количество > ВыборкаЗапроса.КоличествоОстаток, Истина, Ложь) Тогда
           Сообщить("Не хватает партий"+ВыборкаЗапроса.Номенклатура + ". Необходимо "+ВыборкаЗапроса.Количество + ". В наличии "+ ВыборкаЗапроса.КоличествоОстаток);
           Отказ = Истина;
           Продолжить;
       КонецЕсли;
       
       // если хватает, то начинает перебирать
       ОстатокКСписанию = ВыборкаЗапроса.Количество;
       ВыборкаПартий = ВыборкаЗапроса.Выбрать();
       Пока ВыборкаПартий.Следующий() Цикл
           
           Если ОстатокКСписанию <= 0 Тогда
               Продолжить; // смысла нет дальше бегать. все списали
           КонецЕсли;
           
           Если ВыборкаПартий.КоличествоОстаток = 0 Тогда
               Продолжить;
               // продолжим. возможно из-за проведения задним числом сбилась последовательность,
               // и остатки есть по другим партиям
               // отгрузку клиенту из-за этого останавливать нельзя, а последовательность можно восстановить
           КонецЕсли;
           
           СписатьКоличество = Мин(ОстатокКСписанию, ВыборкаПартий.КоличествоОстаток);
           Если ОстатокКСписанию < ВыборкаПартий.КоличествоОстаток Тогда
               Стоимость = СписатьКоличество * ( ВыборкаПартий.СтоимостьОстаток / ВыборкаПартий.КоличествоОстаток );
           Иначе                
               Стоимость = ВыборкаПартий.СтоимостьОстаток;
           КонецЕсли;
           
           // регистр ОстаткиНоменклатуры Расход
           ДвиженияПартий = Движения.ПартииТоваровНаСкладах.Добавить();
           ДвиженияПартий.ВидДвижения    = ВидДвиженияНакопления.Расход;
           ДвиженияПартий.Период        = Дата;
           ДвиженияПартий.Регистратор    = Ссылка;
           ДвиженияПартий.Номенклатура = ВыборкаПартий.Номенклатура;
           ДвиженияПартий.ДокументОприходования = ВыборкаПартий.ДокументПоступления;
           ДвиженияПартий.Количество    = СписатьКоличество;
           ДвиженияПартий.Стоимость    = Стоимость;
           
           ОстатокКСписанию = ОстатокКСписанию - ВыборкаПартий.КоличествоОстаток;
       КонецЦикла;
   КонецЦикла;
25 marat700
 
17.10.11
15:29
Спасибо щаса гляну , думаю привинчу !
26 shuhard
 
17.10.11
15:30
(24) классная наёбка
27 rinatru
 
17.10.11
15:31
(26) в чем? что выборку не выложил?
28 shuhard
 
17.10.11
15:32
(27) ясен пень
ТС не умеет строить запросы
сворачивать ТЧ
работать с моментом
29 rinatru
 
17.10.11
15:34
(28) :) согласен. хотя стаж у ТС приличный... клавиатуру на Мисте 4 года протирает
30 Nutsiiam
 
17.10.11
15:37
(0) >>Бухгалтерия переделанная V8. Необходимо реализовать партионный учет !
А просто метод списание мпз в политике учета если изменить? Это самописка, или на базе типовой? Если типовой - то какой? 1.5, 1.6, 2.0 - это последние года наверное за 4. Там везде реализован партионный учет при соотв. настройке.
31 marat700
 
17.10.11
15:40
Документ типовой , но схема проведения реализована своя !
32 Nutsiiam
 
17.10.11
15:42
(31) понятно. Успехов! :)
33 marat700
 
17.10.11
15:43
ты код из УТ выдернул ?
34 rinatru
 
17.10.11
15:47
(33) .. это я в 2005 году готовился к Спецу по Платформе в пустой конфигурации.  в типовых код навороченный, да и сейчас я уже не так написал бы, но для примера - держи. учись
35 Nutsiiam
 
17.10.11
15:48
(33) открой бухгалтерию и посмотри как списывается при фифо товар. Там элементарнейший запрос, если чо :)
36 marat700
 
17.10.11
15:49
Сдал чтоли )?
37 rinatru
 
17.10.11
15:49
че ли да.. в 2006 году.
38 marat700
 
17.10.11
15:51
текст запроса тогда кинь )
39 rinatru
 
17.10.11
15:52
не не... хватит. думай сам
40 marat700
 
17.10.11
15:52
Лана )
41 marat700
 
17.10.11
15:53
конструкотром попробую
42 marat700
 
17.10.11
15:54
Я же инженер-системотехник )
43 Nutsiiam
 
17.10.11
16:02
(42) какой код специальности, инженер-системотехник? :)
44 GROOVY
 
17.10.11
16:02
45 rinatru
 
17.10.11
16:09
лови, инженер-системотехник

Функция ПолучитьСтоимостьТоваров(НашДокумент) Экспорт
   
   ВремяСреза = НашДокумент.МоментВремени();
   Товары = НашДокумент.Товары.Выгрузить();
   СписокТоваров = Товары.ВыгрузитьКолонку("Номенклатура");
   
   Запрос=новый Запрос;
   Запрос.Текст="
   |ВЫБРАТЬ    
   |    ВложенныйЗапрос.Номенклатура    КАК Номенклатура,
   |    ВложенныйЗапрос.Количество        КАК Количество,
   |    ЕстьNULL(ПартииТоваровНаСкладахОстатки.КоличествоОстаток,0)    КАК КоличествоОстаток,
   |    ЕстьNULL(ПартииТоваровНаСкладахОстатки.СтоимостьОстаток, 0)    КАК СтоимостьОстаток,
   |    ЕстьNULL(ПартииТоваровНаСкладахОстатки.ДокументОприходования,0) КАК ДокументПоступления
   |ИЗ
   |    (ВЫБРАТЬ
   |        РеализацияТоваровТовары.Номенклатура КАК Номенклатура,
   |        РеализацияТоваровТовары.Количество КАК Количество
   |    ИЗ
   |        Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
   |    ГДЕ
   |        РеализацияТоваровТовары.Ссылка = &Ссылка        
   |    
   |) КАК ВложенныйЗапрос
   |    
   |ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ВремяСреза, Номенклатура В (&СписокНоменклатуры)) КАК ПартииТоваровНаСкладахОстатки
   |    ПО ВложенныйЗапрос.Номенклатура = ПартииТоваровНаСкладахОстатки.Номенклатура
   |    
   |ДЛЯ ИЗМЕНЕНИЯ
   |    РегистрНакопления.ПартииТоваровНаСкладах.Остатки
   |
   |УПОРЯДОЧИТЬ ПО
   |    Номенклатура,
   |    ПартииТоваровНаСкладахОстатки.ДокументОприходования
   |    
   |ИТОГИ
   |    МИНИМУМ(Количество),
   |    СУММА(КоличествоОстаток)
   |ПО
   |    Номенклатура
   |";

   запрос.УстановитьПараметр("ВремяСреза",            ВремяСреза);
   запрос.УстановитьПараметр("СписокНоменклатуры",    СписокТоваров);
   запрос.УстановитьПараметр("Ссылка",                НашДокумент.Ссылка);
   Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
   Возврат Выборка;
   
КонецФункции
46 marat700
 
18.10.11
11:38
2201
47 Maxus43
 
18.10.11
11:50
(46) на 2202 бы учился, почти 1сная специальность)
48 marat700
 
20.10.11
12:04
А чо там ? АСУ ?
49 marat700
 
20.10.11
12:05
Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
       |    Партии1Остатки.Номенклатура КАК Номенклатура,
       |    Партии1Остатки.СчетУчета,
       |    Партии1Остатки.Организация,
       |    Партии1Остатки.Склад,
       |    Партии1Остатки.ДокументОприходования,
       |    Партии1Остатки.КоличествоОстаток,
       |    Партии1Остатки.ЦенаОстаток
       |ИЗ
       |    РегистрНакопления.Партии1.Остатки( &Дата1)  КАК Партии1Остатки
       |ГДЕ
       |    Партии1Остатки.Номенклатура = &ВыбНомен
       |    И Партии1Остатки.Организация = &ВыбОрг
       |    И Партии1Остатки.Склад = &ВыбСклад

       |
       |СГРУППИРОВАТЬ ПО
       |    Партии1Остатки.Номенклатура,
       |    Партии1Остатки.СчетУчета,
       |    Партии1Остатки.Организация,
       |    Партии1Остатки.Склад,
       |    Партии1Остатки.ДокументОприходования,
       |    Партии1Остатки.КоличествоОстаток,
       |    Партии1Остатки.ЦенаОстаток
       |
       |УПОРЯДОЧИТЬ ПО
       |    Номенклатура
       |ИТОГИ ПО
       |    Номенклатура  " ;



   Запрос.УстановитьПараметр("ВыбНомен", ВыбНомен);
   Запрос.УстановитьПараметр("ВыбОрг", ВыбОрг);
   Запрос.УстановитьПараметр("Дата1", Дата1);
   Запрос.УстановитьПараметр("ВыбСклад", ВыбСклад);

   
   

   Результат = Запрос.Выполнить();

   ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
   

   Пока ВыборкаНоменклатура.Следующий() Цикл
       // Вставить обработку выборки ВыборкаНоменклатура

       ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();

       Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
           // Вставить обработку выборки ВыборкаДетальныеЗаписи
           
             

           
           
       КонецЦикла;
   КонецЦикла;
50 marat700
 
20.10.11
12:05
Это выдал конструтор , сам запрос работает
Программист всегда исправляет последнюю ошибку.