7.7 ПОСЛЕДНИЙ ДОКУМЕНТ ЗА ПЕРИОД ПО РЕКВЕЗИТУ

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Raideres, 8 мар 2017.

  1. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    532
    Симпатии:
    1
    Баллы:
    29
    Есть документ рецептура в нем есть реквизит номенклатура
    я заполнил список товаров и теперь нужно найти по реквизиту номенклатуры последний документ рецептуры

    рецептура может повторятся
    например
    1.докум 01.01.10 чебурек
    2.докум 02.01.10 хлеб
    3.докум.03.01.10 чебурек
    как олучить этот документ по реквизиту "3.докум.03.01.10 чебурек"

    Код:
    Процедура ДобавитьТовар()  
       Спр=СоздатьОбъект("Справочник.Номенклатура");
       Спр.ВыборГруппы(1);
       Если Спр.Выбрать("Выберите товар","ДляВыбора")=1 Тогда
         СписТов.ДобавитьЗначение(Спр.ТекущийЭлемент());
       КонецЕсли;  
    КонецПроцедуры
    
    //_перебираю список____________________________________________________
    Для Инд = 1 По СписТов.РазмерСписка() Цикл
         ТекущНом= СписТов.ПолучитьЗначение(Инд);
    
       КонецЦикла;
  2. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.556
    Симпатии:
    59
    Баллы:
    54
    последнийдок=""
    док=создатьобъект("Документ.Рецептура")
    док.обратныйпорядок(1)
    док.выбратьдокументы
    пока док.получитьдокумент<>0 цикл
    нашли=0
    док.выбратьстроки
    пока док.получитьстроку=1 цикл
    если.док.номенклатура=ТекущНом тогда
    последнийдок=док.текущийдокумент
    нашли=1
    прервать
    конеццикла
    если нашли=1 тогда
    прервать
    конецесли
    конеццикла
  3. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    532
    Симпатии:
    1
    Баллы:
    29


    Код:
        последнийдок="";
            док=создатьобъект("Документ.РецептураПлюс");
            док.ОбратныйПорядок(1);
            док.ВыбратьДокументы(,);
            пока док.ПолучитьДокумент() <>0 цикл
                нашли=0;
                док.ВыбратьСтроки();
                пока док.ПолучитьСтроку() = 1 цикл
                    если док.Продукция=ТекущНом тогда
                        последнийдок=док.текущийдокумент();
                        нашли=1;
                        прервать;
                    конецесли;
                конеццикла;
                если нашли=1 тогда
                    прервать;
                конецесли;
            конеццикла; 
  4. man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    241
    Симпатии:
    11
    Баллы:
    29
    Странно, у меня что-то не прерывается, пока ESC не нажмешь.
  5. man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    241
    Симпатии:
    11
    Баллы:
    29
    С этим разобрался, есть вопрос:
    сам код:
    Код:
        ДатаНачала = НачМесяца(ДобавитьМесяц(ПолучитьДатуТА(),-6));
       
        ДокЗак = ТекущийДокумент();
        ДокПост = СоздатьОбъект ("Документ.ПоступлениеТМЦ"); 
       
        ДокПост.ВыбратьДокументы(ДатаНачала, ТекущаяДата());
        Пока ДокПост.ПолучитьДокумент() <> 0 цикл
           
            ДокПост.ВыбратьСтроки();
            Пока ДокПост.ПолучитьСтроку() = 1 Цикл
               
               
                ДокЗак.ВыбратьСтроки();
                Пока ДокЗак.ПолучитьСтроку()=1 Цикл
                   
                   
                    Если ДокПост.Номенклатура.Наименование = ДокЗак.Номенклатура.ТекущийЭлемент().Наименование Тогда
    
                        Сообщить ("Поступление..............." + ДокПост.Номенклатура);
                        Сообщить ("Номенклатура.............." + ДокЗак.Номенклатура.ТекущийЭлемент().Наименование);
                        Сообщить ("Поставщик................." + ДокПост.Контрагент);
                        Сообщить ("Цена по документу........." + ДокПост.Цена);
                        Сообщить ("");
                       
                        Цена1 = ДокПост.Цена;
    
                    КонецЕсли;
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;    
    Проходит весь цикл и устанавливает в текущей строке последнее значение (рис.11), как сделать чтобы устанавливало Цена1 в каждой строке? 11.jpg
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.612
    Симпатии:
    541
    Баллы:
    204
    ВыбратьСтроки(); //ссылки на объект не нужно!
    Пока ПолучитьСтроку()=1 Цикл


    Если ДокПост.Номенклатура.Наименование = Номенклатура.ТекущийЭлемент().Наименование Тогда

    Сообщить ("Поступление..............." + ДокПост.Номенклатура);
    Сообщить ("Номенклатура.............." + Номенклатура.ТекущийЭлемент().Наименование);
    Сообщить ("Поставщик................." + ДокПост.Контрагент);
    Сообщить ("Цена по документу........." + ДокПост.Цена);
    Сообщить ("");

    Цена1 = ДокПост.Цена;

    КонецЕсли;
    КонецЦикла;
    man37 нравится это.
  7. man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    241
    Симпатии:
    11
    Баллы:
    29
    Спасибо, за подсказку!
    Ещё вопрос:
    Можно ли раскидать цены по поставщикам? Что-то ни как не придумал как это сделать.
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.612
    Симпатии:
    541
    Баллы:
    204
    Одна и та же номенклатура но от разных поставщиков и по разной цене?
  9. man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    241
    Симпатии:
    11
    Баллы:
    29
    Совершенно верно.
    Может выгрузить в ТЗ, свернуть и потом раскидать?
  10. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.556
    Симпатии:
    59
    Баллы:
    54
    если конфа тис,- ищи номенклатуру по регистру партии наличие
    и ваще, к чему весь этот цирк?
    задача о чем, конечная цель какая?
  11. man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    241
    Симпатии:
    11
    Баллы:
    29
    Задача: вывести в таблицу всех поставщиков и их цены за определенный период.
  12. man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    241
    Симпатии:
    11
    Баллы:
    29
    Согласен, можно приблизительно так:
    Код:
        |Поставщик = Регистр.ПартииНаличие.Партия.Поставщик;
        |ВалютаВзаиморасчетов = Регистр.ПартииНаличие.Партия.ДоговорПоставщика.ВалютаВзаиморасчетов;
        |Цена = Регистр.ПартииНаличие.Партия.Цена;
        |ПриходныйДокумент = Регистр.ПартииНаличие.Партия.ПриходныйДокумент;
        |Номенклатура = Регистр.ПартииНаличие.Номенклатура;
    
    А как это теперь выгрузить в документ?
  13. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.556
    Симпатии:
    59
    Баллы:
    54
    выгрузи запрос в тз, зачем в документ?
  14. man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    241
    Симпатии:
    11
    Баллы:
    29
    Надо в документ!
  15. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.556
    Симпатии:
    59
    Баллы:
    54
    фсё равно, сначала в тз, оттуда в документ
  16. man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    241
    Симпатии:
    11
    Баллы:
    29
    Спасибо!