powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Проблема с загрузкой данных в 1С 7.7 из Excell
7 сообщений из 7, страница 1 из 1
Проблема с загрузкой данных в 1С 7.7 из Excell
    #37086537
antoniony
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Я смотрю, по поиску Эксель очень мало топиков. Сделал загрузку документа 1С из Экселя. Те реквизиты документа, которые являются справочниками или обычным текстом или числом заполняются легко. А вот те, тип которых - "Документ" (например: Заказ, Договор и т.п.) никак не могу вставить. При загрузке пытался найти в соответствующем журнале документов по номеру мой документ из Экселя различными способами: докЗаказ = СоздатьОбъект("Документ.Заказ"); докЗаказ.НайтиПоНомеру(НомерИзЭкселя); и другими поисками. Все безрезультатно. Что-то я наверное не так делаю. Подскажите плиз.
...
Рейтинг: 0 / 0
Проблема с загрузкой данных в 1С 7.7 из Excell
    #37086653
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonionyдокЗаказ.НайтиПоНомеру(НомерИзЭкселя);По моему там второй параметр год. Проверьте без экселя - вдруг у вас количество "нулей" не совпадает.
...
Рейтинг: 0 / 0
Проблема с загрузкой данных в 1С 7.7 из Excell
    #37086659
antoniony
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть, если у меня номер Заказа = "А-00001", то мне нужно искать "А-00001" + "2010"?
...
Рейтинг: 0 / 0
Проблема с загрузкой данных в 1С 7.7 из Excell
    #37086672
The Dim!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрим встроенную справку.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
НайтиПоНомеру(<?>,,)
Синтаксис:
НайтиПоНомеру(<Номер>,<Дата>,<ИдентВида>)
Назначение:
Найти документ по номеру. Может быть использован для объекта Документ общего вида, тогда для поиска нужно указать параметр <ИдентВида> .
Возвращает:  1  - если действие выполнено (документ найден);   0  - если действие не выполнено.
Параметры: 
<Номер> - строка с номером искомого документа;
<Дата> - дата из диапазона, в котором нужно искать документ.
<ИдентВида> - необязательный параметр. Строковое выражение, содержащее идентификатор вида документа или идентификатор Нумератора.
Замечание:
Метод  можно использовать только для объектов, созданных функцией СоздатьОбъект.
...
Рейтинг: 0 / 0
Проблема с загрузкой данных в 1С 7.7 из Excell
    #37086706
antoniony
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я конечно прочитал справку перед тем как создавать топик, я не смог найти этот самый <ИдентВида>. Как его написать? Где их взять?
...
Рейтинг: 0 / 0
Проблема с загрузкой данных в 1С 7.7 из Excell
    #37086723
The Dim!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я конечно не сомневаюсь что ты прочетал справку...
Но там же русским написано:

Код: plaintext
...Может быть использован для объекта Документ общего вида, тогда для поиска нужно указать параметр <ИдентВида>...
ниже
Код: plaintext
1.
<ИдентВида> - необязательный параметр. Строковое выражение, содержащее идентификатор вида документа или идентификатор Нумератора.

Это значит, что если ты создал объект который соответствует конкретному виду документов, то этот параметр можно не использовать.
Например
Код: plaintext
1.
2.
3.
4.
5.
Док = СоздатьОбъект("Документ.ПКО");
Если Док.НайтиПоНомеру(НомерДокумента, ДатаДокумента) =  1  Тогда
// документ найден. Объект Док спозиционирован на нем
Иначе
// документ не найден
КонецЕсли;

Третий параметр используется только тогда, когда создавался объект типа "Документ", тоесть без указания конкретного вида документа. Тогда приведенный выше пример переделываем так.
Код: plaintext
1.
2.
3.
4.
5.
Док = СоздатьОбъект("Документ");
Если Док.НайтиПоНомеру(НомерДокумента, ДатаДокумента, "ПКО") =  1  Тогда
// документ найден. Объект Док спозиционирован на нем
Иначе
// документ не найден
КонецЕсли;

Вот как-то так....
...
Рейтинг: 0 / 0
Проблема с загрузкой данных в 1С 7.7 из Excell
    #37086801
antoniony
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось, огромное спасибо!!!

Выкладываю кусочек кода по загрузке из Экселя и проведения проводок. Может кому-то понадобится. Он очень ограниченный в проверках (на удаленные и т.п.), но как шаблон, я думаю сгодится.

Это заполнение полей документа 1С из Экселя:
Функция Заполнить()
Excel=СоздатьОбъект("Excel.Application");
Excel.Workbooks.Open(Путь);
а = 2;
пока ПустаяСтрока(Excel.WorkBooks(1).Worksheets(1).Range("A" + а).Value) = 0 Цикл
НоваяСтрока();
СчетДт = СчетПоКоду(Excel.WorkBooks(1).Worksheets(1).Range("B" + а).Value);
Субконто1 = Excel.WorkBooks(1).Worksheets(1).Range("C" + а).Value;
Субконто2 = Excel.WorkBooks(1).Worksheets(1).Range("D" + а).Value;
Субконто3 = Excel.WorkBooks(1).Worksheets(1).Range("E" + а).Value;
СчетКт = СчетПоКоду(Excel.WorkBooks(1).Worksheets(1).Range("F" + а).Value);
СубкотноКт1 = Excel.WorkBooks(1).Worksheets(1).Range("G" + а).Value;
СубконтоКт2 = Excel.WorkBooks(1).Worksheets(1).Range("H" + а).Value;
СубконтоКт3 = Excel.WorkBooks(1).Worksheets(1).Range("I" + а).Value;
Кво = Excel.WorkBooks(1).Worksheets(1).Range("J" + а).Value;
Сумма = Excel.WorkBooks(1).Worksheets(1).Range("K" + а).Value;
Содержание = Excel.WorkBooks(1).Worksheets(1).Range("L" + а).Value;
а = а + 1;
КонецЦикла;
Excel.ActiveWorkBook.Close();
Возврат "";
КонецФункции


а это проведение:
Процедура ОбработкаПроведения()
СпрТМЦ = СоздатьОбъект("Справочник.ТМЦ");
справМестХран = СоздатьОбъект("Справочник.МестаХранения");
докЗаказ = СоздатьОбъект("Документ.Заказ");
спраВидыДеят = СоздатьОбъект("Справочник.ВидыДеятельности");
спраПодр = СоздатьОбъект("Справочник.Подразделения");
глКомментарий("Начало",2,Контекст);
глТбОперация.УдалитьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Операция.НоваяПроводка();
Если (СчетДт = СчетПоКоду("26")) и (СчетКт = СчетПоКоду("231")) тогда
Операция.Дебет.Счет = СчетДт;
Операция.Кредит.Счет = СчетКт;
Операция.Комментарий = СокрЛП(Содержание);

справМестХран.НайтиПоНаименованию(Субконто1,0,1);
Операция.Дебет.МестаХранения = справМестХран.ТекущийЭлемент();

СпрТМЦ.НайтиПоНаименованию(Субконто2,0,1);
Операция.Дебет.ТМЦ = СпрТМЦ.ТекущийЭлемент();

Ддат = Дата(Лев(Прав(СокрЛП(Субконто3),9),8));
стрЗаказ = СтрЗаменить(Лев(СокрЛП(Субконто3),СтрДлина(СокрЛП(Субконто3))-11),"Заказ ","");
докЗаказ.НайтиПоНомеру(стрЗаказ,Ддат);
Операция.Дебет.Партии = докЗаказ.ТекущийДокумент();

Операция.Сумма = Сумма;
Операция.Количество = Кво;

спраВидыДеят.НайтиПоНаименованию(СубкотноКт1,0,1);
Операция.Кредит.ВидыДеятельности = спраВидыДеят.ТекущийЭлемент();

спраПодр.НайтиПоНаименованию(СубконтоКт2,0,1);
Операция.Кредит.Подразделения = спраПодр.ТекущийЭлемент();

ИначеЕсли (СчетДт = СчетПоКоду("232")) и (СчетКт = СчетПоКоду("231")) тогда
Операция.Дебет.Счет = СчетДт;
Операция.Кредит.Счет = СчетКт;
Операция.Комментарий = СокрЛП(Содержание);

справМестХран.НайтиПоНаименованию(Субконто1,0,1);
Операция.Дебет.МестаХранения = справМестХран.ТекущийЭлемент();

СпрТМЦ.НайтиПоНаименованию(Субконто2,0,1);
Операция.Дебет.ТМЦ = СпрТМЦ.ТекущийЭлемент();

Ддат = Дата(Лев(Прав(СокрЛП(Субконто3),9),8));
стрЗаказ = СтрЗаменить(Лев(СокрЛП(Субконто3),СтрДлина(СокрЛП(Субконто3))-11),"Заказ ","");
докЗаказ.НайтиПоНомеру(стрЗаказ,Ддат);
Операция.Дебет.Партии = докЗаказ.ТекущийДокумент();

Операция.Сумма = Сумма;
Операция.Количество = Кво;

спраВидыДеят.НайтиПоНаименованию(СубкотноКт1,0,1);
Операция.Кредит.ВидыДеятельности = спраВидыДеят.ТекущийЭлемент();

спраПодр.НайтиПоНаименованию(СубконтоКт2,0,1);
Операция.Кредит.Подразделения = спраПодр.ТекущийЭлемент();

ИначеЕсли (СчетДт = СчетПоКоду("903")) и (СчетКт = СчетПоКоду("232")) тогда
Операция.Дебет.Счет = СчетДт;
Операция.Кредит.Счет = СчетКт;
Операция.Комментарий = СокрЛП(Содержание);

Операция.Сумма = Сумма;
Операция.Количество = Кво;

спраВидыДеят.НайтиПоНаименованию(Субконто1,0,1);
Операция.Дебет.ВидыДеятельности = спраВидыДеят.ТекущийЭлемент();

спраПодр.НайтиПоНаименованию(Субконто2,0,1);
Операция.Дебет.Подразделения = спраПодр.ТекущийЭлемент();

справМестХран.НайтиПоНаименованию(СубкотноКт1,0,1);
Операция.Кредит.МестаХранения = справМестХран.ТекущийЭлемент();

СпрТМЦ.НайтиПоНаименованию(СубконтоКт2,0,1);
Операция.Кредит.ТМЦ = СпрТМЦ.ТекущийЭлемент();

Ддат = Дата(Лев(Прав(СокрЛП(СубконтоКт3),9),8));
стрЗаказ = СтрЗаменить(Лев(СокрЛП(СубконтоКт3),СтрДлина(СокрЛП(СубконтоКт3))-11),"Заказ ","");
докЗаказ.НайтиПоНомеру(стрЗаказ,Ддат);
Операция.Кредит.Партии = докЗаказ.ТекущийДокумент();

ИначеЕсли (СчетДт = СчетПоКоду("901")) и (СчетКт = СчетПоКоду("26")) тогда
Операция.Дебет.Счет = СчетДт;
Операция.Кредит.Счет = СчетКт;
Операция.Комментарий = СокрЛП(Содержание);

Операция.Сумма = Сумма;
Операция.Количество = Кво;

спраВидыДеят.НайтиПоНаименованию(Субконто1,0,1);
Операция.Дебет.ВидыДеятельности = спраВидыДеят.ТекущийЭлемент();

спраПодр.НайтиПоНаименованию(Субконто2,0,1);
Операция.Дебет.Подразделения = спраПодр.ТекущийЭлемент();

справМестХран.НайтиПоНаименованию(СубкотноКт1,0,1);
Операция.Кредит.МестаХранения = справМестХран.ТекущийЭлемент();

СпрТМЦ.НайтиПоНаименованию(СубконтоКт2,0,1);
Операция.Кредит.ТМЦ = СпрТМЦ.ТекущийЭлемент();

Ддат = Дата(Лев(Прав(СокрЛП(СубконтоКт3),9),8));
стрЗаказ = СтрЗаменить(Лев(СокрЛП(СубконтоКт3),СтрДлина(СокрЛП(СубконтоКт3))-11),"Заказ ","");
докЗаказ.НайтиПоНомеру(стрЗаказ,Ддат);
Операция.Кредит.Партии = докЗаказ.ТекущийДокумент();
конецесли;
Ддат = "";
стрЗаказ = "";

КонецЦикла;

Операция.Записать();

глКомментарий("Окончание",2,Контекст);
КонецПроцедуры
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Проблема с загрузкой данных в 1С 7.7 из Excell
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]