Имя: Пароль:
1C
1С v8
Вопросы по проведению документа и влиянию транзакции на регистр
0 vitaliklibra
 
28.05.15
07:51
Доброе утро всем!

Вопрос 1:
Если документ уже проведен, то если по его нажатию происходит его проведение с запросом о режиме проведения. В то же время, если документ не проведен, по нажатию "Записать" он действительно только записывает. Как это исправить?

Вопрос 2:
В том же документе, по нажатию кнопки "ОК" происходит оперативное проведение без запроса вариантов! А если я перепровожу документ (в настройках движения стоит вариант "Удалять автоматически") - мне нужно (даже ВАЖНО!) оставить дату и время предыдущего проведения!!! Было бы правильнее ссылаться на то, если бы этот документ уже проводился, то проводить неоперативно, а если проводится впервые, то оперативно. Как это настроить?

Вопрос 3:
Опишу ситуацию. Это пример того, как реализованы банковские выписки в 7-ке. У меня есть такой же документ, где в табличной части построчно вписаны мои платежи с соответствующим видом ДДС. Так вот. Существует ли возможность при проведении учитывать движение по регистру после обработки каждой такой строки? В том смысле, что если у меня есть приход по какому-то измерению по одной строке, и если у меня будет еще такая строка с таким же измерением, но только расход, чтобы произошёл сразу взаимозачет. Поясню на своем примере:

В регистре у меня есть 2 ресурса: "НашДолг" и "ДолгКонтрагента".

В зависимости от того какая операция, я сначала должен списать один долг, а потом начислить другой. Для запроса данных по долгам в цикле делаю запрос для каждой строки (УЖ ПРОСТИТЕ, ЧТО ЗАПРОС В ЦИКЛЕ - если кто подскажет, как обойтись здесь без него - буду очень признателен!):


ВЫБРАТЬ
    ЕСТЬNULL(СУММА(ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстатки.НашДолгОстаток, 0)), 0) КАК НашДолгОстаток,
    ЕСТЬNULL(СУММА(ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстатки.ДолгКонтрагентаОстаток, 0)), 0) КАК ДолгКонтрагентаОстаток
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки КАК ВзаиморасчетыСКонтрагентамиОстатки
ГДЕ
    ВзаиморасчетыСКонтрагентамиОстатки.Контрагент.Ссылка = &Контрагент


Но пока транзакция не пройдет по конца ТЧ документа, у меня запрос не видит никаких остатков, хотя они там реально появляются!( Должна картина быть примерно такой (это условно):

        Приход/Расход        НашДолг        ДолгКонтрагента
Контрагент1        Приход 50         + 50               0
Контрагент1        Расход 70         - 50                0
                       0             + 20
Контрагент1        Приход 50           0             - 20
                     + 30                0
------------------------------------------------------------------------
Остаток                          30

При этом у меня есть 3 платежа (3 строки):
- Платеж входящий на сумму 50;
- Платеж исходящий на сумму 70;
- Платеж входящий на сумму 50.

Очень прошу помощи!!! Запарился с этими проведениями... =( Только прошу, ребят, не пишите, мол делай по примеру, как в типовой конфе, да еще и в 7-ке! Я до этого и сам как-то догадался, да только помощи прошу сейчас, ссылаясь на опыт участников форума!
1 vitaliklibra
 
28.05.15
08:08
(0)  Вопрос 1 снят. Разобрался: есть флаг в свойствах формы "ПриЗаписиПерепроводить".
2 vitaliklibra
 
28.05.15
08:11
+ (0)  Столкнулся еще с такой штукой, что если в модуле объекта менял программно видимость/доступность каких-то элементов формы, то при перепроведении таких документов из открытого документа все ОК, а если выбрать через контекстное меню в форме списке команду "Провести" или через групповое перепроведении - НЕ перепроводит. Говорит, ошибка(( Как еще и это поправить?
3 Ненавижу 1С
 
гуру
28.05.15
08:12
"модуле объекта менял программно видимость/доступность каких-то элементов формы"

модуль объекта не должен знать ни о каких формах
4 vitaliklibra
 
28.05.15
08:15
(3) А как мне тогда лучше сделать такое, чтоб у меня кнопки становились доступны, если документ проводится?
5 vitaliklibra
 
28.05.15
08:24
(0) Вопрос 2 тоже снят: если также флаг на форме "ИспользоватьРежимПроведения". Установил в значение "Неоперативный" - работает как и надо.
6 Ненавижу 1С
 
гуру
28.05.15
08:55
(4) в модуле формы
7 vitaliklibra
 
28.05.15
08:57
(6) А в каком событии описать изменение доступности реквизитов формы?
8 vitaliklibra
 
28.05.15
09:32
Ребят! Очень нужна помощь! Есть ли возможность разделить транзакции при обработке проведения, чтоб при каждой итерации запрашивать корректные данные из регистра? (к слову о 3-й вопросе?) Если да, то где можно почитать?
9 Zhuravlik
 
28.05.15
09:36
(8) гугли на тему управляемых блокировок
10 Zhuravlik
 
28.05.15
09:38
+ как по мне - вот лучшая статья для введения в эту тему: http://курсы-по-1с.рф/articles/статья-платформа-блокировки/
11 Cyberhawk
 
28.05.15
09:41
"разделить транзакции при обработке проведения, чтоб при каждой итерации запрашивать корректные данные из регистра"
Деать проводки, которые опираются на часть уже сделанных этим же документом проводок - не айс
12 vitaliklibra
 
28.05.15
09:46
(11) А как тогда быть, когда нужно учитывать остатки по регистру после каждой новой записи в него?
13 Джинн
 
28.05.15
09:52
(12) Изменить алгоритм с кривого на нормальный.
14 Zhuravlik
 
28.05.15
09:52
(12) Какой-то действительно странный подход. Вроде как в руках все карты - можно сделать проверку. Добавляемые данные в таблицу, свернуть по измерениям/ресурсам, сделать проверку по остаткам. Промежуточная запись в регистры при проведении - насколько я знаю - используется в двух случаях: когда необходимо проверить оперативный остаток (10), и когда необходимо делать движения по регистрам расчета. А вот на (0) смотрю - и не пойму зачем там такие сложности. По-идее нужно (10) реализовывать.
15 palpetrovich
 
28.05.15
09:56
(8) ЗАЧЕМ "запрашивать корректные данные из регистра"?!! ...это что, при проведении по партиям, к примуру, после каждой строчки состояние регистра перечитывать???
сначала расчитывай все что нужно, потом проводи
16 vitaliklibra
 
28.05.15
10:00
(13) Если бы я знал, каков он нормальный или как его таковым сделать, поверь, я бы тему не создавал.

(15) Рассчитать все, что нужно не подходит, т.к. мне нужно будет видеть в отчете отдельные записи: какие суммы и куда вносились. А если все рассчитать сразу, то детализации не получится.
17 vitaliklibra
 
28.05.15
10:07
(14) Вот мне как раз и нужно проверить оперативный остаток!) Вот только о нем я в статье ничего не нашел... А блокировка данных при транзакции не блокирует отдельные итерации внутри транзакции, потому у меня все равно все будет рассчитываться последовательно без учета того, что уже было внесено в регистр.
18 Zhuravlik
 
28.05.15
10:14
(17) мне кажется у тебя с мат. часть. проблемы.  А статья - сплошь сверху-донизу именно о оперативном остатке, причем на пальцах. Отработай статью. Или формализуй проблему в (0) - потому что я до сих пор не понял в чем сложность?
19 vitaliklibra
 
28.05.15
10:23
(18) Проблемы, спорить не буду! Вот и сижу-разбираюсь.

Поясню еще раз.

Есть ОДИН документ, в котором есть 3 строки в ТЧ, отражающие внесение суммы в регистр:
- Платеж входящий на сумму 50;
- Платеж исходящий на сумму 70;
- Платеж входящий на сумму 50.

При проведении документа мне нужно выполнять движения по регистру, согласно этим цифрам и измерениям, но делать это так, будто эти строки в ТЧ - это отдельные документы оплат.

И мне нужно это в регистр записать вот так:
http://i.piccy.info/i9/d6693437cb4ac93573f3f539f8624de4/1432793365/12274/913097/2015_05_28_090910.jpg
т.е. чтобы была детализация в отчете по каждой такой строке. Согласен, похоже на партионное списание, но в воем случае получается, что 2 ресурса - "НашДолг" и "ДолгПокупателя" - они связаны! И если на одном будет > 0, то на втором будет 0. А если начать прибавлять на 2-й ресурс, что сначала уменьшить первый до 0, а только после этого увеличивать 2-й.
20 Zhuravlik
 
28.05.15
10:29
(19) Как я и думал - проблемы с мат. часть. Структура регистра: измерения - Организация/Контрагент, ресурс - Сумма. Запись движений, контроль остатков по статье в (10). Дальше - написание соотв. отчета.
-
Посмотри в типовых РН "РасчетыСПокупателями", и подобный отчет.
21 Zhuravlik
 
28.05.15
10:31
+ Если надо расшифровывать до строки табл. части - просто не сворачивай перед проведением набор данных, тогда в таблице оборотов и будет эта детализация, ее можно из РН в отчете вытащить.
22 vitaliklibra
 
28.05.15
10:32
(21) "просто не сворачивай перед проведением набор данных" - как это сделать?

(20) Регистр у меня очень похож на типовый, но ресурса ДВА! И из-за этого-то вся сложность.
23 Zhuravlik
 
28.05.15
10:34
(22)
не сворачивать?..
-
ресурс - один. В отчете - два показателя.
24 vitaliklibra
 
28.05.15
10:38
(23) Ты у себя же спрашиваешь?) Не пойму, что ты хотел сказать словами "не сворачивать?.. -"

"ресурс - один. В отчете - два показателя." Т.е. просто накапливать в минус сумму взаиморасчетов, и разделение крЕдита/обязательств будет определять знак. Так?
25 Cyberhawk
 
28.05.15
10:38
(12) имея остатки по регистру + данные в документе, ты еще до начала проведения можешь все спрогнозировать (посчитать и получить)
26 vitaliklibra
 
28.05.15
10:41
(25) Согласен, могу. См. (16)  - не подходит этот вариант.