![]() |
![]() |
![]() |
|
Перенос ручных операций с помощью КД из 77 в 8. Как сделать? | ☑ | ||
---|---|---|---|---|
0
bublik
11.11.10
✎
13:14
|
Собственно сабж. База бухгалтерия бюджет.
|
|||
1
Рэйв
11.11.10
✎
13:16
|
(0)Наверное надо настроить правила.
|
|||
2
bublik
11.11.10
✎
13:25
|
это понятно)) только у ручной операции нет табчасти, проводки пишутся сразу в регистр, и не понятно как проводки переносить.
|
|||
3
Живой Ископаемый
11.11.10
✎
13:27
|
в книжке есть пример. у меня получилось
|
|||
4
ДенисЧ
11.11.10
✎
13:27
|
В книжке по КД есть пример этого..
ТОлько там коду на 3 страницы книги :-( |
|||
5
Рэйв
11.11.10
✎
13:32
|
(2)Я давно гогда то перносил через текст.
при загрузке создаешь док ,пишешь все в регистр, а док подставляешь как регистратор |
|||
6
Живой Ископаемый
11.11.10
✎
13:39
|
1. То что у операции нет табличной части, а проводки пишутся регистр, в КД описывается так:
создаем ПКГС (правило конвертации ГРУППЫ свойств) - в табличной чатси ПКО это отражается как Папочка, то есть иемнно ее нужно завести. И для этой папчоки ты указываешь, что источник данных - пустой,а приемник - Хозрасчетный (твой РБ в 8.1) |
|||
7
Живой Ископаемый
11.11.10
✎
13:41
|
2. Для этого ПКГС в обработчик "Перед обработкой" ты пишешь код, который а) подготовит в качестве источника данных ТЗ, переберет проводки твоей ручной операции и заполнит эту твою ТЗ.... считай что это и будет табличной частью твоей операции в 77, и эта табличная часть будет источником данных.
|
|||
8
Живой Ископаемый
11.11.10
✎
13:42
|
в конце кода обработчика так и напишешь:
КоллекцияОбъектов=ТЗсПроводками; там отдельный нюанс с Субконтами, ноо нем позже |
|||
9
bublik
11.11.10
✎
13:42
|
(5) вот по хозрасчетке я тоже через текстовый файл делал, а в бюджете там счета в 8 и 77 отличаются немного. Например, в 77 счет 301.1 а в 8-ке 301; в 77 счет А21.1.1 а в 8-ке 21... запаришься код писать
|
|||
10
Живой Ископаемый
11.11.10
✎
13:45
|
3. Зайдя в эту папочку создаешь ПКС для каждого реквизита проводки - СчетДТ, СчетКт, Сумма, Количество, Регистратор, и т.п.при чем для каждого ПКС пишешь в обработчике "Перед выгрузкой" напримре такое:
Значение = ОбъектКоллекции.СчетДт; и указываешь правило - например ПланСчетовХозрасчетный 2(5)А в ПКО "ПланСчетовХозрасчетный" на закладке Конвертация Значений ты пишешь, что счету 301.1 в 77 соответсвует счет 301 в 8-ке... И все |
|||
11
bublik
11.11.10
✎
13:46
|
спасибо за ответы
|
|||
12
ДенисЧ
11.11.10
✎
13:48
|
(8) про субконты продолжай...
|
|||
13
Живой Ископаемый
11.11.10
✎
13:49
|
:) (12) гы... пусть сначала это переварит... или ты для себя?
|
|||
14
Живой Ископаемый
11.11.10
✎
13:53
|
В Пункте 2, нам нужно предусмотреть, что Поле Таблицы значений СубконтоДт и СубконтоКТ также будут таблицами значений...
и поэтому их заполнять будем примерно так: ТЗсПроводками.СубконтоДт = СоздатьОбъект("ТаблицаЗначений"); ТЗсПроводками.СубконтоДт.НоваяКолонка("Ключ"); ТЗсПроводками.СубконтоДт.НоваяКолонка("Значение");// Для НомерСубконто=1 По Операция.Дебет.Счет.КоличествоСубконто() Цикл ТЗсПроводками.СубконтоДт.НоваяСтрока(); ТЗсПроводками.СубконтоДт.Ключ = Операция.Дебет.Счет.ВидСубконто(НомерСубконто); ТЗсПроводками.СубконтоДт.Значение = Операция.Дебет.Субконто(НомерСубконто); КонецЦикла; |
|||
15
ДенисЧ
11.11.10
✎
13:53
|
(13) для себя, разумеется :-)
|
|||
16
Живой Ископаемый
11.11.10
✎
13:57
|
На самом деле у меня тут было больше всего кода, который учитывал разницу в планах счетов между 77 и 8.
Например именно тут я переставлял местами субконто по мат. счетам - в 77 идет Склад\Номенклатура\партия, в 8 - Номенклатура\Партия\Склад Писал что-то типа: ИначеЕсли (Лев(Операция.Кредит.Счет.Код,2)="20") ИЛИ (Лев(Операция.Кредит.Счет.Код,2)="28") ИЛИ (Лев(Операция.Кредит.Счет.Код,2)="22") Тогда Если НомерСубконто=1 Тогда ТЗсПроводками.СубконтоКт.НоваяСтрока(); //первым по 20-ке идет номенклатура ТабличнаяЧасть.СубконтоКт.Ключ = Операция.Кредит.Счет.ВидСубконто(2); ТабличнаяЧасть.СубконтоКт.Значение = Операция.Кредит.Субконто(2); ИначеЕсли НомерСубконто=2 Тогда ТабличнаяЧасть.СубконтоКт.НоваяСтрока(); //вторым по 20-ке идет партия ТЗсПроводками.СубконтоКт.Ключ = Операция.Кредит.Счет.ВидСубконто(3); ТабличнаяЧасть.СубконтоКт.Значение = Операция.Кредит.Субконто(3); ИначеЕсли НомерСубконто=3 Тогда Если (Лев(Операция.Кредит.Счет.Код,3)="283") Тогда Иначе ТЗсПроводками.СубконтоКт.НоваяСтрока(); //третьим по 20-ке идет склад ТЗсПроводками.СубконтоКт.Ключ = Операция.Кредит.Счет.ВидСубконто(1); ТЗсПроводками.СубконтоКт.Значение = Операция.Кредит.Субконто(1); КонецЕсли; КонецЕсли; И тому подобное... Может это можно было еще как-то обработать, и настоящие крутые дядьки заклеймят такое быдлокодом - но у меня так... |
|||
17
Живой Ископаемый
11.11.10
✎
14:09
|
Далее переходим к ПКС СубконтоДт (тому что внутри папочки-ПГКС "Хозрасчетный")
В обработчкие перед выгрузкой для этих ПКС у нас написано что и для всех: Значение = ОбъектКоллекции.СубконтоДт; Но еще мы добавляем обработчик "ПриВыгрузке" Параметры.ПараметрыАлгоритмов.УдалитьВсе(); Параметры.ПараметрыАлгоритмов.Установить("Счет", ОбъектКоллекции.СчетДт); Параметры.ПараметрыАлгоритмов.Установить("ВидСубконто", ВидСубконто); Параметры.ПараметрыАлгоритмов.Установить("Субконто", Субконто); Параметры.ПараметрыАлгоритмов.Установить("НомерСубконто", Число(Значение.НомерСтроки)); ПриВыгрузкеСубконто(); Что мы делаем этим кодом? Мы заполняем параметры отдельного алгоритма, который у нас так и называется ПриВыгрузкеСубконто - находится на вкладке "Алгоритмы\Запросы" правил конвертации вцелом... В общем там еще есть нюансы, которые я могу с ходу не вспомнить, остались только смутные идеи... Например бывает такое что Один и тот же вид субконто с одного счета должен перейти в один восьмерочный вид, а с другого счета - в другой... Это ведет к ому, что приходится создавать более одного ПКО "ВидыСубконтоХозрасчетные". http://www.screencast.com/users/october.hammer/folders/Jing/media/e6cbafe9-01a7-4ec6-971b-a4d6077597d7 |
|||
18
Птица
11.11.10
✎
14:12
|
ээ
|
|||
19
Живой Ископаемый
11.11.10
✎
14:14
|
2(18) тока не нужно критиковать... :) Мне это все не очень легко далось и к написанному очень привязан. :) Тем более все работает именно так как хочу. :) и более того - если встает нужда повторить - то тоже все работает.
|
|||
20
Живой Ископаемый
11.11.10
✎
14:23
|
Короче текст алгоритма при выгрузке субконто у меня такой:
Счет = Параметры.ПараметрыАлгоритмов.Получить("Счет"); ВидСубконто = Параметры.ПараметрыАлгоритмов.Получить("ВидСубконто"); Субконто = Параметры.ПараметрыАлгоритмов.Получить("Субконто"); НомерСубконто = Параметры.ПараметрыАлгоритмов.Получить("НомерСубконто"); Если ПустоеЗначение(ВидСубконто) = 1 Тогда Субконто = Параметры.ПараметрыАлгоритмов.Получить("Субконто"); НомерСубконто = Параметры.ПараметрыАлгоритмов.Получить("НомерСубконто"); Если Счет.КоличествоСубконто() >= НомерСубконто Тогда ВидСубконто = Счет.ВидСубконто(НомерСубконто); Иначе Отказ = 1; Возврат ""; КонецЕсли; КонецЕсли; ИмяПКО = ""; Если (Лев(Счет.Код,2) = "65") ИЛИ (Лев(Счет.Код,3) = "642") ИЛИ (Лев(Счет.Код,2) = "12") ИЛИ (Лев(Счет.Код,3) = "133") ИЛИ (Лев(Счет.Код,4) = "1521") ИЛИ (Лев(Счет.Код,4) = "1531") ИЛИ (Лев(Счет.Код,2) = "95") ИЛИ (Лев(Счет.Код,2) = "96") ИЛИ (Лев(Счет.Код,2) = "97") ИЛИ (Лев(Счет.Код,2) = "98") ИЛИ (Лев(Счет.Код,2) = "99") Тогда //по 12-м - необоротные активы превращаются не в оС/инвестции,а в нематериальные активы //по 133-му - аналогично ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетные00001"; ИначеЕсли (Лев(Счет.Код,3) = "151") ИЛИ (Лев(Счет.Код,4) = "1532") ИЛИ (Лев(Счет.Код,4) = "1522") ИЛИ (Лев(Счет.Код,4) = "1542") Тогда ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетные00002"; ИначеЕсли (Лев(Счет.Код,4) = "1541") Тогда ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетные00003"; ИмяПКО = "ИнвестицииВНМА"; // Сообщить(""+ОбъектКоллекции.СчетКт.Код+" "+ИмяПКОВидСубконто); ИначеЕсли (Лев(Счет.Код,3) = "206") И (ВидСубконто=ВидыСубконто.МестаХранения) Тогда ИмяПКО = "МХВКонтрагента"; ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетные00002"; Иначе ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетные"; КонецЕсли; //ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетные"; //Сообщить(""+ВидСубконто); Если ВидСубконто = ВидыСубконто.Сотрудники Тогда ИмяПКО = "ФизическиеЛица"; ИначеЕсли ВидСубконто = ВидыСубконто.Контрагенты Тогда ИмяПКО = "Контрагенты"; //ИначеЕсли ВидСубконто = ВидыСубконто.Эмитенты Тогда // ИмяПКО = "Контрагенты"; ИначеЕсли ВидСубконто = ВидыСубконто.ВидыИспользованияАмортизации Тогда ИмяПКО = "ВидыИспользованияАмортизации"; ИначеЕсли ВидСубконто = ВидыСубконто.Гарантии Тогда ИмяПКО = "Гарантии"; ИначеЕсли ВидСубконто = ВидыСубконто.ДоходыБудущихПериодов Тогда ИмяПКО = "ДоходыБудущихПериодов"; ИначеЕсли ВидСубконто = ВидыСубконто.КонтрактныеОбязательства Тогда ИмяПКО = "КонтрактныеОбязательства"; ИначеЕсли ВидСубконто = ВидыСубконто.Партии Тогда ИмяПКО = "Партия"; ИначеЕсли ВидСубконто = ВидыСубконто.ЦенныеБумаги Тогда ИмяПКО = "ЦенныеБумаги"; ИначеЕсли ВидСубконто = ВидыСубконто.Заказы Тогда //Сообщить("Вид субконто Заказ"); ИмяПКО = "ДокументРасчетовСКонтрагентом"; ИначеЕсли ВидСубконто = ВидыСубконто.ТМЦ Тогда ИмяПКО = "Номенклатура"; ИначеЕсли ВидСубконто = ВидыСубконто.НеоборотныеАктивы Тогда ИмяПКО = "ОсновныеСредства"; ИначеЕсли ВидСубконто = ВидыСубконто.ВидыЗатрат Тогда ИмяПКО = "СтатьиЗатрат"; ИначеЕсли ВидСубконто = ВидыСубконто.Инвестиции Тогда Если (Лев(Счет.Код,2) = "10") Тогда //если это третье субконто - например в 105-м счете, то его не выгружаем вовсе. ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетные00001"; ИмяПКО = ""; ИначеЕсли (Лев(Счет.Код,4) = "1541") Тогда ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетные00003"; ИмяПКО = "ИнвестицииВНМА"; Иначе ИмяПКО = "ФинансовыеИнвестиции"; КонецЕсли; ИначеЕсли ВидСубконто = ВидыСубконто.Сотрудники Тогда ИмяПКО = "ФизическиеЛица"; ИначеЕсли ВидСубконто = ВидыСубконто.НашиДенежныесчета Тогда ИмяПКО = "БанковскиеСчета"; ИначеЕсли ВидСубконто = ВидыСубконто.НалогиОтчисления Тогда Если ИмяПКОВидСубконто = "ВидыСубконтоХозрасчетные00001" Тогда ИмяПКО = "Налоги"; Иначе ИмяПКО = "СтатьиНалоговыхДеклараций"; КонецЕсли; КонецЕсли; НомерПКОСубконто = НайтиПравило(Субконто, ИмяПКО); Если НомерПКОСубконто = 0 Тогда Отказ = 1; КонецЕсли; Сначала я получаю значения параметров, потом определяю ИмяПКОВидСубконто, потом ИмяПКО, и нахожу саму процедуру: НомерПКОСубконто = НайтиПравило(Субконто, ИмяПКО); |
|||
21
John83
11.11.10
✎
14:31
|
(3)(4) там пример для какой конфигурации?
PS странно, что нигде не встречал подобную обработку/правила, хотя задача очень распостраненная |
|||
22
Живой Ископаемый
11.11.10
✎
14:33
|
2(21) там пример для сферической конфигурации...
|
|||
23
DailyLookingOn Sunset
11.11.10
✎
14:43
|
В типовой конфигурации "Конвертация данных" есть демо-база.
В ней есть конвертация "ПУБ(7.7)->УПП(8.х)". В ней есть всё необходимое для переноса бухпроводок, и алгоритмы, и ПКО операции и пр. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |