У меня есть база данных на 18000 контрагентов. Иногда бывает нужно перезагрузить ее из Экселевского файла (скорректированную). Но вот заметил несоответствие: в mxl файле сумма, скажем по столбцу одна, а при сохранении в xls, другая. И количество контрагентов не соответствует. Подскажите, какое максимальное количество строк в справочнике поддерживает 1с 7.7, и может лии погрешность быть из-за превышения этого количества. И как это можно побороть?
ЗЫ. При загрузке 16000 строк в базу грузится только 15982. При загрузке до 12000 все грузится корректно.
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
у mxl файл позволяет записать более 100 тыс.строк точно. Насчет суммирования числовых значений - mxl и xls могут по разному воспринимать тип значения в ячейке, например xls может какие-то значения воспринимать как дату.
Личные бесплатные консультации не даю, для этого есть форум!
ЗЫ. При загрузке 16000 строк в базу грузится только 15982. При загрузке до 12000 все грузится корректно.
попробуйте автовисоту стрічки виставити чи висоту поставити 4 (якщо не помиляюсь, друге твередження вірніше), в мене була проблема колись із збереженням звіту із великою кількістю стрічок в ексель; правда в мене 1С-ка взагалі зависала при такому збереженні
Сообщение отредактировал mister-x - 20.10.13, 20:10
ничего не понятно. вы говорите о выгрузке и загрузке в вопросе одновременно. при загрузке в базу ошибки?
или при сохранении в xls?
Цитата
ЗЫ. При загрузке 16000 строк в базу грузится только 15982. При загрузке до 12000 все грузится корректно.
может тип ячеек с какой-то строки в экселе уже другой.. по какой-то причине. не читается просто. и потом - код обработки загрузки как читает экслевский файл? если там условие есть какое-то, то может прочесть и не сохранить в 1С. или даже не прочесть. возможно и выборочно. И это может совсем нет от начинки файла загрузки зависеть, а от кода.
а при чем высота строки? У меня она и так автоматически выставляется
тю, дійсно переплутав програмне завантаження/вивантаження із екселя/в ексель із стандартним збереженням в ексель, вибачайте
Цитата(serkus @ 20.10.13, 17:10)
Иногда бывает нужно перезагрузить ее из Экселевского файла (скорректированную). Но вот заметил несоответствие: в mxl файле сумма, скажем по столбцу одна, а при сохранении в xls, другая.
якщо правильно зрозумів, ви завантажуєте із екселя в 1С дані (куди саме - в документ(и) (їх створюєте), звіт?), а потім їх зберігаєте із 1С стандартним способом в формат ексель і порівнюєте результат?
Сообщение отредактировал mister-x - 21.10.13, 9:59
mister-x, у нас база данных пациентов по пилотному проекту гипертоников. Каждые 10 дней я отсылаю этот реестр (сформированный базой 1С, и сохраненный как xls) в областной центр. Так вот: при формировании реестра в конце есть итоговая строка. При открытии в Экселе, когда я вставляю функцию суммирования ячеек, то эти суммы отличаются. И мне приходится корректировать таблицу Эксель в соответствии с базой.
И вот мне пришлось корректировать эту базу по количеству пациентов (умершие, выбившие) - уменьшилось количество. И теперь при загрузке их из Экселя, после 12000 1С загружает их не все...
Цитата(mister-x @ 21.10.13, 10:41)
ви завантажуєте із екселя в 1С дані (куди саме - в документ(и) (їх створюєте), звіт?)
да, я выгружаю их в "Звіт", а потом
Цитата(mister-x @ 21.10.13, 10:41)
їх зберігаєте із 1С стандартним способом в формат ексель і порівнюєте результат?
Цитата(Домовик @ 21.10.13, 9:56)
может тип ячеек с какой-то строки в экселе уже другой..
тип ячеек по всей таблице однотипный, начиная с 1 строки и до конца документа
забыл сказать: в таблице присутствуют формулы для подсчета, хотя не пойму, как они могут мешать? Ведь до 12 000 строк все загружается корректно!
При загрузке в 1С программа проверяет наличие пациента в базе. Если он есть, то ему добавляются записи, если же он отсутствует, он добавляется в базу. Скажу так: я гружу таблицу в ЧИСТУЮ базу!
Опишите подробнее что вы делаете? я понял так: 1. Вы корректируете данные в Эксель. 2. Грузите эксель файл в 1с. И сразу вопрос - что именно делает обработка: добавляет удаляет элементы справочника в соответствии с файлом эксель? 3. Формируете Реестр в 1с. Реестр - это отчет? если да, то отчет по чему по справочнику? документам?
Цитата
И вот мне пришлось корректировать эту базу по количеству пациентов (умершие, выбившие) - уменьшилось количество. И теперь при загрузке их из Экселя, после 12000 1С загружает их не все...
Куда именно в 1с загружает не всех...может в обработке на форме есть ТЗ и сначала все грузится в ТЗ, а потом оттуда отчет? который вы сохраняете в эксель и сравниваете? короче телепатировать можно долго...а я например так толком и не понял, что и куда вы грузите и выгружаете. Ответ - гружу в 1с не принимается...
код обработки загрузки в справочник, и еще, какие итоги по колонке вы сравниваете: 1. итог файла эксель который вы грузите в 1с с итогом файла эксель, сохраненного из реестра, сформированного в 1с? 2. или же итог в реестре (отчете), с итогом по колонке этого же реестра, сохраненного в эксель и пересчитанной автосуммой по колонке
Спр=СоздатьОбъект("Справочник.Пацієнти"); н=1; //_уч=Участок; Экс=СоздатьОбъект("Excel.Application"); РабочаяКнига=Экс.Workbooks; ИмяВыбрФайла = ""; ИмяПути=""; ИмяФайла=""; //ФС.ВыбратьФайл(0, ИмяВыбрФайла, ИмяПути, "Выберите файл","Все файлы (*.*)!*.*", , ); Если ФС.ВыбратьФайл(0, ИмяВыбрФайла, ИмяПути, "Выберите файл","Все файлы (*.*)!*.*", , ) = 1 Тогда ПутьДБ = ИмяПути + ИмяВыбрФайла; РабочаяКнига.Open(ПутьДБ,0,1); Лист=Экс.WorkSheets(1); // НомерЛиста //Назва и т.п. - это номера колонок!! Назва=2; _3=3; _4=4; _5=5; _6=6; _7=7; _8=8; _9=9; _10=10; _11=11; _12=12; _13=13; _15=15; _17=17; _19=19; _21=21; _23=23; _25=25; _27=27; _29=29; _31=31; _33=33; _34=34; _35=35; _36=36; //_=; Для н=1 по 20000 Цикл // 20 - берем кол-во строк Если (н>=НачНом) И (н<=КонНом) Тогда Если ПустоеЗначение(Строка(Лист.Cells(н,Назва).Value))=0 Тогда Спр.НайтиПоНаименованию(СокрП(Строка(Лист.Cells(н,Назва).Value))); Если Спр.Выбран()=1 Тогда Если ПустоеЗначение(Лист.Cells(н,_3).Value)=0 Тогда Спр.Ена=Число(Лист.Cells(н,_3).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_4).Value)=0 Тогда Спр.Ліз=Число(Лист.Cells(н,_4).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_5).Value)=0 Тогда Спр.Біс=Число(Лист.Cells(н,_5).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_6).Value)=0 Тогда Спр.Мет=Число(Лист.Cells(н,_6).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_7).Value)=0 Тогда Спр.Неб=Число(Лист.Cells(н,_7).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_8).Value)=0 Тогда Спр.Ніф=Число(Лист.Cells(н,_8).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_9).Value)=0 Тогда Спр.Амл=Число(Лист.Cells(н,_9).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_10).Value)=0 Тогда Спр.ЕТД=Число(Лист.Cells(н,_10).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_11).Value)=0 Тогда Спр.ЛТД=Число(Лист.Cells(н,_11).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_12).Value)=0 Тогда Спр.ЛТА=Число(Лист.Cells(н,_12).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_13).Value)=0 Тогда _ен=Спр.Еналаприл+Число(Лист.Cells(н,_13).Value); Спр.Еналаприл=_ен; //Спр.Еналаприл=Число(Лист.Cells(н,_13).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_15).Value)=0 Тогда _лі=Спр.Лізиноприл+Число(Лист.Cells(н,_15).Value); Спр.Лізиноприл=_лі; //Спр.Лізиноприл=Число(Лист.Cells(н,_15).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_17).Value)=0 Тогда _бі=Спр.Бісопролол+Число(Лист.Cells(н,_17).Value); Спр.Бісопролол=_бі; //Спр.Бісопролол=Число(Лист.Cells(н,_17).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_19).Value)=0 Тогда _ме=Спр.Метопролол+Число(Лист.Cells(н,_19).Value); Спр.Метопролол=_ме; //Спр.Метопролол=Число(Лист.Cells(н,_19).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_21).Value)=0 Тогда _не=Спр.Небівалол+Число(Лист.Cells(н,_21).Value); Спр.Небівалол=_не; //Спр.Небівалол=Число(Лист.Cells(н,_21).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_23).Value)=0 Тогда _ні=Спр.Ніфідіпін+Число(Лист.Cells(н,_23).Value); Спр.Ніфідіпін=_ні; //Спр.Ніфідіпін=Число(Лист.Cells(н,_23).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_25).Value)=0 Тогда _ам=Спр.Амлодипін+Число(Лист.Cells(н,_25).Value); Спр.Амлодипін=_ам; //Спр.Амлодипін=Число(Лист.Cells(н,_25).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_27).Value)=0 Тогда _ЕналТаДіур=Спр.ЕналТаДіур+Число(Лист.Cells(н,_27).Value); Спр.ЕналТаДіур=_ЕналТаДіур; //Спр.ЕналТаДіур=Число(Лист.Cells(н,_27).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_29).Value)=0 Тогда _ЛізТаДіур=Спр.ЛізТаДіур+Число(Лист.Cells(н,_29).Value); Спр.ЛізТаДіур=_ЛізТаДіур; //Спр.ЛізТаДіур=Число(Лист.Cells(н,_29).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_31).Value)=0 Тогда _ЛізТаАмл=Спр.ЛізТаАмл+Число(Лист.Cells(н,_31).Value); Спр.ЛізТаАмл=_ЛізТаАмл; //Спр.ЛізТаАмл=Число(Лист.Cells(н,_31).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_33).Value)=0 Тогда Спр.СВЛнаРік=Число(Лист.Cells(н,_33).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_34).Value)=0 Тогда _факт=Спр.СВЛфакт+Число(Лист.Cells(н,_34).Value); Спр.СВЛфакт=_факт; //Спр.СВЛфакт=Число(Лист.Cells(н,_25).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_35).Value)=0 Тогда _вип=Спр.КРвиписаних+Число(Лист.Cells(н,_35).Value); Спр.КРвиписаних=_вип; //Спр.КРвиписаних=Число(Лист.Cells(н,_26).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_27).Value)=0 Тогда _від=Спр.КРвідпущених+Число(Лист.Cells(н,_36).Value); Спр.КРвідпущених=_від; //Спр.КРвідпущених=Число(Лист.Cells(н,_36.Value); КонецЕсли; Спр.Записать(); Сообщить("Найдено: " + СокрП(Строка(Лист.Cells(н,Назва).Value))); Иначе Спр.Новый(); Спр.Наименование=Строка(Лист.Cells(н,Назва).Value); Если ПустоеЗначение(Лист.Cells(н,_3).Value)=0 Тогда Спр.Ена=Число(Лист.Cells(н,_3).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_4).Value)=0 Тогда Спр.Ліз=Число(Лист.Cells(н,_4).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_5).Value)=0 Тогда Спр.Біс=Число(Лист.Cells(н,_5).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_6).Value)=0 Тогда Спр.Мет=Число(Лист.Cells(н,_6).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_7).Value)=0 Тогда Спр.Неб=Число(Лист.Cells(н,_7).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_8).Value)=0 Тогда Спр.Ніф=Число(Лист.Cells(н,_8).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_9).Value)=0 Тогда Спр.Амл=Число(Лист.Cells(н,_9).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_10).Value)=0 Тогда Спр.ЕТД=Число(Лист.Cells(н,_10).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_11).Value)=0 Тогда Спр.ЛТД=Число(Лист.Cells(н,_11).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_12).Value)=0 Тогда Спр.ЛТА=Число(Лист.Cells(н,_12).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_13).Value)=0 Тогда Спр.Еналаприл=Число(Лист.Cells(н,_13).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_15).Value)=0 Тогда Спр.Лізиноприл=Число(Лист.Cells(н,_15).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_17).Value)=0 Тогда Спр.Бісопролол=Число(Лист.Cells(н,_17).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_19).Value)=0 Тогда Спр.Метопролол=Число(Лист.Cells(н,_19).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_21).Value)=0 Тогда Спр.Небівалол=Число(Лист.Cells(н,_21).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_23).Value)=0 Тогда Спр.Ніфідіпін=Число(Лист.Cells(н,_23).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_25).Value)=0 Тогда Спр.Амлодипін=Число(Лист.Cells(н,_25).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_27).Value)=0 Тогда Спр.ЕналТаДіур=Число(Лист.Cells(н,_27).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_29).Value)=0 Тогда Спр.ЛізТаДіур=Число(Лист.Cells(н,_29).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_31).Value)=0 Тогда Спр.ЛізТаАмл=Число(Лист.Cells(н,_31).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_33).Value)=0 Тогда Спр.СВЛнаРік=Число(Лист.Cells(н,_33).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_34).Value)=0 Тогда Спр.СВЛфакт=Число(Лист.Cells(н,_34).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_35).Value)=0 Тогда Спр.КРвиписаних=Число(Лист.Cells(н,_35).Value); КонецЕсли; Если ПустоеЗначение(Лист.Cells(н,_36).Value)=0 Тогда Спр.КРвідпущених=Число(Лист.Cells(н,_36).Value); КонецЕсли; //Спр.=_; Спр.Записать(); Сообщить("Добавлено нове найменування: " + СокрП(Строка(Лист.Cells(н,Назва).Value))); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Сообщить("Файл "+Строка(ИмяФайла)+" завантажено"); Иначе Сообщить("Файл не вибрано."); КонецЕсли;
цикл с 1 по 20000 номер в справочнике, // 20 - берем кол-во строк, вообще-то комментарий был написан нашим программистом для пробной версии на 20 строк
а что, можно проще?
igmig65,
Цитата(igmig65 @ 21.10.13, 13:43)
итог в реестре (отчете), с итогом по колонке этого же реестра, сохраненного в эксель и пересчитанной автосуммой по колонке
тому менше стрічок завантажує. Де задаються НачНом і КонНом - я так розумію номер стрічки в екселі від якої завантажувати і до якої завантажувати, в обробці-звіті?
Сообщение отредактировал mister-x - 21.10.13, 13:36
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!