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

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

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

Загрузка из Excel в 1С 8.1 УТ

EL Khan
читатель
офлайн
Дата регистрации: 10.02.2012
Сообщений: 92
Пост №1
 
06.10.2012 13:13

"Элементы создаются, документ поступление создается, но вот установка цен номенклатуры ругается: <br><br>{Форма.Форма(209)}: Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует! : Рознизная : хххххххх : : 06.10.2012 0:00:00 (Регистр сведений: Цены номенклатуры; Номер строки: 7) <br>       ДокУстановкаЦенНоменклатуры.Записать(РежимЗаписиДокумента.Проведение); <br>О чем говорит эта ошибка? номенклатура в экселе встречается несколько раз, и оно не может записаться в регистр сведений, так? <br>Скажите пожалуйста в чем проблема?<br> <br><pre>Процедура ЗагрузкаИзExcel() Экзель = Новый COMОбъект("Excel.Application"); Книга = Экзель.Application.Workbooks.Open(Путь); ТекЛист = Книга.WorkSheets(1); КолСтрок = ТекЛист.Cells(1,1).SpecialCells(11).Row; КолКолонок = ТекЛист.Cells(1,1).SpecialCells(11).Column; КоличествоСтраниц = 1;            Для ТекНомер = 1 По КоличествоСтраниц Цикл Артикул = СокрЛП(Книга.Sheets(ТекНомер).Cells(1,Арт).Value); Наименование = СокрЛП(Книга.Sheets(ТекНомер).Cells(1,Наим).Value); Если (ШК = 0) или (ШК > КолКолонок) Тогда       Сообщить("ШтрихКод отсутсвует в данной номенклатуре!"); Иначе ШтрихКод = СокрЛП(Книга.Sheets(ТекНомер).Cells(1,ШК).Value); КонецЕсли; Коллекция = СокрЛП(Книга.Sheets(ТекНомер).Cells(1,Коллекция1).Value); Цвет = СокрЛП(Книга.Sheets(ТекНомер).Cells(1,Цвет1).Value); Размер = СокрЛП(Книга.Sheets(ТекНомер).Cells(1,Размер1).Value); Количество = СокрЛП(Книга.Sheets(ТекНомер).Cells(1,Колич).Value); Цена = СокрЛП(Книга.Sheets(ТекНомер).Cells(1,Цен).Value); Сообщить("Внешняя накладная прочитана, начилась запись элементов справочника Номенклатура!"); счСтроки = НачСтрока;       //// Заполняем шапку Документа Поступление товаров и услуг //////////////////////////////////////             НовыйДокПоступление = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();       НовыйДокПоступление.Дата = Дата;       НовыйДокПоступление.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад;       НовыйДокПоступление.Организация = Организация;       НовыйДокПоступление.Контрагент = Контрагент;       НовыйДокПоступление.ДоговорКонтрагента = Дог;       НовыйДокПоступление.ВалютаДокумента = ВалютаДок;       НовыйДокПоступление.КурсВзаиморасчетов = 1;       НовыйДокПоступление.КратностьВзаиморасчетов = 1;       НовыйДокПоступление.СкладОрдер = Склад;       НовыйДокПоступление.ОтражатьВУправленческомУчете = Истина;       НовыйДокПоступление.ОтражатьВБухгалтерскомУчете = Истина;       НовыйДокПоступление.ОтражатьВНалоговомУчете = Ложь;            //// Создаю док УстановкаЦенНоменклатуры ///////////////////////////////////////////////////////                         ДокУстановкаЦенНоменклатуры = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();       ДокУстановкаЦенНоменклатуры.Дата = Дата;       ДокУстановкаЦенНоменклатуры.ТипыЦен.Очистить();       НовСтрТипыЦен = ДокУстановкаЦенНоменклатуры.ТипыЦен.Добавить();             ТипЦены = ТипЦен; // Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001");       НовСтрТипыЦен.ТипЦен = ТипЦены;                         Для ш = НачСтрока по КолСтрок Цикл       Артикул = СокрЛП(Книга.Sheets(ТекНомер).Cells(СчСтроки,Арт).Value);                                     Наименование = СокрЛП(Книга.Sheets(ТекНомер).Cells(СчСтроки,Наим).Value);                   Если (ШтрихКод = 0) Тогда       Сообщить("ШтрихКод отсутсвует в данной номенклатуре!");       Иначе       ШтрихКод = СокрЛП(Книга.Sheets(ТекНомер).Cells(СчСтроки,ШК).Value);       КонецЕсли;       //ШтрихКод = СокрЛП(Книга.Sheets(ТекНомер).Cells(СчСтроки,ШК).Value);       Коллекция = СокрЛП(Книга.Sheets(ТекНомер).Cells(СчСтроки,Коллекция1).Value);       Цвет = СокрЛП(Книга.Sheets(ТекНомер).Cells(СчСтроки,Цвет1).Value);       Размер = СокрЛП(Книга.Sheets(ТекНомер).Cells(СчСтроки,Размер1).Value);       Количество = СокрЛП(Книга.Sheets(ТекНомер).Cells(СчСтроки,Колич).Value);       Цена = СокрЛП(Книга.Sheets(ТекНомер).Cells(СчСтроки,Цен).Value);             счСтроки = счСтроки + 1;                   Если (Наименование = """") или (Наименование = Неопределено) или (Наименование = null) Тогда            Продолжить;       КонецЕсли;                   Запись = Истина;       СпрНоменклатура = Справочники.Номенклатура;             Если Справочники.Номенклатура.НайтиПоНаименованию(Наименование + " " + Цвет + " " + Размер).Пустая() Тогда                                     НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();            Родитель = ГрпНом;            НовыйЭлемент.Родитель = Родитель;            НовыйЭлемент.Артикул = Артикул;            НовыйЭлемент.Коллекция = Коллекция;            НовыйЭлемент.Цвет = Цвет;            НовыйЭлемент.Размер = Размер;            НовыйЭлемент.Наименование = Наименование + " " + Цвет + " " + Размер;            НовыйЭлемент.НаименованиеПолное = Наименование + " " + Цвет + " " + Размер;            НовыйЭлемент.ВидНоменклатуры = ВидНомен;            НовыйЭлемент.БазоваяЕдиницаИзмерения = ЕдИзмер;                   НовыйЭлемент.Записать();            НовыйЕдИзмер = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();            НовыйЕдИзмер.ЕдиницаПоКлассификатору = ЕдИзмер;            НовыйЕдИзмер.Наименование = ЕдИзмер.Наименование;            НовыйЕдИзмер.Коэффициент = 1;            НовыйЕдИзмер.Владелец = НовыйЭлемент.Ссылка;            НовыйЕдИзмер.Записать();            НовыйЭлемент.ЕдиницаХраненияОстатков = НовыйЕдИзмер.Ссылка;            НовыйЭлемент.СтавкаНДС = СтавкаНДС;            //НовыйЭлемент.ВестиУчетПоХарактеристикам = Истина;             НовыйЭлемент.Записать();                         //Запись РегистраСведений Штрихкоды                         ЗаписьШК = Истина;            РегСведШК = РегистрыСведений.Штрихкоды;            ВыборкаРегСведШК = РегистрыСведений.Штрихкоды.Выбрать();            Пока ВыборкаРегСведШК.Следующий() Цикл             Если ВыборкаРегСведШК.Штрихкод = ШтрихКод Тогда                   ЗаписьШК = Ложь;             КонецЕсли;            КонецЦикла;            ЗаписьВРегистрСвед = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();            ЗаписьВРегистрСвед.Владелец = НовыйЭлемент.Ссылка;            ЗаписьВРегистрСвед.ЕдиницаИзмерения = НовыйЭлемент.ЕдиницаХраненияОстатков;            ЗаписьВРегистрСвед.Штрихкод = ШтрихКод;            ЗаписьВРегистрСвед.ТипШтрихкода = ЭлементыФормы.ТипШтрихкода.Значение;//ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;             ЗаписьВРегистрСвед.Качество = Справочники.Качество.Новый;            Если (ШК = 0) или (ШК > КолКолонок) Тогда            Сообщить("ШтрихКод не будет добавлен к данному элементу: " + Наименование + " " + Цвет + " " + Размер);            Иначе            Попытка             ЗаписьВРегистрСвед.Записать();            Исключение            Сообщить("Номенклатура с таким штрихкодом существует!");            КонецПопытки;            КонецЕсли;            Иначе            НовыйЭлемент = Справочники.Номенклатура.НайтиПоНаименованию(Наименование + " " + Цвет + " " + Размер);       КонецЕсли;                        //Создадим Док Поступления товаров и услуг ////////////////////////////////////////////////////                         ДокПоступление = НовыйДокПоступление.Товары.Добавить();       ДокПоступление.Номенклатура = НовыйЭлемент.Ссылка;       ДокПоступление.Количество = Количество;       ДокПоступление.Цена = Цена;       ДокПоступление.Склад = Склад;       ДокПоступление.ЕдиницаИзмерения = НовыйЭлемент.ЕдиницаХраненияОстатков;       ДокПоступление.Коэффициент = НовыйЭлемент.ЕдиницаХраненияОстатков.Коэффициент;       ДокПоступление.СтавкаНДС = СтавкаНДС;       ДокПоступление.Сумма = Количество * Цена;                         Сообщить(НовыйЭлемент.Наименование + "       " + ШтрихКод + " : "+"Элемент записан");                               //Запишем товар и цену в документ установки цен       тчТовары = ДокУстановкаЦенНоменклатуры["Товары"];       СтрокаТаблицаТовары = тчТовары.Добавить();       СтрокаТаблицаТовары["Номенклатура"] = НовыйЭлемент.Ссылка;       СтрокаТаблицаТовары["Валюта"]       = ВалютаДок;       СтрокаТаблицаТовары["ЕдиницаИзмерения"] = НовыйЭлемент.ЕдиницаХраненияОстатков;       СтрокаТаблицаТовары["ТипЦен"]       = ТипЦены;       СтрокаТаблицаТовары["Цена"]       = Цена;       КонецЦикла;       Попытка       НовыйДокПоступление.Записать(РежимЗаписиДокумента.Проведение);       ДокУстановкаЦенНоменклатуры.Записать(РежимЗаписиДокумента.Проведение);       Исключение       Сообщить("НЕ ЗАПИСАН");       КонецПопытки;       КонецЦикла;             Экзель.Quit();       Сообщить("Загрузка накладной успешно завершена!");КонецПроцедуры</pre><br><br><br><pre> </pre>"

Prikum
активный пользователь
онлайн
Дата регистрации: 18.02.2002
Сообщений: 20991
Пост №2
 
06.10.2012 13:53

Проблема в точ, что для одной и той же номенклатуры, в один и тот же день нельзя установить 2 цены!

EL Khan
читатель
офлайн
Дата регистрации: 10.02.2012
Сообщений: 92
Пост №3
 
06.10.2012 14:01

не совсем понял...ошибка выходит в строке номен 7, значит оно доходит до этой строки

Тимур15rus
читатель
офлайн
Дата регистрации: 08.11.2008
Сообщений: 615
Пост №4
 
06.10.2012 18:19

это номер строки регистра сведений. А не документа. А вот какая номенклатура - это по отладчику. Короче выше написали - ищи установку цен по данному типу цен на ЭТУ ЖЕ ДАТУ!!! или поменяй дату установки цен (но это с умом надо)

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №5
 
08.10.2012 09:32

У тебя одна и таже номенклатура встречается несколько раз в документе поступления. Такого не должно быть.

EL Khan
читатель
офлайн
Дата регистрации: 10.02.2012
Сообщений: 92
Пост №6
 
08.10.2012 09:40

"да знаю, из-за этого были проблемы с записью ШК, но это проблемку решил. а в этом случает решил еще легче <br> <br><br><pre>ДокУстановкаЦенНоменклатуры.Записать(РежимЗаписиДокумента.Запись); </pre><br><br> <br>а провожу рукой. как такой вариант?"

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №7
 
08.10.2012 09:42

И "рукой" документ проводится?

EL Khan
читатель
офлайн
Дата регистрации: 10.02.2012
Сообщений: 92
Пост №8
 
08.10.2012 09:43

а в доке нет проблем, проводится и вся номенклатура вводится

EL Khan
читатель
офлайн
Дата регистрации: 10.02.2012
Сообщений: 92
Пост №9
 
08.10.2012 09:49

а как добавить к еще одну тип цены, то есть в одном доке установка цен два типа цен: первичная, вторичная?

EL Khan
читатель
офлайн
Дата регистрации: 10.02.2012
Сообщений: 92
Пост №10
 
08.10.2012 10:00

"можно сделать так:<br> <br><br><pre>ДокУстановкаЦенНоменклатуры = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); <br>ДокУстановкаЦенНоменклатуры.Дата = Дата; <br>ДокУстановкаЦенНоменклатуры.ТипыЦен.Очистить(); <br>НовСтрТипыЦен = ДокУстановкаЦенНоменклатуры.ТипыЦен.Добавить(); <br>ТипЦены = ТипЦен; // Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001"); <br>НовСтрТипыЦен.ТипЦен = ТипЦены; <br>НовСтрТипыЦен = ДокУстановкаЦенНоменклатуры.ТипыЦен.Добавить(); <br>ТипЦены2 = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000002"); <br>НовСтрТипыЦен.ТипЦен = ТипЦены2;<br><br><br>//Запишем товар и цену в документ установки цен <br><br><br>тчТовары = ДокУстановкаЦенНоменклатуры["Товары"];       <br>СтрокаТаблицаТовары = тчТовары.Добавить();       <br>СтрокаТаблицаТовары["Номенклатура"] = НовыйЭлемент.Ссылка;       <br>СтрокаТаблицаТовары["Валюта"]       = ВалютаДок;       <br>СтрокаТаблицаТовары["ЕдиницаИзмерения"] = НовыйЭлемент.ЕдиницаХраненияОстатков; <br>СтрокаТаблицаТовары["ТипЦен"]       = ТипЦены;       <br>СтрокаТаблицаТовары["Цена"]       = Цена;       <br>СтрокаТаблицаТовары["ТипЦен"]       = ТипЦены2; <br>СтрокаТаблицаТовары["Цена"]       = Цена2; </pre>"

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

Читают тему:

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