7.7 Справочники!!!!

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

  1. TopicStarter Overlay
    AlexLink
    Offline

    AlexLink

    Регистрация:
    12 янв 2015
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    дравствуйте. Подскажите пожалуйста как лучше решить проблему.

    Есть справочник Поступление в нем содержаться сл. данные:
    -Наименование
    -Дата
    -Товар
    -Цена
    При каждом новом поступлении товара вносится одна запись с датой и ценой.

    Вопрос, как сделать чтобы при выписке счета цена бралась из этого справочника на дату последнего поступления?
  2. pingvinchik
    Offline

    pingvinchik Опытный в 1С

    Регистрация:
    1 дек 2015
    Сообщения:
    74
    Симпатии:
    14
    Баллы:
    29
    Мужчины молчат(( а мне интересно....
  3. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    Всем привет.
    Это точно справочник, а не документ? Кто Вам делал этот справочник? Может у него и спросить, для чего так организовано и как это использовать? Логичнее было бы сделать реквизит Цена периодическим и получать ее на нужную дату.
    AlexLink нравится это.
  4. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    :)

    дравствуйте, дравствуйте :)

    а в чём собственно то проблема?
    конфа скорее всего не типовая
    реквизит "Цена" по идее должен быть переодическим, раз на дату хотите, и выбираться на дату документа "счёт"

    да и даже если он не переодический, то на момент выписки счёта там будет последняя записанная цена, т.е. по логике последний приход.
    AlexLink нравится это.
  5. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    Боюсь, что реквизит Дата говорит о том, что в справочнике масса одинаковых элементов с разной датой. Запросом можно получить или перебором. Запросом красивее, но не умею я их грамотно составлять, мне проще второе.
    AlexLink нравится это.
  6. Хряк
    Online

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

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    спр выбрать элеметы по реквизиту ("Товар", Товар)
    пдата=дата(0)
    Пока спр получить элемент цикл
    если пдата>=спр дата тогда
    цена=спр цена
    конецесли
    конеццикла
    AlexLink нравится это.
  7. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    Напутали немножко с датами.
    Можно весь справочник прогнать, если времени не жалко:

    Код:
    Спр = СоздатьОбъект("Справочник.Поступление");
    нДата = Дата(0);
    Цена = 0;
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
    Если (Спр.Товар = Товар) И (Спр.Дата>=нДата) Тогда
    Цена=Спр.Цена;
    нДата = Спр.Дата;
    КонецЕсли;
    КонецЦикла;
    Последнее редактирование: 28 янв 2016
    AlexLink нравится это.
  8. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    без конфы ТС можно хоть что гадать :)
    AlexLink нравится это.
  9. TopicStarter Overlay
    AlexLink
    Offline

    AlexLink

    Регистрация:
    12 янв 2015
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Всем огромное спасибо за ответы=)

    Я сразу что то на подобии сделал с использованием

    Спрк.ОбратныйПорядок(1);

    и оно мне давало последний элемент. Но переделал под Ваше, как то солидней. Вообщем все работает. Всем спасибо=)
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А почему не использовать периодическое значение? Намного удобнее..
    AlexLink нравится это.
  11. TopicStarter Overlay
    AlexLink
    Offline

    AlexLink

    Регистрация:
    12 янв 2015
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Как то с ними не доводилось пересекаться =)
  12. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Так попробуйте... И код быстрее отрабатывать будит и ошибки исключены.
  13. TopicStarter Overlay
    AlexLink
    Offline

    AlexLink

    Регистрация:
    12 янв 2015
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Все выше сделанное каким то чудесным образом дало сбой... вообщем не работает...
    Решил попробовать как Вы говорили. И сразу начались проблемы.
    --------
    Есть справочник "поступление", в нем внесены данные:
    товар1
    товар2
    товар3
    Состоит справочник из реквезитов
    код
    наименование
    цена
    --------
    есть справочник "номенклатура"
    в нем есть реквизит "Перечисление.Тип"
    в нем:
    тип1
    тип2
    тип3
    -------
    Дело в том что когда выписываю "счет" и выбираю например товар из "номенклатуры" "тип2" то как сделать так что бы цена бралась например из справочника "поступление" "товар3". Помогите пожалуйста решить этот вопрос.
  14. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    Код:
       Запрос = СоздатьОбъект("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(Сформировать)
        |ТМЦ = Справочник.Новый1.ТМЦ;
        |цена = Справочник.Новый1.цена;
        |дата = Справочник.Новый1.дата;
        |Группировка дата без групп;
        |Условие(ТМЦ = выбТМЦ);
        |"//}}ЗАПРОС
        ;
        // Если ошибка в запросе, то выход из процедуры
        Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
            Возврат;
        КонецЕсли;
    
    
        Если Запрос.Группировка(-1) = 1 Тогда
            искомаяцена = Запрос.цена
        КонецЕсли;
    AlexLink нравится это.
  15. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    Товар1...N - это Номенклатура?
    Если есть реквизит Товар с типом Номенклатура и признаком Сортировка, тогда просто:
    Код:
    Спр = СоздатьОбъект("Справочник.Поступление");
    Цена = 0;
    Если Спр.НайтиПоРеквизиту("Товар",Товар,1) = 1 Тогда
    Цена = Спр.Цена.Получить(РабочаяДата());
    Иначе
    Сообщить("Нет "+Строка(Товар)+" в справочнике Поступление!");
    КонецЕсли;
    Можно и по наименованию поискать, если они совпадают с Номенклатурой.
    Например:

    Код:
    Если Спр.НайтиПоНаименованию(Товар.Наименование) = 1 Тогда
    ...
    Последнее редактирование: 3 фев 2016
    AlexLink нравится это.
  16. TopicStarter Overlay
    AlexLink
    Offline

    AlexLink

    Регистрация:
    12 янв 2015
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Спасибо! :)
  17. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    Если база на дбф-ах то в принципе без разницы запросом или отбором, если на скуле то запрос всегда быстрее отработает

Поделиться этой страницей