Вход | Регистрация

  1  2
1С:Предприятие ::

Метки:документы

Как получить цену номенклатуры из последнего документа

Я
   Umka-Kate
 
03.08.04 - 16:01
мне нужно изменить цены в справочнике, документом.
при некоторых условиях мне нужно по определенной позиции номенклатуры получить ее цену из последнего документа "реализация"
как это сделать?
 
 
   Umka-Kate
 
101 - 04.08.04 - 16:33
(60) спешал фор ю :0)(100)
   DRB
 
102 - 04.08.04 - 16:36
Это хитро продуманный конспираторский вариант ущемления прав програмиста 1С
пока не пойму зачем это ничем больше не попмогу..
Если нужен отбор по складу, товару, последнему документу... надо перебрать по фильтру оборотный регистр.. а если многофирменный учет ведется?
Рекомендую сначала получить общую Таблицу приходных цен.

Создадим теперь ТЗ цен на все товары - это проще чем ххх раз искать по каждому товару. Как сделать чтобы не было лишнего?

выбираем все движения оборотного регистра
потом шуруем по группировке по ТМЦ и делаем такую штуку:

Рег=СоздатьОбъект("Регистр.ОборотТМЦ");
Рег.ОбратныйПорядок(1);
Рег.ВыбратьДвижения();
Пока Рег.ПолучитьДвижение()=1 Цикл
 //Тут не мешало бы проверок поставить (расход ли это или приход - зависит от того что ищем)

  Состояние(Рег.ТекущийДокумент().ДатаДок);
  Строчка="";
  КодПоиска="";
  КодПоиска=КодПоиска+глПолучитьИдОбъекта(Рег.Фирма);
  КодПоиска=КодПоиска+глПолучитьИдОбъекта(Рег.Склад);
  КодПоиска=КодПоиска+глПолучитьИдОбъекта(Рег.ТМЦ);
  Если Тз.НайтиЗначение(КодПоиска,Строчка,"КодПоиска")=1 ТОгда
    Продолжить;//То есть тут мы проверяем если этот товар, эта фирма и этот склад в этой ТЗ у нас есть то добавлять не надо уже

  КонецЕсли;
  Тз.НоваяСтрока();
  Тз.Фирма=Рег.Фирма;
  Тз.Склад=Рег.Склад;
  Тз.ТМЦ=Рег.ТМЦ;
  Тз.Докум=Рег.ТекущийДокумент();
  Тз.Кво=Рег.Кво;
  Тз.Сумма=Рег.Сумма;//Обычно ведь в движениях цены нету придется делить потом

КонецЦикла;

=========
Что такое  глПолучитьИдОбъекта?
Это уникальный номер получаем так:
Функция глПолучитьИдОбъекта(Объект) Экспорт
    Если ПустоеЗначение(Объект)=1 ТОгда
        Ид="";
    Иначе
        Ид=_IdToStr(СтрПолучитьСтроку(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(ЗначениеВСтрокуВнутр(Объект),"{",""),"}",""),Симв(34),"")," ",""),",",РазделительСтрок),7));
    КонецЕсли;
      Возврат Лев(Ид+"_________",9);
КонецФункции
=============================
Что мы имеем в результате? Таблицу по кво и сумме по последнему тому чему нам надо..
Как искать быстро по трем полям? у нас это уже реализовано:
Если нам надо найти по
ТМЦ - это товар
Фирма - фирма
Склад - склад поиск идет так:

КодПоиска="";
КодПоиска=КодПоиска+глПолучитьИдОбъекта(Фирма);
КодПоиска=КодПоиска+глПолучитьИдОбъекта(Склад);
КодПоиска=КодПоиска+глПолучитьИдОбъекта(ТМЦ);
// Вот код поиска теперь есть

Строчка="";
Если Тз.НайтиЗначение(КодПоиска,Строчка,"КодПоиска")=1 ТОгда
Вот в "строчке" мы имеем номер строки где есть количество и сумма
=============================
Это реальный код одного из отчетов моих - надо было остатки по ценам посл. приходов в разрезе фирм, складов, тмц расшифровать.
=============================
Правда я  еще для ускорения формирования нарисовал два регистра отдельных -
Оборотный (он в примере показан) и остатков (на конец месяца я фиксирую цены в нем в разрезе складов)...
Просто было впадло думать по другому - но быстрее варианта пока нету скоко не искали..
Если бы без разреза фирм и складов - было бы проще - под справочник - а так...
вобщем думай
==========================================
   DRB
 
103 - 04.08.04 - 16:39
Но если тебе все равно чем рога и копыта занимаются то делай тупой перебор документов а не регистра.. и пусть мучаются если не дадут тебе того что они хотят в человеческом виде - ну и что что долго - как написали так и работает :-))
   Umka-Kate
 
104 - 04.08.04 - 16:48
(103
у меня уже по регистру правильно выбирает
можно ли найти строку документа по какой было движение, а то циклом долго документы большие?..
(59)

вот что мне сейчас надо бы...

(102) огромное спасибо
я попытаюсь предложить этот вариант, но вряд ли меня послушают...
   DRB
 
105 - 04.08.04 - 17:02
(104) как оно правильно выбирает?
ты же не знаешь - приход это, расход или перемещение?
   Umka-Kate
 
106 - 04.08.04 - 17:10
(105) по приходу надо..
   DRB
 
107 - 04.08.04 - 17:15
(106) а из кода того что крутился тебе непонятно, приход, срасход или перемещение - ты получаешь цену ПОСЛЕДНЕГО движения товара и притом еще и проверки на нужный склад надо ставить
   Umka-Kate
 
108 - 04.08.04 - 17:30
(107) ну хоть по любому документу пусть получает, потом буду делать как по приходу
   Umka-Kate
 
109 - 04.08.04 - 17:33
(107) поставлю проверку по вид()
   Umka-Kate
 
110 - 04.08.04 - 17:41
Дк.НайтиДокумент(Рег.ТекущийДокумент());  
                            Дк.ВыгрузитьТабличнуюЧасть(Таб,"Номенклатура,Цена");
                            Таб.НайтиЗначение(Спр.ТекущийЭлемент(),Стр,Кол); 
                            ЦенаН=Таб.ПолучитьЗначение(Стр,"Цена");

вота как!!!
 
 
   Slaus
 
111 - 31.08.04 - 17:22
А по покупателю можно?

  1  2

Список тем форума
Рекламное место пустует   Рекламное место пустует
Прочитай, хотя бы, Митичкина "Разработка в системе 1С:Предприятие 8". Волшебник
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует