![]() |
![]() |
![]() |
|
Бух4.5: Разделитель учета и event ПриВыклВклПроводокОперации() | ☑ | ||
---|---|---|---|---|
0
Кокос
15.09.10
✎
13:54
|
Вобщем ввел я во все документы разделитель учета. В отчетах он включился сам автоматически. Теперь вот придется по всем модулям документов проставлять при создании проводок разделитель учета. А нельзяли воспользоваться этим методом. Ну то есть в одном месте и все. Еще какие способы облегчить сей процесс можете предложить?
В глобальном модуле можно поставить описанную ниже предопределенную процедуру Процедура ПриВыклВклПроводокОперации(<?>,) КонецПроцедуры Синтаксис: ПриВыклВклПроводокОперации(<Документ>) Назначение: Предопределенная процедура, выполняемая при выключении или включении бухгалтерских проводок. Параметры: <Документ> - значение типа ''Документ'' - документ, которому принадлежит операция. Замечание: Данная процедура может располагаться в глобальном программном модуле. Подробнее см. в документации, глава 'Системные предопределенные процедуры' |
|||
1
zak555
15.09.10
✎
13:58
|
(0) всё проще :
в каждый модуль добавь переменную НачПров далее перед каждым записатьПроводки/Записать (операцию) вызывай глобальную процедуру вида глЗаполнитьРУ(Конт, Чем, ОтКудаНачать) |
|||
2
Генератор
15.09.10
✎
14:00
|
еще можно попробовать в глПриПроведении в которой формируется трассировка, ее вызов уже есть в конце процедуры проведения большинства документов
|
|||
3
Кокос
15.09.10
✎
14:01
|
(1) о. спасибо. А пример где нибудь есть?
|
|||
4
Кокос
15.09.10
✎
14:06
|
(1) ПУБ + Разделитель учета но там тоже просто предложение. а текста нет :)
|
|||
5
zak555
15.09.10
✎
14:26
|
пишет сначала :
Процедура глЗаписать(Конт, РУ, УжеЗаписано = 0) Экспорт Операция = Конт.Операция; Если ПустоеЗначение(Операция) = 1 Тогда Возврат; КонецЕсли; КолПроводок = Операция.КоличествоПроводок(); Если КолПроводок = 0 Тогда Возврат; КонецЕсли; Для н = 1 + ЗаписаноПроводок По КолПроводок Цикл Проводка = Операция.Пров(н, 1); Если ПустоеЗначение(Проводка.РазделительПоИсточнику) = 1 Тогда Проводка.РазделительПоИсточнику = РУ; КонецЕсли; КонецЦикла; Если УжеЗаписано<>0 Тогда Операция.ЗаписатьПроводки(); ЗаписаноПроводок = Операция.КоличествоПроводок(); КонецЕсли; КонецПроцедуры |
|||
6
zak555
15.09.10
✎
14:30
|
нет : пишем две процедуры
Процедура глЗаписать(Конт, РУ, УжеЗаписано = 0) Экспорт Операция = Конт.Операция; Если ПустоеЗначение(Операция) = 1 Тогда Возврат; КонецЕсли; КолПроводок = Операция.КоличествоПроводок(); Если КолПроводок = 0 Тогда Возврат; КонецЕсли; Для н = 1 + ЗаписаноПроводок По КолПроводок Цикл Проводка = Операция.Пров(н, 1); Если ПустоеЗначение(Проводка.РазделительПоИсточнику) = 1 Тогда Проводка.РазделительПоИсточнику = РУ; КонецЕсли; КонецЦикла; КонецПроцедуры Процедура глЗаписатьПроводки(Конт, РУ, УжеЗаписано = 0) Экспорт Операция = Конт.Операция; Если ПустоеЗначение(Операция) = 1 Тогда Возврат; КонецЕсли; КолПроводок = Операция.КоличествоПроводок(); Если КолПроводок = 0 Тогда Возврат; КонецЕсли; Для н = 1 + ЗаписаноПроводок По КолПроводок Цикл Проводка = Операция.Пров(н, 1); Если ПустоеЗначение(Проводка.РазделительПоИсточнику) = 1 Тогда Проводка.РазделительПоИсточнику = РУ; КонецЕсли; КонецЦикла; Операция.ЗаписатьПроводки(); ЗаписаноПроводок = Операция.КоличествоПроводок(); КонецПроцедуры |
|||
7
zak555
15.09.10
✎
14:30
|
если в модуле дока не встечается метод ЗаписатьПроводки() пишем, до записи операции :
глЗаписать(Контекст, РУ); Операция.Записать(); |
|||
8
Кокос
15.09.10
✎
14:33
|
(5) я так понял после записи операции проводки уже менять нельзя и это надо делать перед Операция.ЗАписать(); Спасибо
|
|||
9
zak555
15.09.10
✎
14:35
|
если есть метод ЗаписатьПроводки пишем в модуле:
Перем КолВоПроводок; //... Процедура ПроцедураКакая_то1() //... //Операция.ЗаписатьПроводки(); глЗаписатьПроводки(Контекст,РУ,КолВоПроводок); //... КонецПроцедуры //... Процедура ПроцедураКакая_то2() //... //Операция.ЗаписатьПроводки(); глЗаписатьПроводки(Контекст,РУ,КолВоПроводок); //... КонецПроцедуры //... Функция ФункцияКакая_то1() //... //Операция.ЗаписатьПроводки(); глЗаписатьПроводки(Контекст,РУ,КолВоПроводок); //... КонецФункции //... Процедура ОбработкаПроведения() КолВоПроводок = 0; //... глЗаписать(Контекст, РУ,КолВоПроводок); Операция.Записать(); КонецПроцедуры |
|||
10
zak555
15.09.10
✎
14:38
|
в (5) не смотреть
|
|||
11
Кокос
15.09.10
✎
14:48
|
спасибо :) можно в базу знаний прям. я в сети все искал ничего не нашел ато. везде вроде все правильно но не до конца както все дописано. Плюс еще нашел про какойто ActiveMD совет. типа классно помогает массовые операции делать. но я уже реквизиты разделителя в ручную проставил
|
|||
12
Кокос
15.09.10
✎
14:51
|
(6) Для н = 1 + ЗаписаноПроводок
надо Для н = 1 + УжеЗаписано ? Ато переменной такой нет говорит :) |
|||
13
zak555
15.09.10
✎
14:53
|
Процедура глЗаписать(Конт, РУ, УжеЗаписано = 0) Экспорт
Операция = Конт.Операция; Если ПустоеЗначение(Операция) = 1 Тогда Возврат; КонецЕсли; КолПроводок = Операция.КоличествоПроводок(); Если КолПроводок = 0 Тогда Возврат; КонецЕсли; Для н = 1 + УжеЗаписано По КолПроводок Цикл Проводка = Операция.Пров(н, 1); Если ПустоеЗначение(Проводка.РазделительПоИсточнику) = 1 Тогда Проводка.РазделительПоИсточнику = РУ; КонецЕсли; КонецЦикла; КонецПроцедуры Процедура глЗаписатьПроводки(Конт, РУ, УжеЗаписано = 0) Экспорт Операция = Конт.Операция; Если ПустоеЗначение(Операция) = 1 Тогда Возврат; КонецЕсли; КолПроводок = Операция.КоличествоПроводок(); Если КолПроводок = 0 Тогда Возврат; КонецЕсли; Для н = 1 + УжеЗаписано По КолПроводок Цикл Проводка = Операция.Пров(н, 1); Если ПустоеЗначение(Проводка.РазделительПоИсточнику) = 1 Тогда Проводка.РазделительПоИсточнику = РУ; КонецЕсли; КонецЦикла; Операция.ЗаписатьПроводки(); ЗаписаноПроводок = Операция.КоличествоПроводок(); КонецПроцедуры |
|||
14
Кокос
15.09.10
✎
14:53
|
(9) КолВоПроводок сделал глобальной. чтобы в Перем не совать постоянно
|
|||
15
nop
модератор
15.09.10
✎
14:56
|
(11) добавлено в базу по просьбе автора
|
|||
16
zak555
15.09.10
✎
14:57
|
(14) нет, локально
|
|||
17
Кокос
15.09.10
✎
16:29
|
(16) норм. и глобально работает :) спасибо. все сделал.
Для Базы знаний: 1. Создаем справочник содержащий разделители учета (Фирмы, Контракты или еще что) 2. Добавляем реквизит с Разделителем Учета в Проводки. 3. Выбираем в плане счетов этот реквизит в качестве Разделителя учета 4. Необязательно: Создать справочник пользователей с реквизитом РазделительУчета. Автозаполнение справочника ПриНачалеРаботыСистемы перенести из ТиС. Каждому пользователю ставим его разделитель учета. 5. Добавляем в общие реквизиты документов реквизит РазделительУчета; 6. Пробегаемся по всем формам документов и под кнопками проставляем новый реквизит РазделительУчета 7. (если сделали 4.) тогда в глобальном модуле правим процедуру следующим образом Процедура глПроверкаРазрешенияРедактирования(Конт) Экспорт Если Конт.Выбран() = 1 Тогда ... то что было раньше Иначе //Действия при открытии документа с общими реквизитами Конт.РазделительУчета = глПользователь.РазделительУчета; КонецЕсли; КонецПроцедуры Если не сделали(4.) то можно просто поставить в какую нибудь константу значение по умолчанию и тут ее проставить. Эта процедура вызывается при каждом открытии документа что очень удобно. 8. Создаем глобальную переменную Перем глКоличествоПроводок Экспорт; 9. Делаем Конфигурация "Поиск во всех текстах..." ищем текст ОбработкаПроведения Везде где нашли щелкая мышью переходим по документам и проставляем после заголовка Процедура ОбработкаПроведения() глКоличествоПроводок = 0; .... 10. В глобальник добавляем две процедуры // Процедура глЗаписать(Конт, РУ, УжеЗаписано = 0) Экспорт Операция = Конт.Операция; Если ПустоеЗначение(Операция) = 1 Тогда Возврат; КонецЕсли; КолПроводок = Операция.КоличествоПроводок(); Если КолПроводок = 0 Тогда Возврат; КонецЕсли; Для н = 1 + УжеЗаписано По КолПроводок Цикл Проводка = Операция.Пров(н, 1); Если ПустоеЗначение(Проводка.Контракт) = 1 Тогда Проводка.Контракт = РУ; КонецЕсли; КонецЦикла; КонецПроцедуры Процедура глЗаписатьПроводки(Конт, РУ, УжеЗаписано = 0) Экспорт Операция = Конт.Операция; Если ПустоеЗначение(Операция) = 1 Тогда Возврат; КонецЕсли; КолПроводок = Операция.КоличествоПроводок(); Если КолПроводок = 0 Тогда Возврат; КонецЕсли; Для н = 1 + УжеЗаписано По КолПроводок Цикл Проводка = Операция.Пров(н, 1); Если ПустоеЗначение(Проводка.РазделительУчета) = 1 Тогда Проводка.Контракт = РУ; КонецЕсли; КонецЦикла; Операция.ЗаписатьПроводки(); УжеЗаписано = Операция.КоличествоПроводок(); КонецПроцедуры 11.Делаем Конфигурация "Поиск во всех текстах..." ищем текст Операция.ЗаписатьПроводки(); Везде где нашли щелкая мышью переходим по документам и проставляем //Операция.ЗаписатьПроводки(); комментируем глЗаписатьПроводки(Контекст,РазделительУчета,глКоличествоПроводок); 12.Делаем Конфигурация "Поиск во всех текстах..." ищем текст Операция.Записать(); Везде где нашли щелкая мышью переходим по документам и проставляем глЗаписать(онтекст,РазделительУчета,глКоличествоПроводок); Операция.Записать(); Все! готово. Вобщем если все делать вручную то занимает где-то 3 часа. В типовой в отчетах ничего делать уже не надо. Если разделитель учета выбран в плане счетов то поле появляется в каждом отчете и все работает. |
|||
18
zak555
15.09.10
✎
16:35
|
нет, проще сделать так :
1. добавил глобальную переменную Перем глКоличествоПроводок Экспорт; инициализировали её, как 0 2. правим Процедура глЗаписать(Конт, РУ, УжеЗаписано = 0) Экспорт //... УжеЗаписано = 0; КонецПроцедуры 3. в тех модулях, где встречается ЗаписатьПроводки не надо будет инициализировать глКоличествоПроводок = 0 !!! остальное тоже самое единственное, что нужно будет проверить в групповой обаработке |
|||
19
zak555
16.09.10
✎
10:44
|
GentleMan , проверил ?
|
|||
20
Кокос
16.09.10
✎
14:32
|
(19) дык. уже работает. яж после запуска сюда все запостил :)
|
|||
21
zak555
16.09.10
✎
14:33
|
(20) см. в (18)
|
|||
22
Кокос
16.09.10
✎
14:43
|
(21) так я уже до (18) все перелопатил. сейчас лень снова в прогу лезть :)
|
|||
23
zak555
16.09.10
✎
14:46
|
просто (18) проще в реализации
|
|||
24
Кокос
16.09.10
✎
14:48
|
(23) дык зачем тратить еще время если и так все работает :)
|
|||
25
zak555
16.09.10
✎
15:53
|
(24) должна быть красота
|
|||
26
Кокос
16.09.10
✎
15:55
|
(25) Так и так очень красиво. :)
|
|||
27
zak555
16.09.10
✎
16:01
|
(26) нет
тебе не надо будет инициализировать переменную в модулях там всё на автомате будет |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |