Имя: Пароль:
1C
1C 7.7
v7: Можно ли исправить загруженные данные повторной загрузкой?
Ø (Волшебник 19.06.2015 22:11)
,
0 Юлия Цветочек
 
18.06.15
21:17
Что будет при повторной загрузки из ексел в один и тот же документ?

Случайно вели не те данные.
1 Casey1984
 
18.06.15
21:18
код загрузки будет?
2 Волшебник
 
модератор
18.06.15
21:18
всякое может быть
3 Рэйв
 
18.06.15
21:18
(0)Перезапишется. Неужели женская логика пасует?
4 Юлия Цветочек
 
18.06.15
21:19
(1) Нет возможности его увидеть - 1с7 в головном офисе.
5 Злопчинский
 
18.06.15
21:19
(0) а хз что будет. зависит от того как написано.
как вариант - убить нафиг неправильный документ. удалить.
и загрузить заново. он появиятся правильно.
6 Casey1984
 
18.06.15
21:19
Ну тады давай голосовалку)
7 Рэйв
 
18.06.15
21:20
(5)(6) Хорош тут гребни распускать
8 Юлия Цветочек
 
18.06.15
21:20
(3) Я так же думаю. Но, лучше узнать у специалистов). Форум ими "кишит№). А у меня знаний таких нет.
9 Рэйв
 
18.06.15
21:21
(8)Ой...Ты в адинес скажи еще- "Ничего не понимаю":-)
10 ДенисЧ
 
18.06.15
21:21
А мне кажется, что создастся новый документ...
А зная ТС - и не один...
11 Casey1984
 
18.06.15
21:21
(8) лучше сначала код/алгоритм работы загрузки, а то может её криворуко написали)
12 Casey1984
 
18.06.15
21:22
(8) мне бы твои проблемы)
13 Юлия Цветочек
 
18.06.15
21:25
(5) Принцип такой. Мы приносим флэшки с данными. При нас в базу 1с7 с них считывают-загружают фамилии и числа.... Как это происходит, не знаю. Может в базу добавляется, а может - формируется документ... Второй вариант был бы для нас удачей - удалим и всё.
Завтра пригласили ручками 762 записи исправлять...Вот, и думаю - может быть, повторной загрузкой всё исправить?
14 Casey1984
 
18.06.15
21:26
(13) архив, копия и пробуй)
15 Рэйв
 
18.06.15
21:27
(13>>Как это происходит, не знаю

для начала надо бы узнать.
16 Рэйв
 
18.06.15
21:28
(13)А потом сесть и посмотреть откуда что берется и куда переносится.
17 Юлия Цветочек
 
18.06.15
21:29
(9) Я прекрасно осознаю, что кодить в 1с почти не умею.
Только понимаю чужие коды - читаю их, разбираю, тогда всё ясно)
А так, можно сказать, неграмотная в этом деле в разрезе самостоятельности)
18 Рэйв
 
18.06.15
21:29
А ух только потом - "ИСПРАВИТЬ" :-))
19 Рэйв
 
18.06.15
21:30
(17)Если честно, то у меня большое ощущение, что ты притворяешься:-)
20 Юлия Цветочек
 
18.06.15
21:32
(14) Завтра планирую попробовать выгрузку или архив сделать по-партизански... Боязно как-то.... А так, с утра и довечера - фамилии-цифры... Жестоко, как-то(((
21 Casey1984
 
18.06.15
21:32
(20) ну если заплотют, то не жесть)
22 Юлия Цветочек
 
18.06.15
21:35
(21) Косяк был с нашей стороны - мы данные дали накопительные с начала года, а надо только за МАЙ месяц - ведомость проворонили настроить. спешили....
23 Рэйв
 
18.06.15
21:37
(22)Мое мнение конечно можешь игнорировать. :-)) Но тем не менее.
24 Юлия Цветочек
 
18.06.15
21:38
Всем спасибо за подсказки.
Завтра всё решится - документ, то удалим. А так, после архивации начнем с повторной загрузки, потом по результатам - или ручками придется, или "нам повезет" - всё перезагрузится с флэшки)
25 Рэйв
 
18.06.15
21:39
хм...
26 Dmitry77
 
18.06.15
22:48
архивы они все переписывают... осторожнее с ними...
особенно если в справочник загрузили... -то ручками все ручками
27 ЧеловекДуши
 
19.06.15
06:28
(0) Посмотри Код, обычно пишут "Документ.Новый()" и усе :)
При этом помечают старый на удаление.
28 Юлия Цветочек
 
19.06.15
20:28
Вот, спионерила код)
Посмотрите, пожалуйста, можно ли повторной загрузкой исправить неправильно ранее загруженные данные?:
Перем НомерРедактора, ДетСад, Каталог, ИмяФайла;
//******************************
Функция ОшибкиПолейБазы(Реестр, ИмяФайла, ДетСад)
    Перем НазваниеПоля, Тип, Длина, Точность; Ошибка=0; Реестр.ОписаниеПоля(1,НазваниеПоля,Тип,Длина,Точность);
    Если НазваниеПоля<>"KOD" Тогда
        Ошибка=1; Сообщить("Ошибка файла "+ИмяФайла+": Название 1-го столбца - "+НазваниеПоля+", должно быть - KOD (все буквы латинские)","!")
    КонецЕсли;
    Если Тип<>1 Тогда
        Ошибка=1; Сообщить("Ошибка файла "+ИмяФайла+": Тип данных 1-го столбца должен ,быть целым положительным числом","!")
    КонецЕсли;
    
    Реестр.ОписаниеПоля(3,НазваниеПоля,Тип,Длина,Точность);
    Если НазваниеПоля<>"SUMNAC" Тогда
        Ошибка=1; Сообщить("Ошибка файла "+ИмяФайла+": Название 3-го столбца - "+НазваниеПоля+", должно быть - SUMNAC (все буквы латинские)","!")
    КонецЕсли;
    Если Тип<>1 Тогда
        Ошибка=1; Сообщить("Ошибка файла "+ИмяФайла+": Тип данных 3-го столбца должен быть числом")
    Иначе
        Если Точность<>2 Тогда
            Ошибка=1; Сообщить("Ошибка файла "+ИмяФайла+": Точность дробной части 3-го столбца - "+Точность+" знаков после запятой, должна быть 2 знака (копейки)","!")
        КонецЕсли;
    КонецЕсли;
    
    Реестр.ОписаниеПоля(4,НазваниеПоля,Тип,Длина,Точность);
    Если НазваниеПоля<>"SUMOPL" Тогда
        Ошибка=1; Сообщить("Ошибка файла "+ИмяФайла+": Название 4-го столбца - "+НазваниеПоля+", должно быть - SUMOPL (все буквы латинские)","!")
    КонецЕсли;
    Если Тип<>1 Тогда
        Ошибка=1; Сообщить("Ошибка файла "+ИмяФайла+": Тип данных 4-го столбца должен быть числом","!")
    Иначе
        Если Точность<>2 Тогда
            Ошибка=1; Сообщить("Ошибка файла "+ИмяФайла+": Точность дробной части 4-го столбца - "+Точность+" знаков после запятой, должна быть 2 знака (копейки)","!")
        КонецЕсли;
    КонецЕсли;
    Если Ошибка=1 Тогда
        Сообщить("Данные по "+ДетСад.Наименование+" не загружены, ошибки следует исправить...","!")
    КонецЕсли;
    Возврат Ошибка
КонецФункции
//******************************
Функция ЗанестиДанные(ДетСад,Каталог,ИмяФайла)
    Занесено=0; Дети.ИспользоватьВладельца(ДетСад); Реестр.ОткрытьФайл(Каталог+ИмяФайла,,1);
    Если ОшибкиПолейБазы(Реестр,ИмяФайла,ДетСад)=0 Тогда Реестр.Первая();
        Пока Реестр.ВКонце()=0 Цикл
            Если Дети.НайтиПоКоду(Число(Реестр.Kod), 1)=1 Тогда Начисления.ИспользоватьВладельца(Дети);
                Состояние("Идет запись данных: "+ДетСад.Наименование+" :"+Дети.Наименование);
                Если (Реестр.SumNac>0) Или (Реестр.SumOpl>0) Тогда
                    Если Начисления.НайтиПоРеквизиту("РасчетнаяДата", Константа.РасчетнаяДата,0)=1 Тогда
                        Начисления.Начислено=Реестр.SumNac;
                        Начисления.Уплачено=Реестр.SumOpl;
                        Начисления.Процент=Дети.ПроцентКомпенсации;
                        Начисления.Компенсация=Реестр.SumOpl*Дети.ПроцентКомпенсации.Значение/100;
                        Начисления.Записать()
                    Иначе
                        Начисления.Новый();
                        Начисления.Начислено=Реестр.SumNac;
                        Начисления.Уплачено=Реестр.SumOpl;
                        Начисления.Процент=Дети.ПроцентКомпенсации;
                        Начисления.Компенсация=Реестр.SumOpl*Дети.ПроцентКомпенсации.Значение/100;
                        Начисления.РасчетнаяДата=Константа.РасчетнаяДата;
                        Начисления.Записать()
                    КонецЕсли
                Иначе
                    Если Начисления.НайтиПоРеквизиту("РасчетнаяДата", Константа.РасчетнаяДата,0)=1 Тогда Начисления.Удалить() КонецЕсли
                КонецЕсли;
            Иначе
                Сообщить("Не найден ребенок по коду "+Строка(Реестр.Kod)+" ("+СокрЛП(Реестр.FamName)+ "), данные по нему не загружены...")
            КонецЕсли;
            Реестр.Следующая()
        КонецЦикла;
        Занесено=1
    КонецЕсли; //ошибки базы
    Реестр.ЗакрытьФайл();
    Возврат Занесено;
КонецФункции
//*****************************************
Функция Загрузка(ДетСад)Загружен=0;
    Каталог=?(ДетСад.Расположение=Перечисление.Расположение.УНО,КаталогЗагрузки,"A:\");
    ИмяФайла=Строка(Формат(ДетСад.Код, "Ч(0)2"))+".dbf"; НеверныйФайл=Строка(Формат(ДетСад.Код, "Ч(0)2"))+".xls";
    Если ФС.ВыбратьФайл(0,ИмяФайла,Каталог,"Выберите файл","Файлы баз данных (*.dbf)|*.dbf",".dbf")=1 Тогда //СуществуетФайл(Каталог+ИмяФайла)=1 Тогда
        Если ДетСады.НайтиПоКоду(Число(Лев(ИмяФайла,2)))=1 Тогда ВыбрДетСад=ДетСады.ТекущийЭлемент(); глДетСад=ВыбрДетСад;
            Если ЗанестиДанные(ВыбрДетСад,Каталог,ИмяФайла)=1 Тогда
                Загружен=1; ФС.ПереименоватьФайл(Каталог+ИмяФайла,КаталогАрхива+Строка(Формат(ВыбрДетСад.Код,"Ч(0)2"))+
                Строка(Формат(ДатаМесяц(Константа.РасчетнаяДата),"Ч(0)2"))+Прав(Строка(ДатаГод(Константа.РасчетнаяДата)),2)+".dbf",1);
            КонецЕсли
        КонецЕсли
    Иначе
        Если ФС.СуществуетФайл(Каталог+НеверныйФайл)=1 Тогда
            Сообщить("В каталоге "+Каталог+" найден файл "+НеверныйФайл+" в формате XLS (Книга Excel), такой файл загружен не будет. Сохраните файл в формате как DBF 4 (dBase IV)...");
        КонецЕсли;
        Предупреждение("Не найден файл "+ИмяФайла+" в каталоге "+Каталог);
    КонецЕсли;
    Возврат Загружен
КонецФункции
//****************************************
Процедура Проверка()
    Перем Коды[50], Количество; ОчиститьОкноСообщений(); ДетСады.ПорядокКодов();
    Если ДетСады.ВыбратьЭлементыПоРеквизиту("Расположение",Перечисление.Расположение.УНО)=1 Тогда  Количество=0;
        Пока ДетСады.ПолучитьЭлемент()=1 Цикл
            ИмяФайла=Строка(Формат(ДетСады.Код, "Ч(0)2"))+".dbf";
            Если ФС.СуществуетФайл(КаталогЗагрузки+ИмяФайла)=1 Тогда
                Количество=Количество+1; Коды[Количество]=Число(ДетСады.Код)
            КонецЕсли
        КонецЦикла;
        Если Количество>0 Тогда
            Стр=?(Количество>1,"Имеются готовые файлы на сервере:","Имеется готовый файл на сервере:"); Сообщить(Стр);
            Для К=1 По Количество Цикл
                ДетСады.НайтиПоКоду(Коды[К]); Сообщить("("+Строка(Формат(ДетСады.Код, "Ч(0)2"))+") "+ДетСады.Наименование)
            КонецЦикла;
            Если Вопрос("Имеются готовые файлы на сервере."+РазделительСтрок+"Загрузить их сейчас?", 4)=6 Тогда
                Загружен=0; ОчиститьОкноСообщений();
                Для К=1 По Количество Цикл ДетСады.НайтиПоКоду(Коды[К]);
                    Если Загрузка(ДетСады)=1 Тогда
                        Загружен=1; Сообщить("("+Строка(Формат(ДетСады.Код, "Ч(0)2"))+") "+ДетСады.Наименование+" загружено");
                    КонецЕсли;
                КонецЦикла;
                Если Загружен=1 Тогда Состояние("Готово"); Предупреждение("Готово",2) КонецЕсли
            КонецЕсли
        Иначе Сообщить("Нет готовых файлов на сервере...")
        КонецЕсли
    КонецЕсли;
    
    Если ДетСады.ВыбратьЭлементыПоРеквизиту("Расположение",Перечисление.Расположение.ДС)=1 Тогда Количество=0;
        Пока ДетСады.ПолучитьЭлемент()=1 Цикл
            ИмяФайла=Строка(Формат(ДетСады.Код, "Ч(0)2"))+".dbf"; НеверныйФайл=Строка(Формат(ДетСады.Код, "Ч(0)2"))+".xls";
            Если ФС.СуществуетФайл("A:\"+ИмяФайла)=1 Тогда
                Количество=Количество+1; Коды[Количество]=Число(ДетСады.Код);
            Иначе
                Если ФС.СуществуетФайл("A:\"+НеверныйФайл)=1 Тогда
                    Сообщить("На дискете найден файл "+НеверныйФайл+" в формате XLS (Книга Excel), такой файл загружен не будет. Сохраните файл в формате как DBF 4 (dBase IV)...");
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        Если Количество>0 Тогда
            Стр=?(Количество>1,"Имеются готовые файлы на дискете:","Имеется готовый файл на дискете:"); Сообщить(Стр);
            Для К=1 По Количество Цикл ДетСады.НайтиПоКоду(Коды[К]);
                Сообщить("("+Строка(Формат(ДетСады.Код, "Ч(0)2"))+") "+ДетСады.Наименование)
            КонецЦикла;
            Если Вопрос("Имеются готовые файлы на дискете."+РазделительСтрок+"Загрузить их сейчас?", 4)=6 Тогда
                Загружен=0; ОчиститьОкноСообщений();
                Для К=1 По Количество Цикл ДетСады.НайтиПоКоду(Коды[К]); ВыбрДетСад=ДетСады.ТекущийЭлемент(); глДетСад=ВыбрДетСад;
                    Если Загрузка(ДетСады)=1 Тогда
                        Загружен=1; Сообщить("("+Строка(Формат(ДетСады.Код, "Ч(0)2"))+") "+ДетСады.Наименование+" загружено")
                    КонецЕсли
                КонецЦикла;
                Если Загружен=1 Тогда Состояние("Готово"); Предупреждение("Готово", 2) КонецЕсли
            КонецЕсли;
        Иначе Сообщить("Нет готовых файлов на дискете...")
        КонецЕсли
    КонецЕсли
КонецПроцедуры
//*******************************************
Процедура ПриОткрытии()
    Если ПустоеЗначение(глДетСад)=1 Тогда
        Если ДетСады.ВыбратьЭлементы()=1 Тогда
            Если ДетСады.ПолучитьЭлемент()=1 Тогда
                ВыбрДетСад=ДетСады.ТекущийЭлемент(); глДетСад=ВыбрДетСад
            КонецЕсли
        Иначе Предупреждение("Детские сады не найдены..."); Форма.Закрыть()
        КонецЕсли
    Иначе ВыбрДетСад=глДетСад
    КонецЕсли;
    Если Форма.Параметр<>2 Тогда Проверка() КонецЕсли
КонецПроцедуры
//*******************************************
Процедура ПриВыбореДетСада() глДетСад=ВыбрДетСад; Форма.КнопкаРучнойВвод.Доступность(1) КонецПроцедуры
//****************************************
Процедура Загрузить()
    Если ПустоеЗначение(ВыбрДетСад)=0 Тогда
        Если Загрузка(ВыбрДетСад)=1 Тогда Состояние("Готово"); Предупреждение("Готово", 2) КонецЕсли
    Иначе Предупреждение("Выберите детский сад...") КонецЕсли
КонецПроцедуры
29 Юлия Цветочек
 
19.06.15
20:34
30 Юлия Цветочек
 
19.06.15
21:51
Немного не по теме.

Что-то всё перекрасилось:
http://i11.pixs.ru/storage/6/1/4/11JPG_1105646_17739614.jpg

и ВФ наводит на расшифровку "Военный Флот"".
Прикольно)
Не обижайтесь авторы, как просто беседую в мирном русле). А, если обидела - прошу прощения.
31 KUBIK
 
19.06.15
21:54
(30) Нет такого: "ВФ наводит на расшифровку "Военный Флот"".
Есть ВМФ (Расшифруй!) :))))))
32 Юлия Цветочек
 
19.06.15
22:08
(31) Почему именно морской? А речной есть?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.