Имя: Пароль:
1C
 
Групповое изменение цифровой информации в табличных частях
0 Irkutsk
 
27.07.23
07:27
Мне надо массово поправить табличные части документов в плане цифровой информации (где одно, где другое).

Вот я построил модель. Перед нами Бухгалтерия предприятия.


&НаСервере
Процедура Команда1НаСервере()
    
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |    РеализацияТоваровУслугУслуги.Ссылка КАК Ссылка
        |ИЗ
        |    Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
        |
        |УПОРЯДОЧИТЬ ПО
        |    РеализацияТоваровУслугУслуги.Ссылка.Дата УБЫВ";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
        
        Док = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
        
        СтрТЧ = Док.Услуги[0];
        СтрТЧ.Количество = 2000;
        Док.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
        ОбщегоНазначения.СообщитьПользователю(Док.ПроверитьЗаполнение());
        
        
    КонецЦикла;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
    Команда1НаСервере();
КонецПроцедуры


Я программно меняю количество. Но есть проблема: в строках сумма не меняется. Т.е. открываешь документ, а там стоит новое количество, но по строкам суммы не пересчитаны. Вывод: код опасен. Сумму я заметил. Но возможно, есть еще что-то, чего я не заметил.

Отсюда вопрос: как правильно менять цифровую информацию в табличных частях документов? Может быть, надо какой-то стандартной обработкой с ИТС это делать или еще что.

Был бы признателен за совет.
1 Гипервизор
 
27.07.23
07:42
(0) Т.е. вы меняете количество, а 1С такая-сякая только количество и меняет, а суммы сама не догадалась? Надо же, какой опасный код..
2 2S
 
27.07.23
07:57
(0) если бы сам писал код, логику бы понял, вывод - код содран или написан ИИ
подсказка - в форме документа у поля количество есть обработчик "ПриИзменении"
3 Irkutsk
 
27.07.23
08:07
Не поможет тут ПриИзменении. Во-первых, в типовой это событие уже обработано. А во-вторых, количество менялось программно.
4 Мультук
 
27.07.23
08:08
(0)



1) Изучаем код типовой 1С. Разбираемся -- а что там срабатывает при изменении в колонке "Количество" ?
-- Срабатывает на &НаКлиенте, а нужно переделать &НаСервере
2) Делаем две одинаковые "подопытные" реализации. В одной меняем руками, в другой своим кодом. Потом сравниваем
3) Сравнение. Можно писать запросы в консоле запросов. Есть обработки (infostart), который показывают объект полностью, все его реквизиты и табличные части.
4) Смотрим на проводки. Движения.

P.S.
Если будете менять номенклатуру, то нужно будет перезаполнить счета учета, цену, ставку НДС
Если будете менять контрагента, то {еще всякое}

"в плане цифровой информации", "Вот я построил модель" -- не нужно пытаться говорить умными словами.

А то такое чувство, что перед нами попаданец-программист из 60-70х, который сел за 1С
5 Aleksey
 
27.07.23
08:09
кстати код не рабочий
(меняет только первую строку у первого документа. и это при том что у этого документа вообще может и не быть строк)
6 НафНаф
 
27.07.23
08:19
(1) ну вообще-то да, если бы 1С реализовала свойства и/или скрыла поля объектов, прописав логику при изменении данных объекта (а не только формы) - все бы и взлетело. Надеюсь такое будет в 9.х
7 Гипервизор
 
27.07.23
08:31
(6) Не понял, а если надо будет поменять только количество?
8 Aleksey
 
27.07.23
08:35
(7) ну тогда по классики
если ОбменДанными.Загрузка тогда
возврат;
КонецЕсли;
9 НафНаф
 
27.07.23
08:41
(7) если надо менять ТОЛЬКО количество, то у вас перестает работать ИНВАРИАНТ (или ему подобный): Цена = Окр(Сумма/Количество,2) - а это уже беда
10 mikecool
 
27.07.23
08:43
ничего, ИИ быстро учится, скоро все будем улицы мести )
11 Галахад
 
27.07.23
09:39
Хм. Цифровая информация, модель... Приятно обогатить свой словарный запас.
12 stix2010
 
27.07.23
09:44
(11) сейчас все кому не лень в кодеры идут, конструкторами попользуются, книжек разных начитаются, а потом излучают поток сознания.
13 shuhard
 
27.07.23
09:44
(0)[Вот я построил модель. Перед нами Бухгалтерия предприятия.] отличный зачин и вдруг вместо трансформации ансамбля - дешёвка [Групповое изменение]
за это из БА гонят сразу и навсегда
Программист всегда исправляет последнюю ошибку.