Имя: Пароль:
1C
1С v8
Проводки в 1С:ERP 2
,
0 happysan
 
15.01.15
12:58
Как известно проводки в 1С:ERP 2 формируются "отложенно" рег.заданием , либо вручную по кнопке "Отразить в рег.учете" в форме проводок документа.
Кто-нибудь дорабатывал, чтобы документ отражался в регл учете при проведении документа, без дополнительных действий или какие идеи есть?
1 shuhard
 
15.01.15
12:58
(0) [какие идеи есть]
возьми лобзик и запили
2 ilpar
 
15.01.15
12:59
Идеи есть у программистов. Обратись к своим.
Пилотов мало, а уж такую фигню и подавно не все делают.
3 leonidkorolev
 
15.01.15
13:23
Ради интереса посмотрел как это можно доработать, хотя у самого такой необходимости не предвидится. На первый взгляд кажется что очень просто доработать.
В обработке проведения надо добавить такой код

СтруктураРеквизиты = Новый Структура(
        "Ссылка, Дата, Организация",
        Документ,
        Дата,
        Организация);
    ОтразитьДокументВРеглУчетеСервер(СтруктураРеквизиты);

Это кусок кода из кнопки Отразить в регл. учете
4 leonidkorolev
 
15.01.15
13:56
Ради интереса допилил демку. Должно работать.

http://screencast.com/t/7lv8zc9MK6
5 Быдло замкадное
 
15.01.15
14:06
запрос вида "хочу как было раньше..." такими темпами у вас опять УПП получится
6 happysan
 
15.01.15
14:17
(3)(4)делал аналогичное, но в модуле набора записей РС "Отражение в регл.учете" в процедуре при записи, но не понравилось, что эта процедура несколько раз отрабатывает, так как при записи в серверное процедуре снова меняется статус "К отражение в рег.учете" в РС и снова инициализация идёт процедуры при записи, плюс ещё идёт перепроведение документов связанных и текущего и снова перезапись РС.
7 Vladal
 
15.01.15
14:29
(0) "как известно". Манипулируешь?
8 happysan
 
15.01.15
14:34
(7) Констатирую.
9 shuhard
 
15.01.15
14:36
(7) в таком  контексте это всего лишь вежливая преамбула
10 DailyLookingOnA Sunse
 
15.01.15
15:57
О, пионеры уже до УКЗ2 добрались.
Хорошим рашпилем можно любую конфигурацию допилить, смелости у форума при этом спрашивать не надо.
11 happysan
 
15.01.15
16:26
(4)Благодарю за пример.
12 happysan
 
15.01.15
16:40
(4)Но если снова нажать кнопку "Отразить в регл.учете" проводки немного изменятся, по понятным причинам. Скорее всего придётся в обработке проведения каждого документа прописывать.
13 leonidkorolev
 
15.01.15
16:57
(12) По каким понятным причинам? Почему по разному проводит?
14 happysan
 
15.01.15
17:10
(13)Наверное, разное состояние РС "Отражение в рег.учете" в момент проведения документа и после, так как реально на документе "Поступление и прочих активов" формируется проводка с кт 000 автоматом, а после нажатия кнопки "Обновить" и "Отразить в рег.учете" проставляется счет кт 60.01
15 leonidkorolev
 
15.01.15
17:12
(14) ОК. Понятно.
16 happysan
 
15.01.15
17:18
(15)Причём если прописывать те же самые алгоритмы непосредственно в МО в конце процедуры "Обработка проведения", то тоже формируются разные проводки.
17 Гёдза
 
15.01.15
17:37
но зачем? чтоб все опять тормозило и блокировалось?
18 happysan
 
15.01.15
17:45
(17)Полностью согласен, но руководство жаждет, этот довод я озвучил уже.
19 shuhard
 
15.01.15
18:04
(18) тебе придётся двинуть тучу Рг и время проведения документов будет не детским


с зачетом авансов проблемы будут отдельно
20 Гёдза
 
15.01.15
18:06
В ПриЗаписи запускать нужную процедуру тогда
21 Гёдза
 
15.01.15
18:06
Или в крайнем случае в форме после записи
22 vvp91
 
15.01.15
21:17
(3) В общем верная доработка, с рядом замечаний.

1. У большинства документов есть поля Ссылка, Дата и Организация, в обработчике подписки на событие можно просто написать:
РеглУчетПроведениеСервер.ОтразитьДокумент(Источник);

2. Второй параметр ВыполнитьПересчеты в методе ОтразитьДокумент лучше оставить для регламентного закрытия месяца, поскольку пересчеты могут выполнятся довольно долго и затронуть движения, не связанные с проводимым документом.

Оффлайновые расчеты, на момент разработки, двигали партии, расчеты с поставщиками с клиентами и считали себестоимость для всех данных, которые были не актуальны - в общем длительная процедура.
На практике тормознуто проводится только "первый" документ, потом все движения делают довольно быстро, поскольку объем пересчетов снят. Но могут быть тонкости.
23 happysan
 
16.01.15
15:25
(20)Спасибо!
(22) По пункту 2: второй параметр в типовой конфигурации включен, если запускать отражение с кнопки "Отразить в рег.учете". Если отключить его, то могут возникнуть проблемы с зачетом авансов?
24 vvp91
 
17.01.15
09:50
> (23) Если отключить его, то могут возникнуть проблемы с зачетом авансов?
Да, проблемы с зачетом авансов могут возникнуть.
Тут нужно понимать, что проблемы с зачетом авансов присутствуют в любом случае, если не делать зачет авансов для документа по кнопке (Зачет оплаты).

Возможно, что имеет смысл вызвать свою последовательность оффлайновых расчетов перед отражением документа в регл.учете. Например, если требуется только зачитывать авансы, то позвать методы проведения документов по расчетам с указанием аналитики учета по конкретному партнеру из документа.
25 happysan
 
17.01.15
11:44
(24)Благодарю за информацию.
26 happysan
 
21.01.15
17:39
Как и ожидалось, возникли проблемы с зачётом авансов, не формируется проводка по кт 60.2. Кто-нибудь реализовывал?
27 happysan
 
22.01.15
12:02
Значит никто...
28 shuhard
 
22.01.15
12:56
(26) тебя дважды предупредили, что будут проблемы
(27) бу га га - пилите Шура, они золотые (с)
29 vvp91
 
22.01.15
14:10
> (26) проблемы с зачётом авансов
Я же писал (24): "имеет смысл вызвать свою последовательность оффлайновых расчетов".

> (26) Кто-нибудь реализовывал?
Я реализовывал ;-)

Например, можешь сделать общую процедуру с таким содержимым:

//////////
Запрос = Новый Запрос("
|ВЫБРАТЬ
|    АналитикаПоПартнерам.КлючАналитики КАК Аналитика
|ИЗ
|    РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаПоПартнерам
|ГДЕ
|    АналитикаПоПартнерам.Организация В (&Организация)
|    И АналитикаПоПартнерам.Партнер = &Партнер
|    И АналитикаПоПартнерам.Контрагент = &Контрагент
|");
Запрос.УстановитьПараметр("Организация", Источник.Организация);
Запрос.УстановитьПараметр("Партнер", Источник.Партнер);
Запрос.УстановитьПараметр("Контрагент", Источник.Контрагент);
Выгрузка = Запрос.Выполнить().Выгрузить();
АналитикиПартнера = Выгрузка.ВыгрузитьКолонку("Аналитика");

ВзаиморасчетыСервер.ВыполнитьПроведениеДокументовПоРасчетамСПоставщиками(АналитикиПартнера);
ВзаиморасчетыСервер.ВыполнитьПроведениеДокументовПоРасчетамСКлиентами(АналитикиПартнера);

РеглУчетПроведениеСервер.ОтразитьДокумент(Источник);
//////////

После этого вызывать такую процедуру при проведении документов по (организации, партнеру и контрагенту). Тогда авансы должны зачитываться автоматом и появляться в проводках.

Но надо иметь ввиду, что вставка документа перед уже проведенным документом по (организации, партнеру и контрагенту) приведет к некорректности проводок по авансам.

З.Ы. использовать этот код для проведения документов по нескольким организациям, по нескольким контрагентам нельзя - надо дорабатывать.
30 Dmitry1c
 
22.01.15
14:24
Если столько жалоб на УТ 11, то как внедряют ERP 2.0?
31 Психотерапевта Вызыва
 
22.01.15
14:33
(26) а если в общем модуле МодификацияКонфигурацииПереопределяемый

в текст переопределяемой процедуры записать:

// Переопределяемая процедура, вызываемая из одноименного обработчика события формы.
//
// Параметры:
//     Форма - форма, из обработчика события которой происходит вызов процедуры.
//    см. справочную информацию по событиям управляемой формы.
//
Процедура ПослеЗаписиНаСервере(Форма, ТекущийОбъект, ПараметрыЗаписи)Экспорт
    Запрос = Новый Запрос("
    |ВЫБРАТЬ
    |    Данные.Период КАК Дата,
    |    Данные.Регистратор КАК Ссылка,
    |    Данные.Организация КАК Организация
    |ИЗ
    |    РегистрСведений.ОтражениеДокументовВРеглУчете КАК Данные
    |ГДЕ
    |    Данные.Регистратор = &Ссылка
    |    И Данные.Статус В (
    |        ЗНАЧЕНИЕ(Перечисление.СтатусыОтраженияДокументовВРеглУчете.КОтражениюВРеглУчете),
    |        ЗНАЧЕНИЕ(Перечисление.СтатусыОтраженияДокументовВРеглУчете.НеУказаныСчетаУчета))
    |    И &Организация В (Данные.Организация, НЕОПРЕДЕЛЕНО, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))
    |УПОРЯДОЧИТЬ ПО
    |    Данные.Период ВОЗР
    |");
    Запрос.УстановитьПараметр("Ссылка", ТекущийОбъект.Ссылка);
    Запрос.УстановитьПараметр("Организация", ТекущийОбъект.Организация);
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        СтруктураРеквизиты = Новый Структура(
            "Ссылка, Дата, Организация",
            ТекущийОбъект.Ссылка,
            ТекущийОбъект.Дата,
            ТекущийОбъект.Организация);
        РеглУчетПроведениеСервер.ОтразитьДокумент(СтруктураРеквизиты, Истина);
    КонецЕсли;    
КонецПроцедуры
32 happysan
 
22.01.15
14:49
(29)
1. Тогда алгоритм не будет отрабатывать при проведении не из формы документа.
2. Этот объект захвачен тобой в хранилище))
33 happysan
 
22.01.15
14:51
(29) пардон, это сообщение для (31))
34 happysan
 
22.01.15
14:51
(31)
1. Тогда алгоритм не будет отрабатывать при проведении не из формы документа.
2. Этот объект захвачен тобой в хранилище))
35 happysan
 
22.01.15
14:56
(29) Почему идёт обращение к РегистрСведений.АналитикаУчетаПоПартнерам, а не к РегистрНакопления.РасчетыСПоставщиками и РегистрНакопления.РасчетыСКлиентами?
36 Психотерапевта Вызыва
 
22.01.15
15:08
(34) ты про какое хранилище намекаешь?

немного поправил код


    Запрос = Новый Запрос("
    |ВЫБРАТЬ
    |    Данные.Период КАК Дата,
    |    Данные.Регистратор КАК Ссылка,
    |    Данные.Организация КАК Организация
    |ИЗ
    |    РегистрСведений.ОтражениеДокументовВРеглУчете КАК Данные
    |ГДЕ
    |    Данные.Регистратор = &Ссылка
    |    И Данные.Статус В (
    |        ЗНАЧЕНИЕ(Перечисление.СтатусыОтраженияДокументовВРеглУчете.КОтражениюВРеглУчете),
    |        ЗНАЧЕНИЕ(Перечисление.СтатусыОтраженияДокументовВРеглУчете.НеУказаныСчетаУчета))
    |    И &Организация В (Данные.Организация, НЕОПРЕДЕЛЕНО, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))
    |УПОРЯДОЧИТЬ ПО
    |    Данные.Период ВОЗР
    |");
    Запрос.УстановитьПараметр("Ссылка", ТекущийОбъект.Ссылка);
    Запрос.УстановитьПараметр("Организация", ТекущийОбъект.Организация);
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        ВременныеТаблицы = Новый МенеджерВременныхТаблиц;

        ЗапросПланаСчетов = РеглУчетВыборкиСервер.ЗапросПланаСчетов();
        ЗапросПланаСчетов.МенеджерВременныхТаблиц = ВременныеТаблицы;
        ЗапросПланаСчетов.Выполнить();
        // выборка вариабельных счетов учета
        ЗапросСчетов = РеглУчетВыборкиСервер.ЗапросСчетов();
        ЗапросСчетов.МенеджерВременныхТаблиц = ВременныеТаблицы;
        ЗапросСчетов.Выполнить();
        
        СтруктураРеквизиты = Новый Структура(
            "Ссылка, Дата, Организация",
            ТекущийОбъект.Ссылка,
            ТекущийОбъект.Дата,
            ТекущийОбъект.Организация);
        РеглУчетПроведениеСервер.ОтразитьДокумент(СтруктураРеквизиты, Ложь, ВременныеТаблицы);
        
        ВременныеТаблицы.Закрыть();
    КонецЕсли;


Вроде авансы засчитывает
37 happysan
 
22.01.15
15:16
(36)а проведение не из формы документа? Что тогда?
38 Психотерапевта Вызыва
 
22.01.15
15:24
(37) Объясни подробнее я не догоняю - при чем здесь это?
39 happysan
 
22.01.15
15:54
(38)ок, этот переопределяемый общий модуль дополняет обработчики событий вызываемые из модулей форм документов. Таким образом эти события отрабатываются только если форма открыта пользователем и он проводит документ, но если какое-то групповое проведение документов, то есть программное или интерактивное без открытия формы, то процедура твоя не отработает.
40 Психотерапевта Вызыва
 
22.01.15
15:56
(39) это было 1) - это ясно и так
а ты же писал про какое-то хранилище во 2)
41 Психотерапевта Вызыва
 
22.01.15
15:59
(39) если проведение без открытия формы то работает типовой механизм.
42 happysan
 
22.01.15
16:03
(41)вот поэтому этот механизм и не подходит
(40) забудь про хранилище)
43 vvp91
 
22.01.15
16:22
> (31) РеглУчетПроведениеСервер.ОтразитьДокумент(СтруктураРеквизиты, Истина);
Не рекомендую писать Истина во втором параметре при оперативном проведении документа.
Это вызовет пересчет всей базы по партионному учету, взаиморасчетам с поставщиками и клиентами и расчет себестоимости.

Если нужно просто зачесть авансы, то надо пересчитать только взаиморасчеты с поставщиками и клиентами по организации, партнеру и контрагенту, указанными в проводимом документе.

> (35) Почему идёт обращение к РегистрСведений.АналитикаУчетаПоПартнерам, а не к РегистрНакопления.РасчетыСПоставщиками и РегистрНакопления.РасчетыСКлиентами?
Обращение к регистру сведений АналитикаУчетаПоПартнерам идет для определения ключа аналитики партнера по данным документа.
Обращение к регистрам накопления РасчетыСПоставщиками и РасчетыСКлиентами идет в вызове типовых методов ВзаиморасчетыСервер.ВыполнитьПроведениеДокументовПоРасчетамСХХХ

> (36) ЗапросПланаСчетов = РеглУчетВыборкиСервер.ЗапросПланаСчетов();
Ну и зачем ты продублировал треть метода РеглУчетПроведениеСервер.ОтразитьДокумент, когда ты все равно вызываешь этот метод?
44 happysan
 
22.01.15
17:15
(43)Это выглядит всё как полумеры. которые никак не решают ситуацию, есть практичное предложение?
45 vvp91
 
22.01.15
17:54
> (44) Это выглядит всё как полумеры. которые никак не решают ситуацию...
Весьма голословное утверждение. Тебе помощь нужна или как?

Что не решает?

> (44) есть практичное предложение?
Пойди работать в 1С. Напишешь там свой бух.учет с автозачетом авансов и удовлетворенными бухгалтерами.
46 happysan
 
22.01.15
18:00
(45)Реализую по-своему и продемонстрирую.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс