|
v7: Выгрузка данных из 77 в файл XML | ☑ | ||
---|---|---|---|---|
0
Kerk
21.11.13
✎
11:30
|
Провожу выгрузку данных из Бухгалтерии 4.5 (7.70.567). 1С:Предприятие 7.70.027
Выгружаю обработкой и правилами поставляемые в бухгалтерии 3.0 для 8.3. Папка базы 7.7 размером 3.2 гигабайта. Номенклатура выгружается 6,5 часов. НО… при выгрузки расчетов с покупателями и заказчиками, 1С 7.7 через 4-5 часов падает с логом: Начало выгрузки: 20.11.13 14:53:59 Ошибка исполнения обработчика: ПВД_ПередОбработкойПравила_ост_РасчетыСПокупателями - msxml3.dll: Недостаточно памяти для завершения операции. Выгружено объектов: 47763 Окончание выгрузки: 20.11.13 19:24:52 Пробовали на разных компах, даже на Серверной 2003 винде с 4 гигами оперативки. Есть у кого-нибудь советы (или код) что бы выгрузить остатки из 7.7. |
|||
1
ДенисЧ
21.11.13
✎
11:32
|
чястями выгружай.
|
|||
2
Kupogun
21.11.13
✎
11:34
|
ну, 4 гб это не так уж много.
|
|||
3
ТакВотЖе
21.11.13
✎
11:37
|
это свернутая база такого объема?
|
|||
4
Kerk
21.11.13
✎
11:41
|
(3) Да. Каждый год "сворачивалась" база 7.7, а то работать было невозможно.
|
|||
5
Kerk
21.11.13
✎
11:42
|
(1) Пытаюсь. И даже если выгружаю остатки только по расчетам с покупателями и заказчиками - все равно падает.
|
|||
6
asady
21.11.13
✎
11:52
|
(0) вызывайте специалиста (с)какой-то мистюк
а вообще сначала нужно было проверить регистры взаиморасчетов на предмет закрытия |
|||
7
Kerk
21.11.13
✎
11:53
|
В правилах в ост_РасчетыСПокупателями приписаны выгрузки по счетам: 62.1, 62.11, 62.2, 62.22, ВАЛ.22, 62.3, 62.4, 62.44, 62.6, 62.7, 62.8.
|
|||
8
Kerk
21.11.13
✎
11:55
|
(6) Тут ситуация вообще интересная, берутся остатки на начало 13 года, но и сама база свернута на начало 13 года...
|
|||
9
Абыр
21.11.13
✎
11:56
|
(0) Выгружайте частями (порциями контрагентов). Правила потребуется чуть допилить.
|
|||
10
ТакВотЖе
21.11.13
✎
12:17
|
(6) это бухгалтерия, там нет регистров)
|
|||
11
Kerk
21.11.13
✎
12:19
|
(9) В правилах выгружается по счетам что в (7) и боюсь, будет падать так же только на конкретном счете.
|
|||
12
be-may
21.11.13
✎
12:41
|
(0) "Номенклатура выгружается 6,5"
что под этим имеется в виду ? неужели сам справочник? |
|||
13
Абыр
21.11.13
✎
12:57
|
(11) Вам придется один раздел учета (одно ПВД) выгружать порциями. Т.е. остатки по каждым 100, 1000, 10000, ... контрагентам выгружать отдельным файлом. Вот как раз для этого разделения и придется доработать правила по проблемным разделам.
|
|||
14
Kerk
21.11.13
✎
13:38
|
(12) Сам справочник - он раздут довольно сильно, но он же выгружается...
|
|||
15
acsent
21.11.13
✎
13:45
|
Выгрузить отдельно контрагентов. Отдельно остатки без ссылок. Правила допилить слегка
|
|||
16
acsent
21.11.13
✎
13:45
|
И всего 2гига на результирующий xml может быть
|
|||
17
Kerk
21.11.13
✎
13:52
|
(15) Так и делаю. выгружаю справочники и остатки в отдельных выгрузках.
Самый большой счет 62.6 (вылютный) |
|||
18
ЧессМастер
21.11.13
✎
14:02
|
(0) в чем проблема выгрузить остатки по взаиморасчетам по ОЛЕ ?
|
|||
19
Kerk
21.11.13
✎
14:18
|
(18) Поделись обработочкой, если богат.
|
|||
20
пипец
21.11.13
✎
14:24
|
(18) при таких объемах - по оле , он быстрее повесится ;)
|
|||
21
ЧессМастер
21.11.13
✎
14:35
|
(19) если терпит до завтра то скину. обработка дома валяется
(20) у него падает не от объемов а по причине того что в файл XML пишется информация по ссылкам выгружаемых объектов. у меня все остатки по взаиморасчетам из бухгалтерии в опер. программу выгружаются после разноски банка каждый день минут за 5 |
|||
22
Kerk
21.11.13
✎
14:41
|
(21) Терпит. Буду благодарен, если поделишься.
|
|||
23
ЧессМастер
21.11.13
✎
14:45
|
(22) у тебя в базе Приемник данные по взаиморасчетам из Бухгалтерии куда должны попадать ?
|
|||
24
Kerk
21.11.13
✎
15:20
|
(23) Документ ВводНачальныхОстатков
|
|||
25
ЧессМастер
21.11.13
✎
15:42
|
(24) тогда вообще проблем нет
|
|||
26
ЧессМастер
22.11.13
✎
09:16
|
Ну как то так
БИ=БазаБух.CreateObject("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(БазаБух.ВидыСубконто.Контрагенты,,1); БИ.ИспользоватьСубконто(БазаБух.ВидыСубконто.Договоры,,1); БИ.ВыполнитьЗапрос(КонДатаВзаиморасчетов,КонДатаВзаиморасчетов,"62",,,1,,"С"); БИ.ВыбратьСубконто(1); Пока БИ.ПолучитьСубконто(1)=1 Цикл КонтрБух=БИ.Субконто(1); КодБух=КонтрБух.Код; Коннтр_=СоздатьОбъект("Справочник.Контрагенты"); Контр=СоздатьОбъект("Справочник.Контрагенты"); Контр_.ВыбратьЭлементыПоРеквизиту("КодОбмена",КодБух,0,0); Пока Контр_.ПолучитьЭлемент()=1 Цикл Если Контр_.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; Контр.НайтиЭлемент(Контр_.ТекущийЭлемент()); КонецЦикла; Если Контр.Выбран()=1 Тогда Если Контр.ПометкаУдаления()=1 Тогда Сообщить("Помечен на удаление "+Контр.Наименование); Продолжить; КонецЕсли; БИ.ВыбратьСубконто(2); Пока БИ.ПолучитьСубконто(2)=1 Цикл Договор=БИ.Субконто(2); //Сообщить(Шаблон("[КонтрБух.Наименование] [КодБух] [БИ.СКК(""С"")]")); Сальдо=БИ.СКК("С")-БИ.СКД("С"); // вот твое сальдо - засовывай его в документ ну и цикл закрой |
|||
27
Kerk
22.11.13
✎
12:17
|
(26) Спасибо, попробую загрузить напрямую из 8-ки.
|
|||
28
acsent
22.11.13
✎
12:20
|
(17) Ты уверен что без ссылок остатки грузишь? каким образом отключал?
|
|||
29
Kerk
22.11.13
✎
13:36
|
(17) Обработка вида http://plutonit.ru/image/TiS-UT/TiS-UT-82-1.png
В левой части можно выбрать остатки. В параметрах есть такие вещи как "Выгружать справочники / выгружать остатки / выгружать обороты" Соответственно там и там отмечаю что надо. в параметрах "где надо выгрузить" ставлю "1" Больше настроек не видел. |
|||
30
Kerk
22.11.13
✎
13:39
|
(29) к (28)
|
|||
31
Абыр
22.11.13
✎
20:08
|
(29) в этом случае, выгружая остатки, будут выгружены по ссылкам полностью справочники с реквизитами и со всеми сопутствующими им данными (контактная информация контрагентов, например). в (15) и (28) имеется в виду, что правила следует изменить, чтобы данные по ссылкам из дока ввода остатков не перегружались, но для этого их предварительно надо перенести отдельно, чтобы после переноса остатков всё подцепилось корректно.
|
|||
32
ifso
22.11.13
✎
20:58
|
(0) Можно попробовать отдать размер файла подкачки на растерзание окнам.
|
|||
33
Kerk
25.11.13
✎
11:40
|
(32) Выгрузка не упирается в пиковое значение по файлу подкачки, размер которого задан в ручную как 150% от объема оперативки.
|
|||
34
Kerk
27.11.13
✎
10:20
|
Такие же проблемы есть при выгрузке оборотов...
Но пока их использовать не буду, буду грузить сразу остатки на 3 квартал... |
|||
35
Franchiser
гуру
27.11.13
✎
13:36
|
Нормальная ситуация, как только процесс 1с 7.7 приближается к 2 гб (по факту 1,5 -1,8) возникает такая ошибка. решение: выгружать частями или применить патч к 7-ке.
|
|||
36
Kerk
27.11.13
✎
13:43
|
(35) Как переписать правила так чтобы остатки выгружались порциями не нашел (плюс все же на 7-ке написано).
Что за патч? Можно ссылку на описание? |
|||
37
Franchiser
гуру
27.11.13
✎
13:46
|
(36) ищи в инете 4gb_patch позволяет выделить для любого бинарника х32 4 гб памяти. На х64 винде работает на других не проверял. при желании могу скинуть на почту
|
|||
38
Franchiser
гуру
27.11.13
✎
13:50
|
(35)Я просто сделал, добавил на форму выбор счета, сами правила с обработчиками выгружаешь в 2 файла - xm1 и ert затем открываешь в 7-ке в результате можешь отдельно выгружать файлы по отдельным субсчетам, т.е. 62.1, 62.2, 62.4. Условие на счет пишешь в алгоритме ВыгрузитьОстаткиПосчету() если говорить о счете 62 и 60
|
|||
39
Franchiser
гуру
27.11.13
✎
13:52
|
все модификации правил я делал в конфигурации Конвертация данных 2.0, в нее же можно подгрузить выгруженный файлы. Файлы выгружаются из справочника "Конвертации из предыдущих версий" 1с 8.2-8.3 как-то так.
|
|||
40
Franchiser
гуру
27.11.13
✎
13:53
|
Выгрузка происходит с помощью универсальной выгрузки данных 1с 7.7
|
|||
41
Franchiser
гуру
27.11.13
✎
13:55
|
напрямую из 1с 7.7 загружать стандартно не советую, т.к. выгрузка идет все равно через временный файл xml с помощью объекат MS XML_DOM который хранится в памяти до момента записи в файл в самом конце.
|
|||
42
Franchiser
гуру
27.11.13
✎
14:03
|
Когда выгрузку будешь производить через универсальную обработку выгрузки 1с 7.7 будет доступен выбор выгрузки по разделам учетов. Каждый раздел учета - набор счетов для выгрузки.
|
|||
43
Kerk
27.11.13
✎
14:10
|
(40) Этой (29) ?
(38) Выгрузка падает при выгрузке конкретного счета 62.6. (39) Правила и обработку получил уже готовые и загрузил в конвертацию. Пытался исправлять в "Конвертации данных 2.1.8.1", после чего заменял модуль обработки 7.7 - в итоге ругалось что не может конвертировать СписокЗначений (Оригинальная обработка без такой проблемы). |
|||
44
Kerk
27.11.13
✎
14:11
|
Сейчас делаю выгрузку счета 62 напрямую через оле, но если скажешь как сделать ограничение выгрузки через правила хотя бы по 2 строк остатков счета 62 - будешь безмерно крут.
|
|||
45
Kerk
27.11.13
✎
14:12
|
(44) "делаю выгрузку" = "кодирую обраотку в 8-ке для переноса данных"
|
|||
46
Kerk
27.11.13
✎
14:36
|
(26) "БИ=БазаБух.CreateObject("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(БазаБух.ВидыСубконто.Контрагенты,,1); БИ.ИспользоватьСубконто(БазаБух.ВидыСубконто.Договоры,,1); " Ошибка при вызове метода контекста (ИспользоватьСубконто) БИ.ИспользоватьСубконто(БазаБух.ВидыСубконто.Контрагенты,,1); по причине: Типы не совпадают (2) |
|||
47
Kerk
27.11.13
✎
14:38
|
(46)+
БазаБух= Новый COMObject("V77.Application"); |
|||
48
Kerk
27.11.13
✎
14:54
|
(46) В общем все плохо - он требует заполнение всех параметров, а 2-й параметр должен быть пустым... засада.
v8: БИ из 8 в 77 |
|||
49
Franchiser
гуру
27.11.13
✎
16:09
|
(44) да обработка та что в 29. Ну на твоем месте я бы применил патч. А вообще кидаешь на форму той обработки реквизит счет, затем пытаешься выгрузить только по нему. Дополнительно частями можешь выгрузить так: так как контрагенты выгружаются по наименованию, то ставишь отбор по буквам алфавита: и выгружаешь сначала контрагентов с одним диапозоном букв потом не забыв очистить комментарий после загрузки в 8-ке выгружаешь другую и тд..
|
|||
50
Злопчинский
27.11.13
✎
16:23
|
правда непонятно что куда выгружается из бух8 в ТиС? или в бух 7.7..?
. 7.7 в части учета простая как три копейки. за это время которое потрачено на взлеты и падения иксемеля, можно уже было тупые выгрузки справочников, доков, проводк налабать... а то чувствую еще часов 30 уйдет на бодание ;-) |
|||
51
Franchiser
гуру
27.11.13
✎
16:45
|
(46)не понял откуда этот код. В универсальной обработке насколько я помню конкретно у субконто контрагенты или договоры редко где обращаются, т.к. там все сделано универсально. В 7.7 есть отладчик.
(50) я так понял из бух 7.7 в бух 8 3.0 |
|||
52
Kerk
27.11.13
✎
16:47
|
(51) Код из примера (26) и к обработке выгрузки из 7.7 никак не связан.
(50) из 7.7 в БП 3.0 на 8.3 |
|||
53
Franchiser
гуру
27.11.13
✎
16:48
|
(46) не пойму зачем ты так код меняешь, тебе нужно поставить условие на текущий выгружаемый субсчет 62.6 и ,например. на наименование 1-го субконто иначе возврат и все.
|
|||
54
Franchiser
гуру
27.11.13
✎
16:49
|
не знаю как в твоих правилах при выгрузке в 8.2 все делалось в алгоритме выгрузитьостаткипосчету()
|
|||
55
Franchiser
гуру
27.11.13
✎
16:50
|
(52) попробуй EvalExpr
|
|||
56
Franchiser
гуру
27.11.13
✎
16:50
|
на сколько я помню так (БазаБух.ВидыСубконто.Контрагенты) писать нельзя
|
|||
57
Franchiser
гуру
27.11.13
✎
16:59
|
БИ.ИспользоватьСубконто(БазаБух.evalexpr("ВидыСубконто.Контрагенты",,1); как то так
|
|||
58
Franchiser
гуру
27.11.13
✎
16:59
|
скобку 1 забыл
|
|||
59
Franchiser
гуру
27.11.13
✎
17:08
|
Можно вообще попробовать без параметра написать 2 раза: БИ.ИспользоватьСубконто();
БИ.ИспользоватьСубконто(); |
|||
60
Kerk
27.11.13
✎
17:25
|
(53) Объясняю: я сейчас иду по 2-м путям: пытаюсь выгрузить данные по стандартным правилам ТОЛЬКО данные по счету 62.6 (без справочников), 2-й путь перенести данные через ОЛЕ напрямую.
Код в (46), (26) нужен для метода с ОЛЕ. |
|||
61
Kerk
27.11.13
✎
17:35
|
(53) (54) Алгоритм "ВыгрузитьОстаткиПоСчету" без "как есть"
// Выгружает остатки по любому счету. Счет записывается в таблицу // проводок, как объект типа "Основной.Счет" (потом он сконвертируется // в соответствии с настройкой конвертации значений счетов). // Остатки по субконто на которых ведется только количественный учет // выгружаются, как отдельные проводки. СчетВводаОстатков = Параметры.СчетВводаОстатков; Счет = Параметры.ПараметрыАлгоритмов.Получить("ТекущийСчет"); РегистрБух = Параметры.ПараметрыАлгоритмов.Получить("Регистр"); Проводки = Параметры.ТаблицаПроводок; Проводки.УдалитьСтроки(); Валюты = СоздатьОбъект("СписокЗначений"); // Остатки БухИт = СоздатьОбъект("БухгалтерскиеИтоги"); БухИт.ИспользоватьСубконто(); БухИт.ИспользоватьСубконто(); БухИт.ИспользоватьСубконто(); БухИт.ВыполнитьЗапрос(Параметры.ДатаВводаОстатков,, Счет); Параметры.ПараметрыАлгоритмов.Установить("БухИт", БухИт); Параметры.ПараметрыАлгоритмов.Установить("Проводки", Проводки); БухИт.ВыбратьСчета(); Пока БухИт.ПолучитьСчет() = 1 Цикл Валюты.УдалитьВсе(); Если Счет.Валютный = 1 Тогда БухИт.ВыбратьВалюты(); Пока БухИт.ПолучитьВалюту() = 1 Цикл Валюты.ДобавитьЗначение(БухИт.Валюта); КонецЦикла; Иначе Валюты.ДобавитьЗначение(ПолучитьПустоеЗначение("Справочник.Валюты")); КонецЕсли; Параметры.ПараметрыАлгоритмов.Установить("ТолькоСумма", 0); Для НомерВалюты = 1 по Валюты.РазмерСписка() Цикл Если Счет.Валютный = 1 Тогда БухИт.ПолучитьВалюту(, Валюты.ПолучитьЗначение(НомерВалюты)); КонецЕсли; СуммовойУчет1 = ?(Счет.КоличествоСубконто() > 0, ?(Счет.ТолькоОбороты(1) = 1, 0, Счет.УчетПоСумме(1)), 0); СуммовойУчет2 = ?(Счет.КоличествоСубконто() > 1, ?(Счет.ТолькоОбороты(2) = 1, 0, Счет.УчетПоСумме(2)), 0); СуммовойУчет3 = ?(Счет.КоличествоСубконто() > 2, ?(Счет.ТолькоОбороты(3) = 1, 0, Счет.УчетПоСумме(3)), 0); КоличествоУровней = 0; КоличествоУровней = КоличествоУровней + ?(Счет.КоличествоСубконто() > 0, ?(Счет.ТолькоОбороты(1) = 1, 0, 1), 0); КоличествоУровней = КоличествоУровней + ?(Счет.КоличествоСубконто() > 1, ?(Счет.ТолькоОбороты(2) = 1, 0, 1), 0); КоличествоУровней = КоличествоУровней + ?(Счет.КоличествоСубконто() > 2, ?(Счет.ТолькоОбороты(3) = 1, 0, 1), 0); Параметры.ПараметрыАлгоритмов.Установить("КоличествоУровней", КоличествоУровней); Если КоличествоУровней = 0 Тогда Параметры.ПараметрыАлгоритмов.Установить("ТекНомерСубконто", 0); ПолучитьИтогиПоСчету(); ДобавитьПроводку(); ИначеЕсли КоличествоУровней > 0 Тогда Если БухИт.ВыбратьСубконто(1) = 1 Тогда Пока БухИт.ПолучитьСубконто(1) = 1 Цикл Если ТипЗначенияСтр(БухИт.Субконто(1)) = "Справочник" Тогда Если БухИт.Субконто(1).ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; КонецЕсли; Если ((СуммовойУчет1 = 1) и (СуммовойУчет2 = 0)) или (КоличествоУровней = 1) Тогда Параметры.ПараметрыАлгоритмов.Установить("ТекНомерСубконто", 1); ПолучитьИтогиПоСчету(); ДобавитьПроводку(); КонецЕсли; Если КоличествоУровней > 1 Тогда БухИт.ВыбратьСубконто(2); Пока БухИт.ПолучитьСубконто(2) = 1 Цикл Если ТипЗначенияСтр(БухИт.Субконто(2)) = "Справочник" Тогда Если БухИт.Субконто(2).ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; КонецЕсли; Если ((СуммовойУчет2 = 1) и (СуммовойУчет3 = 0)) или (КоличествоУровней = 2) Тогда Параметры.ПараметрыАлгоритмов.Установить("ТекНомерСубконто", 2); ПолучитьИтогиПоСчету(); ДобавитьПроводку(); КонецЕсли; Если КоличествоУровней > 2 Тогда БухИт.ВыбратьСубконто(3); Пока БухИт.ПолучитьСубконто(3) = 1 Цикл Если ТипЗначенияСтр(БухИт.Субконто(3)) = "Справочник" Тогда Если БухИт.Субконто(3).ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; КонецЕсли; Параметры.ПараметрыАлгоритмов.Установить("ТекНомерСубконто", 3); ПолучитьИтогиПоСчету(); ДобавитьПроводку(); КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Иначе Если Счет.Код = "25" Тогда Если БухИт.ВыбратьСубконто(2) = 1 Тогда Пока БухИт.ПолучитьСубконто(2) = 1 Цикл Если ТипЗначенияСтр(БухИт.Субконто(2)) = "Справочник" Тогда Если БухИт.Субконто(2).ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; КонецЕсли; Если ((СуммовойУчет1 = 1) и (СуммовойУчет2 = 0)) или (КоличествоУровней = 1) Тогда Параметры.ПараметрыАлгоритмов.Установить("ТекНомерСубконто", 2); ПолучитьИтогиПоСчету(); ДобавитьПроводку(); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; РазделУчета = ОпределитьРазделУчета(); Если ПустоеЗначение(РазделУчета) = 0 Тогда ВходящиеДанные = СоздатьОбъект("СписокЗначений"); ВходящиеДанные.Установить("ВходящиеОстатки", Проводки); ВходящиеДанные.Установить("Счет", Счет); ВходящиеДанные.Установить("Дата", БухИт.НачДата-1); ВходящиеДанные.Установить("РазделУчета", РазделУчета); ВходящиеДанные.Установить("ОтражатьВНалоговомУчете", 1); ВходящиеДанные.Установить("ОтражатьВБухгалтерскомУчете", 1); ВходящиеДанные.Установить("ОтражатьПоСпециальнымРегистрам", 1); Если (РазделУчета = "РасчетыСПерсоналомПоОплатеТрудаИДепонентам") И (Параметры.ДатаВводаОстатков <> Параметры.ДатаКонцаПериодаВыгрузки) Тогда ВходящиеДанные.Установить("ОтражатьПоСпециальнымРегистрам", 0); КонецЕсли; Если РазделУчета = "РасчетыПоНалогамИСборам" Тогда ВходящиеДанные.Установить("ОтражатьВНалоговомУчете", 0); КонецЕсли; Если (РазделУчета = "НезавершенноеПроизводство") ИЛИ (РазделУчета = "РасходыБудущихПериодов") Тогда // делим по подразделениям ПроводкиПоПодразделению = СоздатьОбъект("ТаблицаЗначений"); Проводки.Выгрузить(ПроводкиПоПодразделению); Проводки.НоваяКолонка("ПодразделениеОрганизации"); ПроводкиПоПодразделению.УдалитьСтроки(); Проводки.ВыбратьСтроки(); Пока Проводки.ПолучитьСтроку() = 1 Цикл Для НомерСтроки = 1 По Проводки.СубконтоДт.КоличествоСтрок() Цикл ТекЗнач = Проводки.СубконтоДт.ПолучитьЗначение(НомерСтроки, "Значение"); Если ТипЗначенияСтр(ТекЗнач) = "Справочник" Тогда Если ТекЗнач.Вид() = "Подразделения" Тогда Проводки.ПодразделениеОрганизации = ТекЗнач; Прервать; ИначеЕсли ТекЗнач.Вид() = "РасходыБудущихПериодов" Тогда Если ТипЗначенияСтр(ТекЗнач.Субконто1) = "Справочник" Тогда Если ТекЗнач.Субконто1.Вид() = "Подразделения" Тогда Проводки.ПодразделениеОрганизации = ТекЗнач.Субконто1; Прервать; КонецЕсли; КонецЕсли; Если ТипЗначенияСтр(ТекЗнач.Субконто2) = "Справочник" Тогда Если ТекЗнач.Субконто2.Вид() = "Подразделения" Тогда Проводки.ПодразделениеОрганизации = ТекЗнач.Субконто2; Прервать; КонецЕсли; КонецЕсли; Если ТипЗначенияСтр(ТекЗнач.Субконто3) = "Справочник" Тогда Если ТекЗнач.Субконто3.Вид() = "Подразделения" Тогда Проводки.ПодразделениеОрганизации = ТекЗнач.Субконто3; Прервать; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Проводки.Сортировать("ПодразделениеОрганизации"); ТекПодразделение = ""; Проводки.ВыбратьСтроки(); Пока Проводки.ПолучитьСтроку() = 1 Цикл НомСтроки = 0; НомСтроки = Проводки.НомерСтроки; ПроводкиПоПодразделению.НоваяСтрока(); НомСтрокиПодразделения = ПроводкиПоПодразделению.КоличествоСтрок(); Для НомКолонки = 1 по ПроводкиПоПодразделению.КоличествоКолонок() Цикл ПроводкиПоПодразделению.УстановитьЗначение(НомСтрокиПодразделения, НомКолонки, Проводки.ПолучитьЗначение(НомСтроки, НомКолонки)); КонецЦикла; ТекПодразделение = Проводки.ПодразделениеОрганизации; Если НомСтроки < Проводки.КоличествоСтрок() Тогда СледПодразделение = Проводки.ПолучитьЗначение(НомСтроки + 1, "ПодразделениеОрганизации"); Иначе СледПодразделение = ""; КонецЕсли; Если ТекПодразделение <> СледПодразделение Тогда Если ПроводкиПоПодразделению.КоличествоСтрок() > 0 Тогда ВходящиеДанные.Установить("ВходящиеОстатки", ПроводкиПоПодразделению); ВходящиеДанные.Установить("ПодразделениеОрганизации", ТекПодразделение); ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ВводНачальныхОстатков"); ПроводкиПоПодразделению.УдалитьСтроки(); КонецЕсли; КонецЕсли; КонецЦикла; Иначе ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ВводНачальныхОстатков"); КонецЕсли; Иначе ВходящиеДанные = СоздатьОбъект("СписокЗначений"); ВходящиеДанные.Установить(РегистрБух, Проводки); ВходящиеДанные.Установить("Счет", Счет); ВходящиеДанные.Установить("Дата", БухИт.НачДата-1); ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ОперацияБух"); КонецЕсли; КонецЦикла; |
|||
62
Kerk
27.11.13
✎
17:36
|
(53) (54) Покажи куда и что вставить, что бы отбор сделать хотя бы по наименованию контрагента...
я с кодом 7.7 плохо дружу. |
|||
63
Йохохо
27.11.13
✎
18:07
|
этот алгоритм вызывается из ПВД? посмотри это место в конвертации, открой рабочий ert и поправь только отбор на счета.
код то простой Если ПустоеЗначение(РазделУчета) = 0 Тогда // в этом Если вся выгрузка. по быстрому тут и фильтруй Лучше добиться чтобы ert мог корректно создавать из конвертации, один раз перенести пол дела, потом еще выверять, догружать и т.п. |
|||
64
Kerk
27.11.13
✎
18:28
|
(63) Да, ПВД_ост_РасчетыСПоставщиками_ПередОбработкойПравила
Для мня, к сожалению, код из 7.7 не такой простой. "открой рабочий ert и поправь только отбор на счета. " - если ты про строку в группе "Правила выгрузки данных", то там я ставлю только 1 галочку "Расчеты с покупателями и заказчиками" и не выгружается. Перед этим справочники и остальные остатки выгрузились успешно. |
|||
65
Kerk
27.11.13
✎
18:31
|
(63) "Если ПустоеЗначение(РазделУчета) = 0 Тогда // в этом Если вся выгрузка. по быстрому тут и фильтруй "
Не понимаю я, как в коде "Если ПустоеЗначение(РазделУчета) = 0" или в коде ниже поставить условия на количество записей остатков(или, как предлагалась ранее, отбор по наименованию). |
|||
66
Franchiser
гуру
28.11.13
✎
01:12
|
Навскидку:
Если ТипЗначенияСтр(БухИт.Субконто(2)) = "Справочник" Тогда Если БухИт.Субконто(2).ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; Если Тип(БухИт.Субконто(2)) = "Справочники.контрагенты" Тогда Если БухИт.Субконто(2)<>"абвглежз" тогда Продолжить; конецесли; КонецЕсли; КонецЕсли; |
|||
67
Franchiser
гуру
28.11.13
✎
01:27
|
Прошу прощения, субконто 2 у тебя договор, нужно в субконто 1:
Если ТипЗначенияСтр(БухИт.Субконто(1)) = "Справочник" Тогда Если БухИт.Субконто(1).ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; Если ТипЗначенияСтр(БухИт.Субконто(1)) = "Справочник" Тогда Если БухИт.Субконто(1).Вид() = "Контрагенты" Тогда Если БухИт.Субконто(1)<>"абвглежз" тогда Продолжить; КонецЕсли; КонецЕсли; КонецЕсли; |
|||
68
Franchiser
гуру
28.11.13
✎
01:30
|
+ БухИт.Субконто(1).наименование<>"абвглежз"
|
|||
69
Franchiser
гуру
28.11.13
✎
01:46
|
Если на нравится выгружать по наименованию, то можно тут же считать контрагентов и выгружать порциями, но по мне так надежнее.
|
|||
70
Franchiser
гуру
28.11.13
✎
01:53
|
Для понимания: В начале идет цикл по контрагентам (субконто 1) по данным бухитогов потом по договорам (субконто 2). потом ты попадешь в:
Если ((СуммовойУчет2 = 1) и (СуммовойУчет3 = 0)) или (КоличествоУровней = 2) Тогда Параметры.ПараметрыАлгоритмов.Установить("ТекНомерСубконто", 2); ПолучитьИтогиПоСчету(); ДобавитьПроводку(); КонецЕсли; та заполнится таблица поводок, по данным которой по правилам ПКО будут созданы документы ввод начальных остатков по каждому субсчету по разделу Расчеты с покупателями и заказчиками. |
|||
71
Бертыш
28.11.13
✎
08:31
|
(0) У меня такая же напасть с ЗИКом
|
|||
72
Kerk
04.12.13
✎
10:31
|
(66)-(70) Спасибо разобрался с твоей помощью.
Но ошибка похоже в самих правилах, т.к. я делаю выгрузку только по 500 контрагентам (договоров редко где есть больше 1-го), в итоге выгрузка падает на 98137 элементе не дойдя до конца процедуры "ВыгрузитьОстаткиПоСчету". Сейчас поставлю на 100, хоть выгружать так 2300 контрагентов не собираюсь, но уверен что опять 1с 7.7 упадет. |
|||
73
Kerk
04.12.13
✎
13:39
|
(72) Ну хоть по 250 выгружает, и то можно.
|
|||
74
Kerk
04.12.13
✎
18:58
|
*вырезано цензурой* эта семерка... :(
После выгрузки и закрытия обработки 1cv7.exe потребляет памяти 862 000 KB После рестарта 64 752 KB. И что бы выгрузить партиями, надо каждый раз перезапускать 7-ку. *вырезано цензурой* |
|||
75
Kerk
04.12.13
✎
18:59
|
Есть команда ОсвободитьОперативнуюПамять() ???
|
|||
76
Kerk
27.12.13
✎
10:31
|
Вдруг кому пригодится обход проблемы в (48)
БИ = БазаОле.CreateObject("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто("Контрагенты"); //,Контр.ТекущийЭлемент(),1,0 БИ.ИспользоватьСубконто("Договоры"); // ,Дог.ТекущийЭлемент(),1,0 БИ.ВыполнитьЗапрос(Дата(2013,01,01),Дата(2013,01,01),"62.1"); // ,,,1,,"С" БИ.ВыбратьСубконто(1); Пока БИ.ПолучитьСубконто(1)=1 Цикл Контр=БИ.Субконто(1); БИ.ВыбратьСубконто(2); Пока БИ.ПолучитьСубконто(2)=1 Цикл Договор=БИ.Субконто(2); //Тут делаем все что надо КонецЦикла; КонецЦикла; |
|||
77
ЧеловекДуши
27.12.13
✎
10:51
|
(0) Оптимизируй :)
Очищай ТЗ и СЗ... Не допускай структуру типа ТЗ в ТЗ + Еще много ТЗ... (придется чистить, каждую ТЗ) :) При записи XML средствами 1С, т.е. через V7PLUS.DLL. Ты должен понимать, что сеё чудо пишет по сути в памяти, из этого следует, что приложение 32-ух битное ограничено 2-мя Гигабайтами Оперативной Памяти :) Но есть выход... Можно выгружать через ВК от ромикса, быстро и просто... http://x-romix.narod.ru/ http://x-romix.narod.ru/OpenXML.rar ...Пример, в архиве... |
|||
78
ЧеловекДуши
27.12.13
✎
10:52
|
+(77) При объявлении ТЗ, старайся объявлять Тип у колонки, это экономит место :)
|
|||
79
zak555
27.12.13
✎
10:54
|
> при выгрузки расчетов с покупателями и заказчиками, 1С 7.7 через 4-5 часов падает с логом
там такие же кривые правила, как в в Тис->УТ поправь и будет всё летать |
|||
80
Kerk
27.12.13
✎
11:30
|
(79) Готов напоить пивом того, кто сможет скорректировать (так чтобы не падало и переносило корректные остатки) стандартные правила переноса остатков из Бух 7.7 в БП 3.0 на 8.3.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |