Имя: Пароль:
1C
 
v8: Добавление измерения в регистр
0 John Mass
 
25.09.10
21:36
добрый вечер. подскажите пожалуйста, в каких процедурах документа присходит запись в регистр накопления ( в частности добавил измерение Склад в Регистр Накопления Продажи, теперь нужно где-то в модулях или модулях форм РТиУ и ВозвратТоваровОтПокупателя прописать заполнение склада). Написал вопрос, решил проверить на новом документе, поле Склад само заполнилось. Это конечно классно, но скажите пожалуйста, больше ничего нигде не надо дописывать, чтобы корректно происходило заполнение данного измерения?
1 NcSteel
 
25.09.10
21:37
ОбработкаПроведения
2 John Mass
 
25.09.10
21:48
(1) посмотрел:
       ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам, ТаблицаПоТаре,
                           ТаблицаПоУслугам, ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, Отказ, Заголовок);

мне видимо нужна ТаблицаПоТоварам, просмотрел процедуры в модуле, где есть эта переменная, но там вроде ничего не нужно дописывать.. может я не прав? ткните тогда носом. нужно чтоб просто был склад в регистре, без дописаний он заполняется верно из обоих документов
3 John Mass
 
25.09.10
21:54
(0) посмотрел сейчас как тему назвал и пошел биться головой об стену..((
Добавление измерения в регистр.
4 Dmitrii
 
гуру
25.09.10
22:25
(0) При внесении изменений в регистр накопления (собственно в любой регистр) необходимо:
1. Продумать все детали механизма (кто будет делать движения в "+", а кто в "-").
2. Внести изменения в регистр
3. Прописать движения по этому регистру в "+" во всех соответствующих документах.
4. Отладить написанный механизм на различных исходных данных.
5. Прописать движения в "-" во всех соответствующих документах. (только для регистров накопления с видом "Остатки").
6. Отладить написанный механизм на различных исходных данных.
7. Убедиться в корректности работы ВСЕХ программных механизмов, которые базируются на этом регистре (отчеты, обработки, проведение других довкументов, которые используют данные из измененного регистра и т.д.). Для поиска всех таких механизмов можно воспользоваться функцией "Поиск во всех текстах" с панели инструментов в конфигураторе. Искать строку с именем измененного регистра. По результатам поиска открывать все модули, где найдена искомая строка и анализировать.
5 John Mass
 
25.09.10
22:41
(4) спасибо, конечно, за подробное объяснение,но.. я не создаю новый регистр(типовая УТ), то есть все движения, как (+), так и (-) прописаны до меня, работа на всех регистраторах проверена - все работает. ответь пожалуйста, для одного нового измерения что-нибудь дописывать надо?(оно сейчас работает без дописания)
6 Dmitrii
 
гуру
25.09.10
22:46
(5) Ты читать умеешь? Где в (4) идет речь о СОЗДАНИИ регистров?

В (4) описан алгоритм действий разработчика ПРИ ВНЕСЕНИИ ИЗМЕНЕНИЙ (добавление измерений, ресурсов или реквизитов) в уже существующий регистр, у которого уже были прописаны все движения.
7 Dmitrii
 
гуру
25.09.10
22:51
Например, если речь идет о регистре накопления с видом остатки:

Предположим мы добавили измерение и внесли изменения в документ, который двигает этот регистр в "+", чтобы заполнялось добавленное нами измерение.

Если мы забудем внести такие изменения ВО ВСЕ документы, которые двигают наш регистр в "+", то получим ситуацию, когда наше измерение заполнятся будет не всегда.

Если мы забудем внести изменения ВО ВСЕ документы, которые двигают наш регистр в "-", то регистр просто перестанет закрываться по добавленному нами измерению. Причем это самая распространенная ошибка среди начинающих специалистов, когда закрытие регистра не производится вообще или производится неверно. Например, когда движения в "+" делаются по одному значению измерения, а в "-" - по другому или на различные значения ресурсов.
8 John Mass
 
25.09.10
23:04
(6) хорошо, скажи пожалуйста(что-то я совсем не догоняю), возьмем
3. Прописать движения по этому регистру в "+" во всех соответствующих документах.
Если движение сейчас прописано и я добавляю Измерение Склад, то где мне нужно это прописать? Возьмем для примера документ РеализацияТоварУслуг, модуль Процедура ОбработкаПроведения-> Процедура ДвиженияПоРегистрам(...)->Тут есть ссылки на следующие процедуры
->ДвиженияПоРегистрамУпр
->ДвиженияПоРегиструТоварыОрганизаций
->ДвиженияПоРегистрамОперативныхВзаиморасчетов
->ДвиженияПоРегиструСписанныеТовары
->ДвиженияРегистровПодсистемыНДС
(7) спасибо еще раз, что подробно объясняешь, но скажи пожалуйста, в моем случае куда и что добавить?
9 Dmitrii
 
гуру
25.09.10
23:20
(8) >> ...куда и что добавить?

Понятия не имею. :) Для это и привел полный алгоритм действий.

Могу только догадываться.

Вполне возможно, что в твоем конкретном случае больше ни чего делать и не нужно. Но для того, чтобы в этом убедиться, необходимо выполнить все действия из (4). Если речь идет о регистре накопления с видом "Обороты" (подозреваю, что это именно так), то п.п. 5 и 6 делать не нужно, а п. 3 у тебя уже сделан. Осталось проверить только исправил ли ты обработки проведения по этому регистру у ВСЕХ документов, которые его двигают. Перечень всех документов, которые являются регистратором для регистра, можно посмотреть на закладке "Регистраторы" окна свойств объекта твоего регистра.

Ну и обязательно выполнить пункт 7. А вот сколько и что конкретно необходимо будет делать в нём, целиком зависит от конкретной конфигурации и логики работы данного регистра.
10 John Mass
 
25.09.10
23:27
(9) )) вот я тож первый раз такое делаю и не знаю, как поступать. про регистраторы тож знаю, посмотрел всё, но вроде ничего не нашел, где можно добавить. да и работает все правильно, попробовал на всем.
вообщем, время покажет, как действительно правильно )
11 John Mass
 
25.09.10
23:42
Dmitrii, вопрос немного не в тему может, не приходилось случайно делать такую вещь как остатки на складах в подборе, только обороты продаж по складам?
12 John Mass
 
26.09.10
12:20
нашел в процедуре ДвиженияПоРегистрамУпр кусок
// ТОВАРЫ ПО РЕГИСТРУ Продажи.

аблицаДвижений.ЗаполнитьЗначения(ДоговорКонтрагента,"ДоговорКонтрагента");
           ТаблицаДвижений.ЗаполнитьЗначения(Контрагент , "Контрагент");
           ТаблицаДвижений.ЗаполнитьЗначения(Организация, "Организация");
           ТаблицаДвижений.ЗаполнитьЗначения(Ссылка,"ДокументПродажи");
           ТаблицаДвижений.ЗаполнитьЗначения(Подразделение,"Подразделение");
           ТаблицаДвижений.ЗаполнитьЗначения(Склад,"Склад");  // добавил созданное измерение Склад сюда,хотя на самом деле ничего не изменилось
13 John Mass
 
26.09.10
12:28
(12) аналогично добавил для ВозвратТоваровОтПокупателя
14 John Mass
 
26.09.10
12:30
(13) но здесь не прокатило:
{Документ.ВозвратТоваровОтПокупателя(1992,38)}: Переменная не определена (Склад)
           ТаблицаДвижений.ЗаполнитьЗначения(<<?>>Склад,"Склад");
15 t4z1k
 
26.09.10
12:43
потому что у документа нет документа склад. есть складордер
16 t4z1k
 
26.09.10
12:43
нет реквизита склад
17 John Mass
 
26.09.10
13:30
(16) спасиб, ступил блин, точно
18 disk-2008
 
26.09.10
14:50
(4)Еще убедиться, что тормозов не будет от добавления измерения и увеличения размеров базы запредельного.
У меня заказчики очень любят что-нибудь в регистры добавлять, так часто не учитывают эти моменты и потом очень удивляются, что произошло.
Но, это, конечно, надо смотреть конкретную базу.
19 John Mass
 
26.09.10
20:14
(18), база типовая -  ут 10.3, добавлено одно измерение всего, пока тормозов не было(за день), вот с размером надо будет при работе отслеживать, дома такого объема документов невопроизведу)
Основная теорема систематики: Новые системы плодят новые проблемы.