Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> добавление типов цен в документ "поступление товаров услуг"          
gorik77 Подменю пользователя
сообщение 03.05.12, 10:09
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0

добрый день!!! помогите пожалуйста разобраться. создал внешюю печатную форму для документа "поступление товаров услуг". в нем при печати для начала необходимо добавить вывод цены таможенной и цены розничной. тип цен в документе выбирается постоянно оптовая цена. для начала пробую хотя бы вывести нужные данные в строчном варианте не помещая их на форму, но первое с чем я столкнулся не могу задать в запросе условие при котором он будет брать данные только актуальные на дату документа и желательно конечно чтоб он даже не перебирал тип цен выбранный в документе, так как это немного облегчит выполнение запроса, но ето уже на втором плане.



Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЦеныНоменклатуры.Номенклатура КАК товар,
        |    ЦеныНоменклатуры.ТипЦен,
        |    ЦеныНоменклатуры.Период КАК Период,
        |    ЦеныНоменклатуры.Цена,
        |    ПоступлениеТоваровУслуг.Товары.(
        |        Номенклатура
        |    ),
        |    ПоступлениеТоваровУслуг.Дата
        |ИЗ
        |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
        |        ПО ПоступлениеТоваровУслуг.Товары.Номенклатура = ЦеныНоменклатуры.Номенклатура
        |ГДЕ
        |    ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент";

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

    
    Для каждого ВыборкаСтрокТипЦен Из ЗапросТипЦен Цикл
        
        
        Сообщить("Товар: " + Строка(СокрЛП(ВыборкаСтрокТипЦен.Товар)) + "  " +  Строка(СокрЛП(ВыборкаСтрокТипЦен.ТипЦен))    + ": " +   Строка(СокрЛП(ВыборкаСтрокТипЦен.Цена)));
        
    КонецЦикла;

на данный момент как видите выдает все данные по типам цен какие есть
[необходимо зарегистрироваться для просмотра ссылки]


1С:Предприятие 8.2 (8.2.14.540) конфигурация:(1.2.6.5)


Signature
1С:Предприятие 8.2 (8.2.14.540) конфигурация:(1.2.6.5)

Vofka Подменю пользователя
сообщение 03.05.12, 10:23
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13956
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

Соединяйте не с РегистрСведений.ЦеныНоменклатуры, а с РегистрСведений.ЦеныНоменклатуры.СрезПоследних. Там можно указать и дату и тип цены

ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаДокумента, ТипЦен = &ТаможенныйТипЦен)

gorik77 Подменю пользователя
сообщение 03.05.12, 11:43
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0

я конечно извиняюсь за свою глупость, но я не совсем понимаю как это можно сделать, я создаю запрос через конструктор. не подскажете как там это можно воплотить. мне так просто удобнее по неопытности. а если я это допишу ручками просто в тексте то потом не смогу корректировать в конструкторе.


Signature
1С:Предприятие 8.2 (8.2.14.540) конфигурация:(1.2.6.5)

Vofka Подменю пользователя
сообщение 03.05.12, 12:02
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13956
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

Цитата(gorik77 @ 03.05.12, 12:43) *
не подскажете как там это можно воплотить.

Ищите в конструкторе таблицу ЦеныНоменклатуры.СрезПоследних

Цитата(gorik77 @ 03.05.12, 12:43) *
если я это допишу ручками просто в тексте то потом не смогу корректировать в конструкторе.

Это кто сказал?

Спасибо сказали: gorik77,

gorik77 Подменю пользователя
сообщение 17.05.12, 13:37
Сообщение #5

Завсегдатай
****
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0

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

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


     ЗапросТипЦен.ВыбратьСтроку();

    
    Для каждого ВыборкаСтрокТипЦен Из ЗапросТипЦен Цикл
        
        
        Сообщить("Товар: " + Строка(СокрЛП(ВыборкаСтрокТипЦен.Товар)) + "  " +  Строка(СокрЛП(ВыборкаСтрокТипЦен.ТипЦен))    + ": " +   Строка(СокрЛП(ВыборкаСтрокТипЦен.Цена)) + "период: " + Строка(СокрЛП(ВыборкаСтрокТипЦен.период)));
        
    КонецЦикла;


убираю условие по дате докумета
  Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
         Запрос.Текст =
        "ВЫБРАТЬ
        |    ПоступлениеТоваровУслуг.Товары.(
        |        Номенклатура КАК товар,
        |        НомерСтроки КАК НомерСтроки
        |    ),
        |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК товар,
        |    ЦеныНоменклатурыСрезПоследних.ТипЦен,
        |    ЦеныНоменклатурыСрезПоследних.Цена,
        |    ЦеныНоменклатурыСрезПоследних.Период,
        |    ПоступлениеТоваровУслуг.Дата
        |ИЗ
        |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ПоступлениеТоваровУслуг.Товары.Номенклатура
        |ГДЕ
        |    ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент
        |
        |УПОРЯДОЧИТЬ ПО
        |    НомерСтроки,
        |    товар";

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


     ЗапросТипЦен.ВыбратьСтроку();

    
    Для каждого ВыборкаСтрокТипЦен Из ЗапросТипЦен Цикл
        
                Сообщить("Товар: " + Строка(СокрЛП(ВыборкаСтрокТипЦен.Товар)) + "  " +  Строка(СокрЛП(ВыборкаСтрокТипЦен.ТипЦен))    + ": " +   Строка(СокрЛП(ВыборкаСтрокТипЦен.Цена)) + "период: " + Строка(СокрЛП(ВыборкаСтрокТипЦен.период)));
        
    КонецЦикла;


смотря на результа видно что выберается просто самые последние данные
Специально изменил оптовую цену чтоб было четко видно как работает

[необходимо зарегистрироваться для просмотра ссылки]

как же всетаки заставить выбирать данные строго на конкретный момент времени?


 ! 

не надо без надобности выделять шрифт жирным!
 


Сообщение отредактировал logist - 17.05.12, 14:18


Signature
1С:Предприятие 8.2 (8.2.14.540) конфигурация:(1.2.6.5)

logist Подменю пользователя
сообщение 17.05.12, 14:22
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

А в чем проблема то?
При указанных датах, условие по дате в первом запросе отрабатывает верно - пустая таблица.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

gorik77 Подменю пользователя
сообщение 18.05.12, 9:51
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(logist @ 17.05.12, 15:22) *
А в чем проблема то?
При указанных датах, условие по дате в первом запросе отрабатывает верно - пустая таблица.


проблема в том, что мне нужно выбрать данные на указанную дату. данные на тот момент имеются,
т.к. документ ведется по оптовой цене. а вот вытащить их не получается. крутил и так и этак, все никак. подскажите что не так делаю если не сложно.
Спасибо!


Signature
1С:Предприятие 8.2 (8.2.14.540) конфигурация:(1.2.6.5)

ignsv Подменю пользователя
сообщение 18.05.12, 12:10
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

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


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

Спасибо сказали: gorik77,

gorik77 Подменю пользователя
сообщение 18.05.12, 12:49
Сообщение #9

Завсегдатай
****
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(ignsv @ 18.05.12, 13:10) *
так получает последние актуальные цены на дату документа


на сколько я понял что вы пробовали ето непосредственно в документе. учитывая этот факт
немного откорректировал запрос и все сработало. Большое спасибо!



[необходимо зарегистрироваться для просмотра ссылки]


Signature
1С:Предприятие 8.2 (8.2.14.540) конфигурация:(1.2.6.5)

ignsv Подменю пользователя
сообщение 18.05.12, 14:26
Сообщение #10

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

Док у меня ДокументСсылка ( в моем случае реквизит облаботки) все эксперименты провожу создавая новую обработку.

Кстати у Вас в печатной форме кажись ошибочка: "Всього iз ПДВ". Возможно "Всього з ПДВ"
И "Отрим" тоже настораживает )).

gorik77 Подменю пользователя
сообщение 23.05.12, 10:35
Сообщение #11

Завсегдатай
****
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0

осмелюсь спросить в етой же теме т.к. это есть продолжение.

ЗапросТипЦен.Колонки.Добавить("ОптоваяЦена",,"ОптоваяЦена");

Для каждого ВыборкаСтрокТипЦен Из ЗапросТипЦен Цикл

Если  ВыборкаСтрокТипЦен.ТипЦен.наименование = Строка(СокрЛП("Оптовая цена")) тогда
            ОптоваяЦена1 = СокрЛП(ВыборкаСтрокТипЦен.Цена);
            
            ВыборкаСтрокТипЦен.ОптоваяЦена = ОптоваяЦена1;
КонецЕсли;

КонецЦикла;

ЗапросТипЦен.ВыбратьСтроку();
          ЗапросТипЦен.Свернуть("товар","ОптоваяЦена,ТаможеннаяЦена,РозничнаяЦена");
         ЗапросТипЦен.ВыбратьСтроку();


до группировки все отлично, но после группировки новые колонки пустые, на сколько я понял из-за того что
не назначен тип число. но все мои попытки как то назначить тип(число) ничего не принесли. перебрал весь
синтаксис помощник, ничего не получается 09000000.gif
подскажите если не сложно help.gif


Signature
1С:Предприятие 8.2 (8.2.14.540) конфигурация:(1.2.6.5)

ignsv Подменю пользователя
сообщение 23.05.12, 10:59
Сообщение #12

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

не понятно что вы хотите зделать )) но если вас мучают пустые колонки с Неопределено (когда тип цен не Оптовая) то можно ставить "0"

Если  ВыборкаСтрокТипЦен.ТипЦен.наименование = Строка(СокрЛП("Оптовая цена")) тогда
            ОптоваяЦена1 = СокрЛП(ВыборкаСтрокТипЦен.Цена);            
            ВыборкаСтрокТипЦен.ОптоваяЦена = ОптоваяЦена1;
Иначе  ВыборкаСтрокТипЦен.ОптоваяЦена = 0;
Конецесли


gorik77 Подменю пользователя
сообщение 23.05.12, 11:23
Сообщение #13

Завсегдатай
****
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0

я так понял что не совсем понятно что я хотел спросить. покажу наглядно

для того чтоб он суммировал новые колонки необходимо чтоб у них был тип(число)

[необходимо зарегистрироваться для просмотра ссылки]


ЗапросТипЦен.Колонки.Добавить("ОптоваяЦена",,"ОптоваяЦена");
      ЗапросТипЦен.Колонки.Добавить("ТаможеннаяЦена",,"ТаможеннаяЦена");
      ЗапросТипЦен.Колонки.Добавить("РозничнаяЦена",,"РозничнаяЦена");
      

      
    Для каждого ВыборкаСтрокТипЦен Из ЗапросТипЦен Цикл
        
        Если  ВыборкаСтрокТипЦен.ТипЦен.наименование = Строка(СокрЛП("Оптовая цена")) тогда
            ОптоваяЦена1 = СокрЛП(ВыборкаСтрокТипЦен.Цена);
            Сообщить("оптовая цена: " + ОптоваяЦена1);
            ВыборкаСтрокТипЦен.ОптоваяЦена = ОптоваяЦена1;
        ИначеЕсли    ВыборкаСтрокТипЦен.ТипЦен.наименование = Строка(СокрЛП("Таможенная цена")) тогда
            ТаможеннаяЦена1 = СокрЛП(ВыборкаСтрокТипЦен.Цена);
            Сообщить("оптовая цена: " + ТаможеннаяЦена1);
            ВыборкаСтрокТипЦен.ТаможеннаяЦена = ТаможеннаяЦена1;
         ИначеЕсли   ВыборкаСтрокТипЦен.ТипЦен.наименование = Строка(СокрЛП("Розничная цена")) тогда
            РозничнаяЦена1 = СокрЛП(ВыборкаСтрокТипЦен.Цена);
            Сообщить("оптовая цена: " + РозничнаяЦена1);
            ВыборкаСтрокТипЦен.РозничнаяЦена = РозничнаяЦена1;

            
        КонецЕсли;
            
        
        КонецЦикла;
        

         ЗапросТипЦен.ВыбратьСтроку();
          ЗапросТипЦен.Свернуть("товар","ОптоваяЦена,ТаможеннаяЦена,РозничнаяЦена");
         ЗапросТипЦен.ВыбратьСтроку();



Signature
1С:Предприятие 8.2 (8.2.14.540) конфигурация:(1.2.6.5)

ignsv Подменю пользователя
сообщение 23.05.12, 12:21
Сообщение #14

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

ну так чем вас "0" не устраивает? - будет тип число.
вы в цикле проверяете типцен: Если оптовая то в колонку Оптовая ставите цену, а востальные 0 , аналогично для розничной и таможенной

sava1 Подменю пользователя
сообщение 23.05.12, 12:30
Сообщение #15

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2695
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

типизация колонок
тз.Колонки.Добавить("число", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Любой)), "1");

ignsv Подменю пользователя
сообщение 23.05.12, 12:40
Сообщение #16

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

Цитата(sava1 @ 23.05.12, 13:30) *
тз.Колонки.Добавить("число", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Любой)), "1");


о да можно и так.

можно и покороче:

ЗапросТипЦен.Колонки.Добавить("РозничнаяЦена", Новый ОписаниеТипов("Число"));

Спасибо сказали: gorik77,

gorik77 Подменю пользователя
сообщение 23.05.12, 13:15
Сообщение #17

Завсегдатай
****
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(ignsv @ 23.05.12, 13:40) *
о да можно и так.

можно и покороче:

ЗапросТипЦен.Колонки.Добавить("РозничнаяЦена", Новый ОписаниеТипов("Число"));



спасибо, ето отличный вариант, все получилось

Цитата(ignsv @ 23.05.12, 13:40) *
ЗапросТипЦен.Колонки.Добавить("РозничнаяЦена", Новый ОписаниеТипов("Число"));


можно ли тут задать количество знаков после запятой?


Signature
1С:Предприятие 8.2 (8.2.14.540) конфигурация:(1.2.6.5)

Vofka Подменю пользователя
сообщение 23.05.12, 13:23
Сообщение #18

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13956
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

Цитата(gorik77 @ 23.05.12, 14:15) *
можно ли тут задать количество знаков после запятой?

А посмотреть выше (на пост sava1) не судьба?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.05.24, 10:33
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!