|   |   | 
| 
 | 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.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |