Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[1С:Зарплата и управление персоналом 8]

загрузка из Excel

Дина
читатель
офлайн
Дата регистрации: 21.05.2010
Сообщений: 2981
Пост №11
 
06.09.2011 11:38

И что там очень много строк, что не хочется это делать ручками?<br> Проблему вижу в том, что раз:<br><br>> файл скидывает другая фирма<br> <br>то, возможно, (особенно, если в файле фамилии с инициалами) не соответствие с вашими ФИО физлиц. Если же с этим проблем нет, то особенных проблем при загрузке этой обработкой проверенного вами файла не должно возникнуть. Попробуйте весь этот механизм в копии. Сначала создайте и запишите непроведённым новый документ "Регистрация разовых удержаний сотрудников организаций" и уже его используйте, как ссылку. Подбираете табличную часть "Удержания" и дальше экспериментируйте - по форуму всё не объяснишь. Я сама иногда ею пользуюсь - нравится, что труд в некоторых случаях облегчает.

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №12
 
06.09.2011 11:40

Если имеется ввиду документ "Регистрация разовых удержаний сотрудников организаций", то для него можно сделать внешнюю обработку заполнения табличных частей.<br>Алгоритм работы обработки будет такой:<br>1. Вызов "Формы", в которой пользователь будет выбирать файл загрузки и указывать доп.сведения для заполнения (напр. вид удержания).<br>2. Получение значения выбранного файла из "Формы" и чтение данных из этого файла Excel в таблицу значений (с поиском элемента справочника "Сотрудники" по данным из Excel).<br>3. Заполнение табличной части по данным из таблицы значений.

shogun1988
читатель
офлайн
Дата регистрации: 31.05.2011
Сообщений: 21
Пост №13
 
06.09.2011 11:43

основная проблема в том что я никогда не грузился еще с excel до этого было с xml

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №14
 
06.09.2011 12:24

"Вот пример процедуры чтения данных (в нем же считанные данные "конвертируются" запросом в данные 1С):<br><pre>Процедура КоманднаяПанель2ПрочитатьДанные(Кнопка)<br> <br> Если ПустаяСтрока(ФайлДанных) Тогда<br> Сообщить("Не выбран файл данных!", СтатусСообщения.Внимание);<br> Возврат;<br> КонецЕсли;<br> <br> // предварительная очистка данных<br> Если ТаблицаДанных.Количество() > 0 Тогда<br> <br> Ответ = Вопрос("Перед заполнение таблица данных будет очищена! Продолжить?", РежимДиалогаВопрос.ДаНет);<br> <br> Если Ответ = КодВозвратаДиалога.Да Тогда<br> ТаблицаДанных.Очистить();<br> Иначе<br> Возврат;<br> КонецЕсли; <br> <br> КонецЕсли; <br> <br> // инициализация драйвера соединения<br> Состояние("Чтение данных из файла...");<br> <br> Попытка<br> Conn = Новый COMОбъект("ADODB.Connection");<br> RS = Новый COMОбъект("ADODB.Recordset");<br> Исключение<br> Сообщить("Ошибка получения данных: " + ОписаниеОшибки(), СтатусСообщения.Важное);<br> Возврат;<br> КонецПопытки;<br> ВПервойСтрокеДанные = Ложь;<br> <br> Conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ФайлДанных + ";Extended Properties=""""Excel 12.0;"<br>       + ?(ВПервойСтрокеДанные,"HDR=NO;","HDR=YES;") + "IMEX=1;""""";<br>       <br> // получение доступа к данным<br> Попытка<br> Conn.Open();<br> Исключение<br> Сообщить("Ошибка получения данных: " + ОписаниеОшибки(), СтатусСообщения.Важное);<br> Возврат;<br> КонецПопытки;<br> ТекстЗапроса = "SELECT * FROM [Лист1$]";<br> <br> // чтение данных из файла выгрузки<br> RS.Open(ТекстЗапроса, Conn);<br> <br> Сч = 0;<br> <br> МассивОшибокНастроек = Новый Массив;<br> <br> // получение настройки начальной строки<br> СтрНастройки = ТаблицаНастроек.Найти("НачальнаяСтрока", "Настройка");<br> НачСтр = СтрНастройки.Значение;<br> <br> // получение настройки конечной строки<br> СтрНастройки = ТаблицаНастроек.Найти("КонечнаяСтрока", "Настройка");<br> КонСтр = СтрНастройки.Значение;<br> <br> ПромТЗ = ТаблицаДанных.СкопироватьКолонки();<br> <br> // переопределяем структуру таблицы сбора данных<br> ПромТЗ.Колонки.Удалить("Контрагент");<br> ПромТЗ.Колонки.Удалить("Валюта");<br> ПромТЗ.Колонки.Удалить("ДокументСчет");<br> <br> ПромТЗ.Колонки.Добавить("Валюта", ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(10));<br> <br> Пока RS.EOF() = Ложь Цикл<br> <br> Сч = Сч + 1;<br> <br> // ограничение по строкам<br> Если Сч < НачСтр ИЛИ (КонСтр > 0 И Сч > КонСтр) Тогда<br> RS.MoveNext();<br> Продолжить;<br> КонецЕсли; <br> <br> НовСтр = ПромТЗ.Добавить();<br> <br> // заполнение данных<br> Для каждого КлючИЗначение Из СтруктураПолей Цикл<br> <br> СтрНастройки = ТаблицаНастроек.Найти(КлючИЗначение.Значение, "Настройка");<br> <br> Если СтрНастройки = Неопределено И МассивОшибокНастроек.Найти(КлючИЗначение.Ключ) = Неопределено Тогда<br> <br> МассивОшибокНастроек.Добавить(КлючИЗначение.Ключ);<br> <br> Сообщить("Ошибка структуры настроек - поле «" + КлючИЗначение.Ключ + "»", СтатусСообщения.ОченьВажное);<br> <br> Продолжить;<br> <br> КонецЕсли;<br> <br> НомерКолонкиДанных = СтрНастройки.Значение - 1;<br> <br> НовСтр[КлючИЗначение.Ключ] = RS.Fields.Item(НомерКолонкиДанных).Value;<br> <br> КонецЦикла; <br> <br> RS.MoveNext();<br> <br> КонецЦикла;<br> <br> // инициализация данных<br> Запрос = Новый Запрос;<br> <br> Запрос.Текст =<br> "ВЫБРАТЬ<br> | ВнешнийИсточник.Клиент КАК Клиент,<br> | ВнешнийИсточник.Количество,<br> | ВнешнийИсточник.Цена,<br> | ВнешнийИсточник.Валюта КАК СтрВалюта,<br> | ВнешнийИсточник.Сумма<br> |ПОМЕСТИТЬ ВТ<br> |ИЗ<br> | &ИсточникДанных КАК ВнешнийИсточник<br> |<br> |ИНДЕКСИРОВАТЬ ПО<br> | Клиент,<br> | СтрВалюта<br> |;<br> |<br> |////////////////////////////////////////////////////////////////////////////////<br> |ВЫБРАТЬ<br> | ВТ.Клиент,<br> | ВТ.Количество,<br> | ВТ.Цена,<br> | ВТ.Сумма,<br> | ЕСТЬNULL(Валюты.Ссылка, Константы.ВалютаРегламентированногоУчета) КАК Валюта,<br> | ЕСТЬNULL(Контрагенты.Ссылка, ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяССылка)) КАК Контрагент,<br> | ЗНАЧЕНИЕ(Документ.СчетНаОплатуПокупателю.ПустаяСсылка) КАК ДокументСчет<br> |ИЗ<br> | ВТ КАК ВТ<br> | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты<br> | ПО ВТ.СтрВалюта = Валюты.Наименование<br> | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты<br> | ПО (ВТ.Клиент = (ВЫРАЗИТЬ(Контрагенты.НаименованиеАнглийское КАК СТРОКА(300)))),<br> | Константы КАК Константы<br> |ГДЕ<br> | ВТ.Клиент <> """""<br> ;<br> <br> Запрос.УстановитьПараметр("ИсточникДанных", ПромТЗ);<br> <br> Результат = Запрос.Выполнить();<br> <br> Если Результат.Пустой() Тогда<br> Сообщить("Ошибка инициализации данных!", СтатусСообщения.ОченьВажное);<br> Возврат;<br> КонецЕсли; <br> <br> ТаблицаДанных = Результат.Выгрузить();<br> <br> ОтметитьВсеСтроки(Истина);<br> <br>КонецПроцедуры </pre>"

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №15
 
06.09.2011 12:28

"...в дополнение - инициализация структуры полей (соответствие колонок в таблице данных с реквизитами формы настроек - вместо реквизитов можно указать конкретные статичные номера колонок):<br> <br><pre>СтруктураПолей = Новый Структура;<br>СтруктураПолей.Вставить("Клиент", "НомерКолонкиКлиент");<br>СтруктураПолей.Вставить("Количество", "НомерКолонкиКоличество");<br>СтруктураПолей.Вставить("Цена",       "НомерКолонкиЦена");<br>СтруктураПолей.Вставить("Валюта", "НомерКолонкиВалюта");<br>СтруктураПолей.Вставить("Сумма",      "НомерКолонкиСумма"); </pre>"

Показывать по 10 20 40 сообщений

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация