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

Хранилище

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

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



> Работа с табличной частью , Нужно пересчитать все цены в строке товары,услуги          
roman457 Подменю пользователя
сообщение 27.02.15, 4:53
Сообщение #1

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

Здравствуйте я сталкивался когда с такой задачей но как оказалось запамятовал , прошу помощи в направлении куда копать
чтобы не городить огород .
Конфигурация бух для украины 8,2
Задача стоит такая .
Чтобы не тратит время на ввод содержания склада ( ПТУ -вводят на основании РТУ )
В системе учёт ведётся по разным валютам и когда заполнили таблицы товаров услуг
Нужно пересчитать строки. (цену,сумму)
В самой конфигурации есть процедура
 ТоварыНоменклатураПриИзменении(Элемент)

И вродебы всё хорошо , но она срабатывает на текущие данные . ( то что выделено на форме строка )
Как заставить её в цикле све строки пересчитать ?
Или нужно всё описывать ручками ?
Спасибо .

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

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

У меня есть какая-то древняя бухгалтерия под рукой. На примере её можно сделать так:

Для Каждого СтрокаТЧ ИЗ Товары Цикл
    ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(СтрокаТЧ, ЭтотОбъект);

    ЗаполнитьСчетаУчетаВСтрокеТабЧасти(СтрокаТЧ, "Товары", Истина, Истина);
    ПриИзмененииНоменклатурыТоваров(СтрокаТЧ);

    // Рассчитываем реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТЧ, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТЧ, ЭтотОбъект);
КонецЦикла;

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

logist Подменю пользователя
сообщение 27.02.15, 8:53
Сообщение #3

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

Цитата(roman457 @ 27.02.15, 4:53) *
Как заставить её в цикле све строки пересчитать ?

Ее не надо заставлять, лучше написать отдельную процедуру где имеющийся код загнать в цикл.

Цитата(Vofka @ 27.02.15, 8:48) *
У меня есть какая-то древняя бухгалтерия под рукой.

Наверное очень древняя, в текущей больше строк))


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

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

roman457 Подменю пользователя
сообщение 27.02.15, 22:57
Сообщение #4

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

Цитата(Vofka @ 27.02.15, 8:48) *
У меня есть какая-то древняя бухгалтерия под рукой. На примере её можно сделать так:

Для Каждого СтрокаТЧ ИЗ Товары Цикл
    ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(СтрокаТЧ, ЭтотОбъект);

    ЗаполнитьСчетаУчетаВСтрокеТабЧасти(СтрокаТЧ, "Товары", Истина, Истина);
    ПриИзмененииНоменклатурыТоваров(СтрокаТЧ);

    // Рассчитываем реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТЧ, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТЧ, ЭтотОбъект);
КонецЦикла;

Спасибо что откликнулись ваше направление оказалось полезным .
код не заработал по причине умного кода от разработчиков стандартных конфигураций , это не упрёк а констатация факта .
Для Каждого СтрокаТЧ ИЗ Товары Цикл
            //*********************************************
          //СтрокаТЧ = ЭлементыФормы.Товары.ТекущиеДанные;  *-* Эта строка нам портила весь цикл
    
    // Выполнить общие действия для всех документов при изменении номенклатуры.
    ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(СтрокаТЧ, ЭтотОбъект);

    // Заполняем реквизиты табличной части.
    ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТЧ, ЭтотОбъект);

    СтруктураШапкиДокумента = Новый Структура("Контрагент, ТипЦен, ДоговорКонтрагента, ДатаДокумента, ВалютаДокумента, УчитыватьНДС, СуммаВключаетНДС",
                                               Контрагент, ТипЦен, ДоговорКонтрагента, Дата,          ВалютаДокумента, УчитыватьНДС, СуммаВключаетНДС);

    ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПокупкиТабЧасти(СтрокаТЧ, ЭтотОбъект, СтруктураШапкиДокумента, мВалютаРегламентированногоУчета);

    // Рассчитываем реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТЧ, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТЧ, ЭтотОбъект);

    ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(СтрокаТЧ, "Товары", Истина, Истина);

    Если (НЕ Склад.ВидСклада = Перечисления.ВидыСкладов.Оптовый)
         И мУчетВПродажныхЦенах
         И (ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия)
         И (НЕ ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомитентом) Тогда
        
        СтрокаТЧ.ЦенаВРознице = Ценообразование.ПолучитьЦенуНоменклатуры(СтрокаТЧ.Номенклатура, Склад.ТипЦенРозничнойТорговли,
                                                        Дата, мВалютаРегламентированногоУчета, 1, 1);
        СтрокаТЧ.СуммаВРознице = СтрокаТЧ.Количество * СтрокаТЧ.ЦенаВРознице;
        Если (Склад.ВидСклада = Перечисления.ВидыСкладов.НеавтоматизированнаяТорговаяТочка) и (мРазделятьПоСтавкамНДС) Тогда
            СчетаУчета = БухгалтерскийУчет.ПолучитьСчетаУчетаНоменклатуры(Организация, СтрокаТЧ.Номенклатура, Склад);
            Если ЗначениеЗаполнено(СтрокаТЧ.Номенклатура) Тогда
                СтрокаТЧ.СтавкаНДСВРознице = СтрокаТЧ.Номенклатура.СтавкаНДС;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
//************************************************
    // Рассчитываем реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТЧ, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТЧ, ЭтотОбъект);
    
КонецЦикла;

для того чтобы пользователь не испытывал какие-то сложности и не ловил ошибки при измененнии номенклататуры пришлось основной код позаимствовать с процедуры при изменении номенклатуры.... получилось именно так .
Дальше решил не разбираться расчётах сумм и Ндс думаю что процедуры проходят два круга , но скорость обработки меня удовлетворяет вполне .
Может кому-то это пригодится и кто-то просто с экономит время . всем спасибо от меня .

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


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

 

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