Имя: Пароль:
1C
1C 7.7
v7: Загрузка Excel файла в 1С 7.7.
0 Amazing
 
15.08.22
23:43
Здравствуйте!
Есть список в Excel: Ф.И.О, сумма начисления, сумма подоходного налога.
Как сделать так, чтобы списки могли загружаться из Excel в виде бухгалтерской справки в 1С?
Наверное нужно ещё добавить в список табельный номер?
Для этого нужна обработка?
1 Злопчинский
 
16.08.22
00:24
1. нужна обработка
2. нужен некий ИД, который прочитали из Экселя и по этому ИДу нашли нужный объект в базе. ИД - д.б. уникальным в пределах базы. Что это будет за ИД - зависит от конфигурации, скорее всего у вас речь идет о 1С Бухгалтерия 7.7
3. Будет геморно, так как бухсправка - это проводки. в проводках нужно задавать субконто-аналитику (в вашей эксельной табличке этого нет). плюс к этому кроме балансовых счетов надо разложить еще правильно по забалансовым счетам, например забалансовый счет исчисления дохода. Возмможно загрузку проводок сделать с пуствми субконт о на корреспондирующих счетах, и уже бух ручками будет прсотавлять нужные субконто.
4. нихрена непонятно зачем это вам надо. таким образом вы пытаетесь подменить расчет зарплаты и исчисления НДФЛ? - ну так нахрена это делать бухсправкой? грузите эти цифры в документ "начисление ЗП". Правда там вроде как нет отдельной колонки НДФЛ, ибо ндфл считается вполне четко по правилам и отдельно его ручками ставить смысла нет..
.
мне идея кажется гунявой. используйте штатный документ начисления ЗП, заказчиваете туда суммы начисления, НДФЛ посчитается автоматом. если вам не нравится как НДФЛ считается автоматом и вы пытаетесь в (0) таким образом "считать правильно" - нихера не получится, ибо вам придется полностью переписать в Бухии "зарплатный блок".
.
как-то так.
.
могу ошибаться, в бухию 77 давно не смотрел, описал как помню.
2 victuan1
 
16.08.22
05:24
Имхо, обычное задание на курсовую работу.
3 bolder
 
16.08.22
06:41
(2) Да, это не похоже на реальную работу.Потому что пытаться самим все рассчитывать в Excel при наличии даже 7.7, я не говорю о ЗУП 8 выглядит как детсад, а не студенческая работа.
4 Amazing
 
16.08.22
07:39
(1) Доброе утро!)
Да, речь о 1С Бухгалтерия 7.7. Иксель делает расчёт, который не может сделать 1С - всё просто, там определённый алгоритм, а мы хотим забирать готовые суммы.
Если нужно будет в загруженной бух.справке подправить или проставить что-то руками - не проблема, в любом случае это меньше, чем делать её с нуля.
5 Amazing
 
16.08.22
07:39
(2) для профи - да, скорее всего!)
6 Amazing
 
16.08.22
07:40
(3) 1С не может сделать именно такой расчёт, ответил выше.
7 andrewalexk
 
16.08.22
07:44
:) есть готовая обработка преобразования xls в ТЗ называется FromExcel.ert
а потом уже превращаешь таблицу в документ
8 Kigo_Kigo
 
16.08.22
09:34
(6) 1С не может сделать такой расчет который может Ексель? вот умора Бббгггггг
9 andrewalexk
 
16.08.22
10:01
(8) :) возможно он имел ввиду что вместо ведения учета в экселе лучше вести учет в 1с77
10 Amazing
 
16.08.22
10:09
(8) в типовой конфигурации - не может. А специально никто не станет ничего переделывать в отношении расчёта.
11 Fynjy
 
16.08.22
10:14
Заканчивался 2022 год, приложение появившиеся в 1998 с официальным релизов в 1999 году продолжало успешно использоваться.
Кстати только в этом году фирма 1С ограничила поддержку 1С 7.7 кардинально.
12 Amazing
 
16.08.22
10:39
(11) что Вас удивляет?) Ну не у всех установлены восьмёрки, что теперь - людям не работать?)
13 andrewalexk
 
16.08.22
10:57
(11) :) ключевое слово успешно?
14 bolder
 
16.08.22
11:19
(6) Вы хотите сказать, что начисление с точностью до рубля в рассчитываете а Excel,а результаты начисления и налоги , сумму на руки будете в 1с не считать а вность бух справкой?
Вы же понимаете, что давая в руки бухгалтеру такой инструмент, как бухсправка - всю ответственность за правильное начисление налогов ( а это не только НДФЛ) вы берете на себя( ну может разделяя с бухом).А больничные?А отпуска?Да вас живьем сьедят с этой хотелкой.
Поэтому максимум - предложенное в (1) решение по занесению одного столбца.
А если там меньше 10 человек то вообще проблема надумана, ну 100-1000 еще другое дело))
Но как то троллингом тянет...в 7.7 считать ЗП даже 100 человек..Там точно всяких исключений и чудес будет немеряно...
15 Amazing
 
16.08.22
11:40
(13) это вопросы к их руководству.)
16 Amazing
 
16.08.22
11:42
(14) кто Вас сказал, что это считается зарплата?) Это выплата, но совершенно другого характера и всё там идеально считается, только нужно провести в 1С начисление этой выплаты и удержание с него подоходного налога...
17 GrayS19
 
16.08.22
12:23
По-хорошему - 2 часа работы, 80 бел.руб. Но ТС умудряется все вопросы решить нахаляву. Наверное, и в этот раз решит
18 Amazing
 
16.08.22
12:32
(17) это Вы сейчас пытаетесь кинуть камень в мою сторону?
Что такое "ТС".
Ну и так для справки: ничего бесплатно не решали и это априори невозможно с злыми людьми.)
19 andrewalexk
 
16.08.22
12:34
(18) :) тупикстартер
20 Amazing
 
16.08.22
12:52
(19) как злостно.))))
21 Злопчинский
 
16.08.22
12:54
(16) Обясните куроводству что НДФЛ считается не с выплаты, а с дохода с начала года. и если по остальным "выплатам" вы недобрали или перебрали НДФЛ, то с этой выплаты НДФЛ надо будет взять больше или меньше. Есть особенности если выплаты идут за счет разных источников финансирования типа часть с бюджета, часть с коммерца.
22 GrayS19
 
16.08.22
12:55
(18) "ничего бесплатно не решали и это априори невозможно с злыми людьми" - со злыми бесплатно невозможно, с добрыми бесплатно возможно ? значит все, кому платили деньги за решения - злые ?
23 GrayS19
 
16.08.22
12:56
(21) Сергей, он твой земляк, в Беларуси НДФЛ нету
24 andrewalexk
 
16.08.22
12:58
(20) :) априори злые люди такие...
25 NorthWind
 
16.08.22
13:21
(0) написать обработку. Семерка позволяет читать эксель с помощью ADO или через OLE обьекты Microsoft Office. Читаете файлик, заполняете справку, профит. Могут быть определенные вопросы с привязкой сотрудников по ФИО к справочнику сотрудников 1С - дубликаты в справочнике, орфографические ошибки при написании в Excel и т.д. могут приводить к тому что сотр не привяжется или привяжется не к тому элементу, к которому надо.
26 victuan1
 
17.08.22
05:34
(4) Ну в принципе, задача мне понятна и она реальна. По сути в Бух загруженные проводки по ЗП нужны для правильного ведения бух. баланса.
Сделать мог бы я за оплату и даже ТЗ мог бы составить вменяемое для этой задачи.
Но к сожалению, времени совсем нет.
Как вариант искать ТС-у вменяемого кодера-семерочника, со знанием бух. учета. Он эту задачу сделает.
Я со своей стороны могу только выслать бесплатно обработку - образец как загружать данные из Эксель в 1С 7.7 в принципе.
27 victuan1
 
17.08.22
05:41
Надо сказать, что в свое время (в начале 00-ых годов) полностью поддержал через Эксель расчет зарплаты бюджетного учреждения на 400 сотрудников. С поддержкой КЛАДРа и выгрузкой рег. отчетности в ФНС и ПФР. Т.к. у 1С в то время не было вменяемых решений для расчета ЗП.
Бухгалтер была счастлива, т.к. считала зарплату со всей рег. отчетности от силы 2 недели в месяц, остальное время она была свободна (до перехода на Эксель у нее уходил весь месяц со сверхурочными до поздней ночи).

Когда пришло время - успешно мигрировал им данные по ЗП из Эксель в КАМИН 2.0.
Я там не работаю уже давно, но знаю, что сидят на Камине до сих пор.
Думаю с 2023 года будут переходить на ЗБУ, ибо Камин прекращает поддержку 7.7 с 2023 года https://www.kaminsoft.ru/images/kamin/others/Ogranichennaya_podderzhka_tipovyh_konfiguracij_KAMIN_na_platforme%20_1SPredpriyatie_7.pdf
28 VoditelKobyly
 
17.08.22
07:08
Если интересно, то подключение и получение данных в ТЗ если есть 1срр

    СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\t\Акт.xls;Extended Properties=""Excel 12.0;HDR=NO""";

    РСЭксел = СоздатьОбъект("ODBCRecordSet");
    ДБ = СоздатьОбъект("ODBCDatabase");
    ДБ.DriverConnect(СтрокаПодключения);
    
    Если ДБ.ЕстьСоединение() = 0 Тогда
        Если ПустаяСтрока(ДБ.ПолучитьОписаниеОшибки()) = 0 Тогда
            Предупреждение("Ошибка ODBCDataBase: " + РазделительСтрок +  ДБ.ПолучитьОписаниеОшибки());
            Возврат;
        КонецЕсли;
    Иначе
        РСЭксел.УстБД(ДБ);
    КонецЕсли;
    ТестЗапроса="SELECT * FROM [Sheet1$]";
    
    ТЗ_Ексель=РСЭксел.ВыполнитьИнструкцию(ТестЗапроса);

Далее крути ТЗ и формируй с нее свою справку
29 Amazing
 
17.08.22
11:28
(22) не нужно мои слова интерпретировать так буквально.)
30 Amazing
 
17.08.22
11:30
(26) (27) Благодарю!)
31 Amazing
 
17.08.22
11:30
(28) Спасибо!
32 Amazing
 
17.08.22
11:31
(25) Спасибо!)
33 mistеr
 
17.08.22
11:31
(10) Если вам все равно кто-то будет делать обработку, пусть заодно и расчет сделает. :)
34 Amazing
 
17.08.22
11:34
(26) Написал на почту.)
35 Amazing
 
17.08.22
11:36
(33) нет, расчёт уже сделан там, где он сделан.)
36 victuan1
 
17.08.22
11:54
(34) Ответил.
37 Arbuz
 
17.08.22
17:26
(28) А есть ли ODBC для OpenDocument Spreadsheet?
38 GrayS19
 
18.08.22
13:38
(37) попробовал пример из (28). Сообщение об ошибке 1С: Ошибка ODBCDataBase: Источник данных не найден и не указан драйвер, используемый по умолчанию. Глубже пока не копал.
39 VoditelKobyly
 
18.08.22
13:45
(38) Надеюсь буковки Source=D:\t\Акт.xls; поменял на свои?
40 GrayS19
 
18.08.22
14:10
поменял, файл есть, даже через ADO его загрузил
41 GrayS19
 
18.08.22
14:11
Win 7 32 бита, надо в список установленных ODBC лезть, пока совсем некогда, злые быхи задач накидали
42 GrayS19
 
18.08.22
14:12
(41) *бухи :)
43 Arbuz
 
18.08.22
14:20
(38) Microsoft Access Database Engine 2010 Redistributable установлен?
https://www.microsoft.com/en-us/download/details.aspx?id=13255
44 GrayS19
 
18.08.22
14:41
(43) установил. то же сообщение https://drive.google.com/file/d/1gRfNZ-1Aaox8mrpmXLtRAnfaNVaggJYZ/view?usp=sharing (43)
45 GrayS19
 
18.08.22
14:45
установленные в системе драйвера ODBC https://drive.google.com/file/d/1ovHpZHSolR1iGwHFsLNGbJKhIZVxx7D7/view?usp=sharing
46 Lazy Stranger
 
18.08.22
15:01
Можно по-простому, хоть и, вероятно, менее эффективно:

    Excel=СоздатьОбъект("Excel.Application");
    Попытка
        SourceTable=Excel.Workbooks.Open(СокрЛП(ФайлXLS));
        ЛистXLS=SourceTable.Sheets(1);
    Исключение
        Предупреждение("Не удалось открыть файл "+СокрЛП(ФайлXLS)+":"+РазделительСтрок+ОписаниеОшибки(),30);
        Возврат;
    КонецПопытки;
    
    текНомерСтроки=НомерПервойСтроки-1;
    Пока 1=1 Цикл  
        текНомерСтроки=текНомерСтроки+1;
        состояние(текНомерСтроки);
        Артикул=СокрЛП(ЛистXLS.Cells(ТекНомерСтроки,НомКолАртикул).Value);      
        Если ПустаяСтрока(Артикул)=1 Тогда
            Прервать;
        КонецЕсли;
47 Arbuz
 
18.08.22
15:07
(46) Не, ну хочется же через ODBC селектом
(45) А операционка 64 бит?
48 GrayS19
 
18.08.22
15:29
(47) 32 бита Windows 7
49 NorthWind
 
18.08.22
20:54
Если файлы xls (не xlsx), то лучше использовать драйвер Jet 4. Он есть в любой винде начиная с Windows 98, не нужно ничего доустанавливать.

    СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" +
    ИмяФайла + "; Extended Properties = " + """Excel 8.0" + ";HDR=NO;IMEX=1"";" ;
    
    Соединение = СоздатьОбъект ("ADODB.Connection");
    
    Попытка
        Соединение.Open(СтрокаПодключения);
    Исключение
        Сообщить ("Ошибка открытия файла средствами ADO. Возможно, OLE DB провайдер Jet 4.0 не установлен или файл не имеет формат Excel 97-2003");
        Сообщить ("Текст ошибки : " + ОписаниеОшибки ());
        Соединение = "";        
        Возврат;
    КонецПопытки;
    
    Попытка
        НаборЗаписей = Соединение.Execute("SELECT * FROM [" + СокрЛП (ИмяЛиста) + "$A" +
        Строка (СтрокаНачало) + ":CZ" + Строка (СтрокаКонец) + "] ");
    Исключение
        Сообщить("Не удалось выполнить запрос к файлу Excel средствами ADO, ошибка " + ОписаниеОшибки ());
        Соединение.Close ();
        Соединение = "";
        Возврат;
    КонецПопытки;
50 andrewalexk
 
18.08.22
21:53
(49) :) если xls еще и актуален то только из-за 1с77
51 Злопчинский
 
18.08.22
22:54
Если XLS - то проще всего Йокселем прочитать в ТЗ.
52 Arbuz
 
19.08.22
15:29
в (28) некорректная строка подключения объекта ODBCDatabase. Должно быть что-то вроде


    База    = СоздатьОбъект("ODBCDataBase");
    Имя        = "d:\path\file.xls";
    Стр        = "
        |DRIVER=Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb);
        |ReadOnly=1;
        |FIL=excel 14.0;
        |DBQ=" + Имя + "
        |";
    Если База.Соединение(Стр) = 1 Тогда
        Запрос    = СоздатьОбъект("ODBCRecordSet");
        Запрос.УстБД(База);
        Текст    = "select *
        |from [Лист1$A1:AZ]";
        Запрос.ВыполнитьИнструкцию(Текст, ТЗ_Ексель);
        База.Закрыть();
    Иначе
        Сообщить("Нет " + База.ПолучитьОписаниеОшибки());
    КонецЕсли;    


Но проблема в препроцессоре 1срр - знак доллара chr(36), так и не смог победить. Можно попробовать параметризованные запросы.

(49) Да, но ADODB не возвращает ТЗ(ИТЗ). Надо в цикле ковырять, что "неаккуратненько, дохтур".
(51) Неее, дяденька, надо селектом сразу во внутреннюю структуру... Сразу можно ещё сджойнить несколько таблиц/файлов и отфильтровать по группировке. Так-то инструментов из Экселя завались.
53 Злопчинский
 
19.08.22
15:46
"сразу во внутреннюю структуру..." - не понял...
54 Злопчинский
 
19.08.22
15:48
но для клюшек простого варинта у меня нет, такого чтобы типа
ТЗ = ПолучитьДанные(тутфайлxlsилиxlsx,номерИлиИмяЛиста)
55 Arbuz
 
19.08.22
16:11
(53) Ну, я имел ввиду, что ты ему скл запрос, он тебе ТЗ (или даже ИТЗ). Красивое. Иначе смысл в этой 1срр'шной ODBC прокладке, кроме как родные скуль-базы?
(54) дык, я именно об этом.
56 GrayS19
 
19.08.22
16:32
(52) а в ADODB можно узнать, сколько первых пустых столбцов в файле ? а то перебор по № столбца есть, но если в столбце "А" есть информация, то его №=1, столбца "В" №=2. А если в "А" пусто-пусто до конца файла, то уже столбца "В" №=2. Понятно, что RecordSet обрезал пустую информацию, а сколько столбцов обрезал ?
57 GrayS19
 
19.08.22
16:33
(56) 8А если в "А" пусто-пусто до конца файла, то уже столбца "В" №=1
Основная теорема систематики: Новые системы плодят новые проблемы.