Имя: Пароль:
1C
1С v8
БП2 - есть возможность пересчитать ТЧ документа...?
0 Злопчинский
 
19.01.18
21:33
Документ "Отражение начисления НДС", введенный на основании нулевой реализации (в которой указаны количество, цена, ставка НДС, суммы - не указаны) - док "Отражение начисления НДС" - заполнился количество и цена, ставка НДС - есть ли какой-то инструмент чтобы пересчитать ТЧ чтобы автоматом посчитались сумма и сумма НДС...?

Спсб.
1 Мимохожий Однако
 
19.01.18
21:36
В общем модуле пересчета табличных частей можно поискать подобные процедуры
2 Злопчинский
 
19.01.18
21:49
(1) нет. пользовательски. типа как в 77 - изменить спецификацию - изменить - количество - на... передернул +-1 посчиталось (или наценку 0%)
3 Злопчинский
 
19.01.18
21:51
.. или может каким-то другим хитрым способом в БП2?
4 Злопчинский
 
19.01.18
21:57
наверное, вот эта подойдет...
http://catalog.mista.ru/public/83071/
5 Злопчинский
 
19.01.18
22:06
еще упоминается  "...типовую "Обработку табличной части Товары" - это что за штука, что желает?
6 Злопчинский
 
19.01.18
22:07
или может можно сделать такое (нашел упоминание типовой) "групповая обработка справочников и документов"
7 Злопчинский
 
19.01.18
22:38
Взял пару обработко с Инфостарта.. посмотрим завтра...
8 Михаил Козлов
 
19.01.18
23:58
Можно УниверсальныйПодборИОбработкаОбъектов с произвольным алгоритмом.
Но сам код пересчета написать нужно (цикл по строкам ТЧ с вызовом процедуры общего модуля см. (1)).
9 Злопчинский
 
20.01.18
15:05
(8) ни, я - пользователь...
10 nordbox
 
20.01.18
15:17
Не знаю как в БП 2,но вот если посмотреть УТ 10.3 моно в доках увидеть кнопочку Именить, допилить туда немного кода и будет счасть
11 Злопчинский
 
20.01.18
15:23
(10) все что связано с кодом - нафиг. максимум осилю как нибудь штатно подключить внешние обработки или использовать штатное чтонить
12 Мимохожий Однако
 
20.01.18
15:36
Например,
Процедура Инициализировать(Объект,ИмяТабличнойЧасти,ТабличноеПолеОбъекта)Экспорт
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТЧ.Номенклатура,
        |    ТЧ.Счет,
        |    СУММА(ТЧ.Количество) КАК Количество,
        |    СУММА(ЕСТЬNULL(Остатки.КоличествоОстаток, 0)) КАК КоличествоОстаток,
        |    ТЧ.Ссылка
        |ИЗ
        |    (ВЫБРАТЬ
        |        ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
        |        ТребованиеНакладнаяМатериалы.Счет КАК Счет,
        |        СУММА(ТребованиеНакладнаяМатериалы.Количество) КАК Количество,
        |        ТребованиеНакладнаяМатериалы.Ссылка КАК Ссылка
        |    ИЗ
        |        Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
        |    
        |    СГРУППИРОВАТЬ ПО
        |        ТребованиеНакладнаяМатериалы.Номенклатура,
        |        ТребованиеНакладнаяМатериалы.Счет,
        |        ТребованиеНакладнаяМатериалы.Ссылка) КАК ТЧ
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&МоментВремени, , , ) КАК Остатки
        |        ПО ТЧ.Номенклатура = Остатки.Субконто1
        |            И ТЧ.Счет = Остатки.Счет
        |ГДЕ
        |    ТЧ.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    ТЧ.Номенклатура,
        |    ТЧ.Счет,
        |    ТЧ.Ссылка";

    Запрос.УстановитьПараметр("МоментВремени", Объект.МоментВремени());
    Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);

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

    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    ОчиститьСообщения();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        //Сообщить(""+ВыборкаДетальныеЗаписи.Номенклатура+" "+ВыборкаДетальныеЗаписи.Количество
        //+" "+ВыборкаДетальныеЗаписи.Счет+" Остаток:"+ВыборкаДетальныеЗаписи.КоличествоОстаток);
        Если  ВыборкаДетальныеЗаписи.Количество > ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
            НайденнаяСтрока = Объект[ИмяТабличнойЧасти].Найти(ВыборкаДетальныеЗаписи.Номенклатура, "Номенклатура");    
            Если НайденнаяСтрока = Неопределено Тогда
            Иначе
                Если ВыборкаДетальныеЗаписи.КоличествоОстаток > 0 Тогда
                    НайденнаяСтрока.Количество = ВыборкаДетальныеЗаписи.КоличествоОстаток;
                    Сообщить("Скорректирована номенклатура: "+ ВыборкаДетальныеЗаписи.Номенклатура+" "+ВыборкаДетальныеЗаписи.Количество+ " стало "+ВыборкаДетальныеЗаписи.КоличествоОстаток);
                Иначе
                    Объект[ИмяТабличнойЧасти].Удалить(НайденнаяСтрока.НомерСтроки-1);
                    Сообщить("Удалена номенклатура из-за нехватки: "+ ВыборкаДетальныеЗаписи.Номенклатура+" "+ВыборкаДетальныеЗаписи.Количество);
                КонецЕсли;
            
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры // Инициализировать(Объект,ИмяТабличнойЧасти,ТабличноеПолеОбъекта)()
/////////////
В макете Параметры_Авторегистрации
Документы.ТребованиеНакладная    Материалы
//
И делай что хочешь в обработке для обработки табличных частей
13 Злопчинский
 
20.01.18
16:07
(12) 1. я тебя затрахаю кучей вопросов куда это вставлять икакие кнопочки жать и прочее ламерское
2. НайденнаяСтрока.Количество = Чтото
- а где пересчет по строке при изменении количества?
14 Мимохожий Однако
 
20.01.18
16:37
Лучше почитай https://its.1c.ru/db/metod8dev#content:4259:hdoc:_top:подключение%20внешних%20обработок
Добавь для удобства отладки форму
с реквизитом СсылкаДок и добавь в нее команду с вызовом процедуры Инициализировать()
Всё, что внутри этой процедуры дело твоих рук и фантации
15 Мимохожий Однако
 
20.01.18
16:37
*фантазии
16 Злопчинский
 
20.01.18
18:45
ну вроде первая из найденных более-менее, единсвенное не получилось заставить ее пересчитывать строку при изменениях, но тут пока некритично
17 Злопчинский
 
21.01.18
18:05
Доков много оказалось.
Муторно.
Можно ли воспользоваться ИИнстументамиРазработчика? Но без программирования всяких запросов консолей и выборок?
Отобрать перечень документов - на крайняк даже вручную, далее указать что для э ого перечня обработать ТЧ Товары и в них тупо заполнить конкретными значениями реквизитов нужные  колонки?
18 Злопчинский
 
21.01.18
20:12
У.. Млин... Ни одного специалиста...
19 Михаил Козлов
 
22.01.18
14:59
(18) Для ОФ я часто пользовался как написано в (8). Чтобы не плодить обработки.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн