Имя: Пароль:
1C
 
УТ 11.4.7.150 выбор дополнительного вида цен
,
0 LivingStar
 
06.06.19
07:20
Конфигурация УТ 11.4.7.150. На форме разместил реквизит дополнительная цена. Тип справочник ВидыЦен.
В табличной части поле ЦенаСравнения. Как сейчас при выборе дополнительной цены, проставить в колонке эту цену?
В справочнике не нашел самого числа цены.
1 Dmitrith
 
06.06.19
08:47
Открой для себя регистр сведений ЦеныНоменклатуры
2 Maniac
 
06.06.19
08:49
)))) Реквизиты научился делать... а про код забыл))
3 Maniac
 
06.06.19
08:51
Прямо классика жанра, когда пользователи думают что в 1С простым волшебных добавлением колонок и кнопок думают что у программиста это работы на пару минут) И все сразу заработает как им нужно)))
4 LivingStar
 
06.06.19
10:31
Если я при перевыборе дополнительного вида цен, хочу сделать запрос по регистру сведений
и заполнить столбец с ценами. Как правильно это будет сделать?
В запрос нужно передать список цен с табличной части документа?


ВЫБРАТЬ
    ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК Цена,
    ЦеныНоменклатурыПоставщиковСрезПоследних.ВидЦеныПоставщика КАК ВидЦеныПоставщика
ИЗ
    РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(&Период, ВидЦеныПоставщика = &ДополнительнаяЦена) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
5 LivingStar
 
06.06.19
11:51
Как правильно выбрать? Что бы отбор был только в ценами?

ВЫБРАТЬ
    ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК Цена
ИЗ
    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(&Период, ВидЦеныПоставщика = &ВидЦены) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
        ПО ЗаказПоставщикуТовары.Номенклатура = ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
ГДЕ
    ЗаказПоставщикуТовары.Ссылка = &Ссылка
6 LivingStar
 
06.06.19
12:00
Так верно будет?

ВЫБРАТЬ
    ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура,
    ЕСТЬNULL(ЦеныНоменклатурыПоставщиковСрезПоследних.Цена, 0) КАК Цена
ПОМЕСТИТЬ ВТ_ДополнительныеЦены
ИЗ
    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(
                &Период,
                ВидЦеныПоставщика = &ВидЦены
                    И Цена <> NULL) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
        ПО ЗаказПоставщикуТовары.Номенклатура = ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
ГДЕ
    ЗаказПоставщикуТовары.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ДополнительныеЦены.Номенклатура КАК Номенклатура,
    ВТ_ДополнительныеЦены.Цена КАК Цена
ИЗ
    ВТ_ДополнительныеЦены КАК ВТ_ДополнительныеЦены
ГДЕ
    ВТ_ДополнительныеЦены.Цена <> 0
7 sqr4
 
06.06.19
12:03
Цена <> NULL
даже NULL <> NULL ахахахах
8 LivingStar
 
06.06.19
13:37
При изменении види цен, делаю запрос.

Как сейчас правильно занести выбранные цены в строки табличной части?
Подскажите пожалуйста. Очень благодарен!!!


//
&НаСервере
Процедура УстановитьЦенуСравненияНаСервере()
    Для каждого СтрТовары Из Элементы.Товары Цикл
        Сообщить(СтрТовары.Товар);
    КонецЦикла;
    
    Запрос       = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ
        |    ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура
        |ПОМЕСТИТЬ ВТ_ЗаказПоставщику
        |ИЗ
        |    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
        |ГДЕ
        |    ЗаказПоставщикуТовары.Ссылка = &Ссылка
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_ЗаказПоставщику.Номенклатура                 КАК Номенклатура,
        |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
        |    ЦеныНоменклатурыСрезПоследних.ВидЦены           КАК ВидЦены
        |ИЗ
        |    ВТ_ЗаказПоставщику КАК ВТ_ЗаказПоставщику
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
        |                &Период,
        |                ВидЦены = &ВидЦены
        |                    И Номенклатура В
        |                        (ВЫБРАТЬ
        |                            ЗаказПоставщику.Номенклатура
        |                        ИЗ
        |                            ВТ_ЗаказПоставщику КАК ЗаказПоставщику)) КАК ЦеныНоменклатурыСрезПоследних
        |        ПО ВТ_ЗаказПоставщику.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура";
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Запрос.УстановитьПараметр("ВидЦен", Справочники.ВидыЦен.НайтиПоНаименованию("2018 ТЕСТ", 1));
    Рез = Запрос.Выполнить();
    Если Не Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Пока Выборка.Следующий() Цикл
            
        КонецЦикла;
    КонецЕсли;
    
КонецПроцедуры
9 sqr4
 
06.06.19
14:02
Передавай в запрос еще идентификатор строки, а затем ищи ее через НайтиСтроки. Быстрее будет, взять все реквизиты тч, а затем из запроса все загрузить в тч, наверное.
10 LivingStar
 
06.06.19
14:10
(9) Не совсем понимаю, извините (((( Можно пример кода?
11 LivingStar
 
06.06.19
14:33
Подскажите как записать значения в табличную часть?


    Если Не Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Пока Выборка.Следующий() Цикл
             Отбор = Новый Структура();
             Отбор.Вставить("Номенклатура", Выборка.Номенклатура);
             НайденноеЗначение = Объект["Товары"].НайтиСтроки(Отбор);
             Если НайденноеЗначение.Количество() > 0 Тогда
                 Сч = 0;
                 Пока НайденноеЗначение.Количество() >= Сч Цикл
                     Сообщить(НайденноеЗначение[Сч].Наименование);
                     НайденноеЗначение[Сч].СуммаСравнения = Выборка.Цена;
                     Сч = Сч + 1;
                 КонецЦикла;
             КонецЕсли;            
        КонецЦикла;
    КонецЕсли;
    
КонецПроцедуры
// <-
12 LivingStar
 
06.06.19
14:49
почему не появляются значения в табличной части которые я заполняю?


        Пока Выборка.Следующий() Цикл
             Отбор = Новый Структура();
             Отбор.Вставить("Номенклатура", Выборка.Номенклатура);
             //
             ОбъектЗаказПоставщику = Объект.Ссылка.ПолучитьОбъект();
             //
             НайденноеЗначение = ОбъектЗаказПоставщику["Товары"].НайтиСтроки(Отбор);
             Если НайденноеЗначение.Количество() > 0 Тогда
                 Сч = 0;
                 Пока НайденноеЗначение.Количество() > Сч Цикл
                     //Сообщить(НайденноеЗначение[Сч].Номенклатура);
                     НайденноеЗначение[Сч].СуммаСравнения = Выборка.Цена;
                     Сч = Сч + 1;
                 КонецЦикла;
             КонецЕсли;            
             //ОбъектЗаказПоставщику.Записать(РежимЗаписиДокумента.Запись);
        КонецЦикла;
13 LivingStar
 
06.06.19
14:56
(12) Почему данные не появляются в табличной части? В отладчике она проставляются, что я не так делаю?
14 LivingStar
 
06.06.19
15:06
UP!
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс