8.х Установка цен номенклатуры порядок заполнения

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Nik_Nik, 11 мар 2009.

  1. TopicStarter Overlay
    Nik_Nik
    Offline

    Nik_Nik Опытный в 1С

    Регистрация:
    24 дек 2008
    Сообщения:
    61
    Симпатии:
    1
    Баллы:
    26
    Помогите пожалуйста разобраться.УТ 8.1. ред 10.3.
    На основание документа Поступление товар и услуг - делаем установку цен номенклатуры. И меня интересует вопрос почему поряд заполнения номенклатуры в установке цен не такой как в поступление. Как сделать что бы первая позиция в поступление = первой позиции в установке цен и так далее, т.е. что совпадали по строкам, а не с бухты барахты. Кто-нибудь даст объяснения потому что сам уже голову сломал над этим.
  2. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Потому что данные выбираются запросом и не упорядочиваются. Вам надо залезть в код - посмотреть где выполняется запрос и добавить упорядочение по номеру строки.
  3. TopicStarter Overlay
    Nik_Nik
    Offline

    Nik_Nik Опытный в 1С

    Регистрация:
    24 дек 2008
    Сообщения:
    61
    Симпатии:
    1
    Баллы:
    26
    Помогите разобраться, наш программист уволился, другого пока не нашли. а это срочнях нужно, я просто экономист, который только умеет пользоваться программой. Я код выложи, кто сможет помочь помогите пожалуйста:

    Код:
    Процедура ЗаполнитьТабличнуюЧастьПоПоступлению(ДокументПоступление, ЧиститьТипыЦен = Истина) Экспорт
    
    Если НЕ ЗначениеЗаполнено(ДокументПоступление.ТипЦен) Тогда
    ОбщегоНазначения.СообщитьОбОшибке("В документе "+СокрЛП(ДокументПоступление)+" не установлен тип цен! Заполнение невозможно.");
    Возврат;
    КонецЕсли;
    
    ТипЦен = ДокументПоступление.ТипЦен.ТипЦеныНоменклатуры;
    
    Если НЕ ЗначениеЗаполнено(ТипЦен) Тогда
    ОбщегоНазначения.СообщитьОбОшибке("для типа цен "+СокрЛП(ДокументПоступление.ТипЦен)+" не установлен базовый тип цен! Заполнение невозможно.");
    Возврат;
    КонецЕсли;
    
    Если ТипыЦен.Найти(ТипЦен) = Неопределено Тогда
    Если ЧиститьТипыЦен Тогда
    ТипыЦен.Очистить();
    КонецЕсли;
    
    СтрокаТабличнойЧасти = ТипыЦен.Добавить();
    СтрокаТабличнойЧасти.ТипЦен = ТипЦен;
    
    // Обновим список типов цен
    ЗаполнитьСписокТиповЦен();
    
    // обновим состав колонок
    ОбновитьСоставКолонок();
    ПолучитьСтруктуруПоложенийКолонок();
    ВидимостьКолонок();
    КонецЕсли;
    
    ПроцентСкидкиНаценки = ТипЦен.ПроцентСкидкиНаценки;
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ДокументОснование", ДокументПоступление);
    
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    Док.СуммаВключаетНДС КАК СуммаВключаетНДС,
    |    Док.ВалютаДокумента КАК ВалютаДокумента,
    |    Док.Контрагент КАК Контрагент,
    |    Док.ТипЦен.ТипЦеныНоменклатуры КАК ТипЦен,
    |    Док.ТипЦен.ТипЦеныНоменклатуры.Код КАК КодТипаЦен,
    |    Док.Товары.(
    |        Номенклатура,
    |        ХарактеристикаНоменклатуры,
    |        Цена,
    |        ЕдиницаИзмерения,
    |        СтавкаНДС,
    |        СУММА(НомерСтроки) // для того, чтобы работала группировка
    |    )
    |ИЗ
    |    Документ.ПоступлениеТоваровУслуг КАК Док
    |ГДЕ
    |    Док.Ссылка = &ДокументОснование
    |СГРУППИРОВАТЬ ПО
    |    Док.Товары.(Номенклатура,
    |    ХарактеристикаНоменклатуры,
    |    Цена,
    |    ЕдиницаИзмерения,
    |    СтавкаНДС)
    |";
    
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    
    Контрагент = Шапка.Контрагент; // чтобы точно был правильный контрагент
    
    СтруктураОтбора = Новый Структура;
    НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен[Шапка.ТипЦен];
    
    Выборка = Шапка.Товары.Выбрать();
    Пока Выборка.Следующий() Цикл
    Если НЕ ЗначениеЗаполнено(Выборка.Номенклатура) Тогда
    Продолжить;
    КонецЕсли;
    
    СтруктураОтбора.Вставить("Номенклатура"              , Выборка.Номенклатура);
    СтруктураОтбора.Вставить("ХарактеристикаНоменклатуры", Выборка.ХарактеристикаНоменклатуры);
    
    СтрокаТабличнойЧасти = ОбработкаТабличныхЧастей.НайтиСтрокуТабЧасти(ТаблицаЦен, СтруктураОтбора);
    
    Если СтрокаТабличнойЧасти = Неопределено Тогда
    СтрокаТабличнойЧасти = ТаблицаЦен.Добавить();
    СтрокаТабличнойЧасти.Номенклатура               = Выборка.Номенклатура;
    СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Выборка.ХарактеристикаНоменклатуры;
    КонецЕсли;
    
    Цена = Ценообразование.ПересчитатьЦенуПриИзмененииФлаговНалогов(Выборка.Цена,
    Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатурыКонтрагентов,
    Шапка.СуммаВключаетНДС,
    Шапка.ТипЦен.ЦенаВключаетНДС,
    Шапка.ТипЦен.ЦенаВключаетНДС,
    Ценообразование.ПолучитьСтавкуНДС(Выборка.СтавкаНДС));
    
    СтрокаТабличнойЧасти["цена" + НомерСоответствияТекущейКолонки]    = Цена;
    СтрокаТабличнойЧасти["валюта" + НомерСоответствияТекущейКолонки]  = Шапка.ВалютаДокумента;
    СтрокаТабличнойЧасти["единица" + НомерСоответствияТекущейКолонки] = Выборка.ЕдиницаИзмерения;
    СтрокаТабличнойЧасти["процент" + НомерСоответствияТекущейКолонки] = ПроцентСкидкиНаценки;
    КонецЦикла;
    
    КонецПроцедуры // ЗаполнитьТабличнуюЧастьПоПоступлению()
    
    
    
  4. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Извиняюсь - долго был в командировке.
    Попробуйте в запросе самом такой текст:
    Код:
    ВЫБРАТЬ
    Док.СуммаВключаетНДС КАК СуммаВключаетНДС,
    Док.ВалютаДокумента КАК ВалютаДокумента,
    Док.Контрагент КАК Контрагент,
    Док.ТипЦен.ТипЦеныНоменклатуры КАК ТипЦен,
    Док.ТипЦен.ТипЦеныНоменклатуры.Код КАК КодТипаЦен,
    Док.Товары.(
    Номенклатура,
    ХарактеристикаНоменклатуры,
    Цена,
    ЕдиницаИзмерения,
    СтавкаНДС,
    СУММА(НомерСтроки),
    НомерСтроки КАК НомерСтрокиДляУпорядочивания
    )
    ИЗ
    Документ.ПоступлениеТоваровУслуг КАК Док
    ГДЕ
    Док.Ссылка = &ДокументОснование
    
    СГРУППИРОВАТЬ ПО
    Док.Товары.(Номенклатура,
    ХарактеристикаНоменклатуры,
    Цена,
    ЕдиницаИзмерения,
    СтавкаНДС,
    НомерСтроки)
    
    УПОРЯДОЧИТЬ ПО
    НомерСтрокиДляУпорядочивания
    
    
    
    Я добавил еще раз выбор Номера строки - назвал его НомерСтроки для упорядочивания и по нему сделал сортировку. Должно сработать, но гарантировать, к сожалению, не могу.
  5. TopicStarter Overlay
    Nik_Nik
    Offline

    Nik_Nik Опытный в 1С

    Регистрация:
    24 дек 2008
    Сообщения:
    61
    Симпатии:
    1
    Баллы:
    26
    Получилось только я наверно ошибочно не ту процедуру выложил. Надо не в ЗаполнитьТабличнуюЧастьПоПоступлению(ДокументПоступление, ЧиститьТипыЦен = Истина) Экспорт
    а в процедуре ЗаполнитьТабличнуюЧастьПоПоступлениюНаОсновании (ДокументПоступление,Перезаполнение=Ложь). На основание Ваших кодов сделал там не много подизменил и заработало!!! Ура! Спасибо!
  6. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Пожалуйста. Удачи в дальнейших изысканиях.

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