2) Есть строки с нулевыми значениями всех функций.
да, есть и пустые. Но почему же тогда такая маленькая разница получается? Пустых, если брать данные из Экселя около 9 000, а разница выходит 17 всего... да и до 12 000 и количество пациентов и все суммы совпадают с Экселем
цикл с 1 по 20000 номер в справочнике, // 20 - берем кол-во строк, вообще-то комментарий был написан нашим программистом для пробной версии на 20 строк
а что, можно проще?
igmig65,
Цитата(igmig65 @ 21.10.13, 13:43)
итог в реестре (отчете), с итогом по колонке этого же реестра, сохраненного в эксель и пересчитанной автосуммой по колонке
Спр=СоздатьОбъект("Справочник.Пацієнти"); н=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))); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Сообщить("Файл "+Строка(ИмяФайла)+" завантажено"); Иначе Сообщить("Файл не вибрано."); КонецЕсли;
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С программа проверяет наличие пациента в базе. Если он есть, то ему добавляются записи, если же он отсутствует, он добавляется в базу. Скажу так: я гружу таблицу в ЧИСТУЮ базу!
У меня есть база данных на 18000 контрагентов. Иногда бывает нужно перезагрузить ее из Экселевского файла (скорректированную). Но вот заметил несоответствие: в mxl файле сумма, скажем по столбцу одна, а при сохранении в xls, другая. И количество контрагентов не соответствует. Подскажите, какое максимальное количество строк в справочнике поддерживает 1с 7.7, и может лии погрешность быть из-за превышения этого количества. И как это можно побороть?
ЗЫ. При загрузке 16000 строк в базу грузится только 15982. При загрузке до 12000 все грузится корректно.
Пять копеек На скрине конфигурации не вижу ни одного реквизита у справочника, а в форме списка куча колонок Нельзя просто так добавить колонку в форму списка (конечно если это не рассчитываемое поле). Такой справочник не будет ничего сохранять кроме наименования и кода
Сенк, учту, я же только учусь. Товарищ у меня силен в 7.7, а на 8.ххх не желает переходить, говорит все очень сложно
Пробовал с создания справочника, но дальше 1 строки с кодом пациента и его наименованием дело не идет...
И скажите, пожалуйста, можно ли, имея базу в экселе зарузить в пустую конфигурацию с помощью внешней обработки, и на ее основании создать конфигурацию?
Прошу прощения, может пишу не в ту тему, по возможности перенесите ее в правильную ветку форума. У меня такая проблема. Есть база на платформе 7.7, я с ней работаю давно. Но меня не устраивают ее функциональные возможности. Перенести конфигурацию в 8.2 для меня проблематично, и хоть и я не совсем силен в программировании, но хотел бы овладеть ею с "нуля". Подскажите, как правильно начать создавать конфигурацию: как в 7.7 (Создать справочник, документ, регистр) или как то по другому. Вкратце опишу работу моей базы. Для начала уточню, я работаю в медицине, поэтому конфигурация как бы вообще не типовая. Есть справочник Пациентов, в котором каждому пациенту врач назначает препараты из 7 групп. На каждого пациента назначается план на год (в упаковках) и одноразово выписывается рецепт на Н-ное количество упаковок. Препараты выписываются по фиксированной цене. По истечению срока, например месяц, этому же пациенту выписываются другие рецепты (или те же препараты, или другие, если предыдущие не подошли). Препараты суммируются по наименованиям. Из этих цифр вычисляется Средняя стоимость лечения 1 больного на год. По возвращении рецептов из аптек, проставляются фактическая стоимость препарата, купленного в аптеке. Из этих цифр складывается средняя стоимость лечения по факту на 1 больного и в конце складывается количество выписанных рецептов. Если сможете мне помочь, буду премного благодарен. Если нужны дополнительные сведения, с удовольствием предоставлю. Есть база в Екселе, и могу скинуть конфигу с 7.7.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!