|
|
|
Движения документа | ☑ | ||
|---|---|---|---|---|
|
0
Aston
27.04.10
✎
13:29
|
1С 8.1 Бухгалтерия предприятия
При проведении документа Приходный кассовый ордер операцией Оплата от покупателя на 90ый счет не попадает субконто Номенклатурная группа. Клиентам очень надо. Чтобы не менять конфигурацию, решил сделать внешнюю обработку, которая бы подставляла субконто в движения этого документа... Номенклатурные группы думал поставить в Договоры контрагента, т.к. этот справочник и так изменен, чтобы обработка оттуда брала. номенклатурную группу. Но столкнулся с проблемой: Не могу понять как поменять (отредактировать) движение документа? Или может кто придумает более интересное решение проблемы? |
|||
|
1
Ненавижу 1С
гуру
27.04.10
✎
13:32
|
(0) каким образом оплата от покупателя затрагивает 90 счет?
|
|||
|
2
Живой Ископаемый
27.04.10
✎
13:32
|
в 8.1 есть такая штука - подписка на событие... ты ее добавляешь, конфа остается на поддреждке, обновления твои подписки не затирают.. у тебя в подписке например такое:
Процедура ПриПроведенииДокументаОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт //Получаем тз Бух.проводок НаборЗаписейРББух = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); НаборЗаписейРББух.Отбор.Регистратор.Установить(Источник.Ссылка); НаборЗаписейРББух.Прочитать(); тзПроводокБух = НаборЗаписейРББух.Выгрузить(); // Если (тзПроводокБух.Количество()=0) И ЗначениеЗаполнено(Источник.Движения.Найти("Хозрасчетный")) И Источник.Движения.Хозрасчетный.Количество()>0 Тогда тзПроводокБух = Источник.Движения.Хозрасчетный.Выгрузить(); КонецЕсли; ПодразделениеСквозное=0; //тем или иным способом получаем подразделение сквозное Если Источник.Метаданные().Реквизиты.Найти("Подразделение")= Неопределено Тогда //нет реквизита Подразделенеие Если Источник.Метаданные().Реквизиты.Найти("ДокументОснование")= Неопределено Тогда //нет реквизита Документ-основание Иначе Если (НЕ (ЗначениеЗаполнено(Источник.ДокументОснование))) ИЛИ (Источник.ДокументОснование.Метаданные().Реквизиты.Найти("Подразделение")= Неопределено) Тогда //у документа-основания нет реквизита Подраздлеление //или сам реквизит ничем не заполнен Иначе ПодразделениеСквозное = Источник.ДокументОснование.Подразделение; КонецЕсли; КонецЕсли; Иначе ПодразделениеСквозное = Источник.Подразделение; КонецЕсли; // тзПроводокБух.Колонки.Добавить("ПодразделениеСквозное"); тзПроводокБух.ЗаполнитьЗначения(ПодразделениеСквозное,"ПодразделениеСквозное"); //Загружаем хозрасчетные проводки как есть в управленические Если тзПроводокБух.Количество()>0 Тогда НаборЗаписейРБУпр = РегистрыБухгалтерии.Управленческий.СоздатьНаборЗаписей(); НаборЗаписейРБУпр.Отбор.Регистратор.Установить(Источник.Ссылка); НаборЗаписейРБУпр.Загрузить(тзПроводокБух); Для Каждого СтрокаНабораЗаписейУпр Из НаборЗаписейРБУпр Цикл //исправляем досадный глюк Если НЕ СтрокаНабораЗаписейУпр.СчетДт.Валютный Тогда СтрокаНабораЗаписейУпр.ВалютаДт=Неопределено; СтрокаНабораЗаписейУпр.ВалютнаяСуммаДт=0; КонецЕсли; Если НЕ СтрокаНабораЗаписейУпр.СчетКт.Валютный Тогда СтрокаНабораЗаписейУпр.ВалютаКт=Неопределено; СтрокаНабораЗаписейУпр.ВалютнаяСуммаКт=0; КонецЕсли; КонецЦикла; НаборЗаписейРБУпр.Записать(); КонецЕсли; КонецПроцедуры Или такое: Процедура ПриЗаписиПроводокРБХозрасчетный(Источник,Отказ,СобытиеПодписки) Экспорт Регистратор = Источник.Отбор.Регистратор.Значение; НаборЗаписейРБХоз = Источник; КвоПроводок = НаборЗаписейРБХоз.Количество(); //Это ручная операция //Сообщить("Проводок: "+КвоПроводок); Если КвоПроводок=0 Тогда Возврат; КонецЕсли; НаборЗаписейРБУпр = РегистрыБухгалтерии.Управленческий.СоздатьНаборЗаписей(); НаборЗаписейРБУпр.Отбор.Регистратор.Установить(регистратор); Если регистратор.Метаданные().Имя="ОперацияБух" Тогда НаборЗаписейРБУпр.Прочитать(); //узнаем Подразделения у тех проводок Упр.Учета, что есть ПодразделенияПроводок = НаборЗаписейРБУпр.ВыгрузитьКолонку("ПодразделениеСквозное"); НаборЗаписейРБУпр.Очистить(); //=== КонецЕсли; // Для К = 1 По КвоПроводок Цикл Проводка = НаборЗаписейРБХоз.Получить(К-1); Движение = НаборЗаписейРБУпр.Добавить(); Движение.Регистратор = Проводка.Регистратор; Движение.Активность = Проводка.Активность; Движение.Период = Проводка.Период; Движение.Организация = Проводка.Организация; Если Проводка.Регистратор.Метаданные().Реквизиты.Найти("Подразделение")= Неопределено Тогда //нет реквизита Подразделенеие Если Проводка.Регистратор.Метаданные().Реквизиты.Найти("ДокументОснование")= Неопределено Тогда //нет реквизита Документ-основание Иначе Если (НЕ (ЗначениеЗаполнено(Проводка.Регистратор.ДокументОснование))) ИЛИ (Проводка.Регистратор.ДокументОснование.Метаданные().Реквизиты.Найти("Подразделение")= Неопределено) Тогда //у документа-основания нет реквизита Подраздлеление //или сам реквизит ничем не заполнен Иначе Движение.ПодразделениеСквозное = Проводка.Регистратор.ДокументОснование.Подразделение; КонецЕсли; КонецЕсли; Иначе Движение.ПодразделениеСквозное = Проводка.Регистратор.Подразделение; КонецЕсли; Движение.Сумма = Проводка.Сумма; Движение.Содержание = Проводка.Содержание; Движение.НомерЖурнала = Проводка.НомерЖурнала; Движение.ВалютаДт = Проводка.ВалютаДт; Движение.ВалютаКт = Проводка.ВалютаКт; Движение.ВалютнаяСуммаДт = Проводка.ВалютнаяСуммаДт; Движение.ВалютнаяСуммаКт = Проводка.ВалютнаяСуммаКт; Движение.КоличествоДт = Проводка.КоличествоДт; Движение.КоличествоКт = Проводка.КоличествоКт; Движение.СчетДт = Проводка.СчетДт; ВидыСубконтоДт = Проводка.СчетДт.ВидыСубконто; Для КвоСубконтоДт = 1 По ВидыСубконтоДт.Количество() Цикл Движение.СубконтоДт[ВидыСубконтоДт[КвоСубконтоДт-1].ВидСубконто] = Проводка.СубконтоДт[ВидыСубконтоДт[КвоСубконтоДт-1].ВидСубконто]; КонецЦикла; Движение.СчетКт = Проводка.СчетКт; ВидыСубконтоКт = Проводка.СчетКт.ВидыСубконто; Для КвоСубконтоКт = 1 По ВидыСубконтоКт.Количество() Цикл Движение.СубконтоКт[ВидыСубконтоКт[КвоСубконтоКт-1].ВидСубконто] = Проводка.СубконтоКт[ВидыСубконтоКт[КвоСубконтоКт-1].ВидСубконто]; КонецЦикла; КонецЦикла; Если регистратор.Метаданные().Имя="ОперацияБух" Тогда //узнаем Подразделения у тех проводок Упр.Учета, что есть НаборЗаписейРБУпр.ЗагрузитьКолонку(ПодразделенияПроводок,"ПодразделениеСквозное"); //=== КонецЕсли; // Записать набор записей. НаборЗаписейРБУпр.Записать(); КонецПроцедуры Процедура ПриЗаписиРБХозрасчетныйПриЗаписи(Источник, Отказ, РежимЗаписи) Экспорт //Это процедура должна срабатывать только в случае записи ручной операции СобытиеПодписки = "ПриЗаписиПроводок"; регистратор = Источник.Отбор.Регистратор.Значение;//ИЛИ (регистратор.Метаданные().Имя="РегистрацияВходящегоНалоговогоДокумента") Если (регистратор.Метаданные().Имя="ОперацияБух") Тогда ПриЗаписиПроводокРБХозрасчетный(Источник,Отказ, СобытиеПодписки); КонецЕсли; //Сообщить("при записи проводок"); КонецПроцедуры |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |