Имя: Пароль:
1C
1С v8
При проведении заполнить форму док-та. Возможно?
, ,
0 LyKa
 
22.06.12
10:41
Сразу скажу я не писатель, а только консультант.
1С Бухгалтерия 8
Документ "Перемещение товаров". Табличная часть "Товары". По умолчанию в табчасть заносятся только: номенклатура и кол-во. При проведении для каждой номенклатуры рассчитывается средняя цена и сумма и попадает она только в регистр и в печатную форму документа.
Вопрос. Реально ли, при проведении, записывать суммы по каждой номенклатуре в табчасть док-та(реквизит добавлен). Большой это геморрой или как?
1 Ненавижу 1С
 
гуру
22.06.12
10:42
(0) а зачем?
2 LyKa
 
22.06.12
10:42
Мне нннн-надо)))
3 Maxus43
 
22.06.12
10:44
>>и попадает она только в регистр
ну правильней при открытии формы смотреть в регистр и подставлять в ТЧ, но не реквизиты, а просто поля числовые, чтоб не было модифицированности и т.д.
Пример док кадровое перемещение, там старая должность просто отображается
4 Жан Пердежон
 
22.06.12
10:44
(2) и что мешает тебе это сделать?
5 Maxus43
 
22.06.12
10:45
в обработке проведения делать изменение реквизитов, причем писать ЭтотОбъект.записать() Имхо криво
6 LyKa
 
22.06.12
10:46
(3) не не не просто отображение не подходит
(4) видать мозги...
7 Maxus43
 
22.06.12
10:46
(6) почему не подходит?
8 LyKa
 
22.06.12
10:47
(5) вот примерно этого я и ждал...
9 LyKa
 
22.06.12
10:49
(7) мне нужен реквизит табчасти...
(4) мозги и жадность...
10 Maxus43
 
22.06.12
10:49
(8) 1с конечно от этого не умрёт, проглотит. но... не по христиански это
11 LyKa
 
22.06.12
10:50
(10) я атеист)))
12 Maxus43
 
22.06.12
10:52
ну делай, у нас в конфе такое есть, от особо одарённых франчей. работает
13 unregistered
 
22.06.12
11:11
Можно сделать так:

Расчет этих самых полей и их заполнение вынести в отдельную процедуру.
Эту процедуру выполнять ПередЗаписью при условиях:

Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
  Если ЭтоНовый() Тогда
    Записать(РежимЗаписиДокумента.Запись); // чтобы была ссылка на регистратор для набора записей
  КонецЕсли;
  РассчитатьИЗаполнитьНужныеПоляВТЧ();
КонецЕсли;

В процедуре РассчитатьИЗаполнитьНужныеПоляВТЧ() выполнить тот же алгоритм, что и в стандартном проведении, получив таким образом наборы записей по нужным регистрам. Из полученных наборов записей заполнить табличную часть документа. Наборы записей можно либо оставить, либо очистить.

Стандартный алгоритм проведения убрать. При проведении брать все данные для проведения уже из табличной части (ведь мы их уже рассчитали и заполнили), а не рассчитывать повторно. Если на предыдущем шаге или еще где-либо принудительно наборы записей не очищали, то можно вообще ни чего не делать, т.к. наборы записей остались после обработки ПередЗаписью().
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс