Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 16:55

Универсальный загрузчик табличного документа для 1С:Розница 8

Автор Divad, 29 окт 2010, 17:13

0 Пользователей и 1 гость просматривают эту тему.

Divad

Нужна помощь специалистов, т.к. сам в программировании 1С не шарю ни фига.
Необходимо загрузить в справочник Номенклатура данные из файла Excel с помощью обработки "Универсальный загрузчик табличного документа" , что с диска ИТС (конфигурация 1С:Розница 8). Нашел инструкцию как это делается для УТ 10.3, но с теми же настройками обработки не получается загрузить. Ошибки возникают на пунктах: Единица хранения остатков и Единица для отчетов. Вот код для УТ:
СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию(ТекущиеДанные["Наименование"]);
БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(796);
ТекСпр=Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("
ЕдиницаПоКлассификатору",БазоваяЕдиницаИзмерения,,СсылкаНоменклатуры);
Если ТекСпр.Пустая() Тогда НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
НайденнаяЕдиницаОбъект.Наименование = СокрЛП(БазоваяЕдиницаИзмерения);
НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = БазоваяЕдиницаИзмерения;
НайденнаяЕдиницаОбъект.Коэффициент = 1;
НайденнаяЕдиницаОбъект.Владелец = СсылкаНоменклатуры;
Попытка НайденнаяЕдиницаОбъект.Записать();
Результат = НайденнаяЕдиницаОбъект.Ссылка;
Исключение Сообщить("Не удалось записать");
КонецПопытки;
Иначе Результат =ТекСпр.Ссылка;
КонецЕсли;

Как переделать этот код, что бы использовать для Розницы?

mohock

Дело в том что то, что ты пытаешься загрузить является ссылкой на справочник, владельцем которого является номенклатура, которую ты создаешь во время загрузки. Ошибка из-за того, что нет у тебя владельца пока не создана номенклатура. Т.е. вначале надо записать элемент - номенклатура, а затем из базовой единицы измерения (классификатора) выбрать для номенклатуры эти две ед.изм. и записать номенклатуру второй раз. Во время второй записи и создаютя эти две ед.изм. в справочнике ЕдиницыИзмерения.
Поэтому используя эту стандартную обработку по загрузке ТЧ из таблиц, следует сначала создать номенклатуру без этих двух ед.изм. А затем либо руками или вашей личной обработкой сделать, то что не смогла обработка с ИТС.
( :D хотя может она все-же это может, но я не знаю как.... может кто знает?...  :D :D :D :D :D)


Divad

mohock
Вот посмотри статью про эту обработку касаемо загрузки в УТ 10.3 : http://www.online-ufa.ru/content/articles/#view/content/articles/1057/
Вот меня и интересует, как это использовать для Розницы 8. По идее это должно быть не очень сложно, т.к. у УТ 10.3 и Розницы много общего...

xDD

Дабы не плодить сущности напишу сюда же. Проблема в УТ не получается номально присвоить  единицу хранения остатков товару все вроде делаю как в инструкции в обработке  "Загрузка данных из табличного документа "   в поле единца хранения остатков пишу "вычислять" и ставлю код СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию(ТекущиеДанные["Наименование"]);
БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("778");
ТекСпр=Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору",БазоваяЕдиницаИзмерения,,СсылкаНоменклатуры);
Если ТекСпр.Пустая() Тогда НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
НайденнаяЕдиницаОбъект.Наименование =  БазоваяЕдиницаИзмерения;
НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору =  БазоваяЕдиницаИзмерения;
НайденнаяЕдиницаОбъект.Коэффициент = 1;
НайденнаяЕдиницаОбъект.Владелец = СсылкаНоменклатуры;
Попытка НайденнаяЕдиницаОбъект.Записать();
Результат = НайденнаяЕдиницаОбъект.Ссылка;
Исключение Сообщить("Не удалось записать");
КонецПопытки;
Иначе Результат =ТекСпр.Ссылка;
КонецЕсли;

В справочник Единица Измерения при выполнении строка записывается, но в номенклатуре в поле единица хранения остатокв почему то не записывается подскажите плз в чем може быть дело?

Klyacksa

Судя по коду, единица измерения действительно создается. Но не видно, где она присваивается номенклатуре в качестве Основной единицы хранения. Оно есть?
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

pawonex

Столкнулся с такой же проблемой.

Вот какой у меня код для вычисления:
Единицы для отчетов:
СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", ТекущиеДанные["Артикул"]);
БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(796);
ТекСпр=Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору",БазоваяЕдиницаИзмерения,,СсылкаНоменклатуры);
Если ТекСпр.Пустая() Тогда
   НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
   НайденнаяЕдиницаОбъект.Наименование = СокрЛП(БазоваяЕдиницаИзмерения);
   НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = БазоваяЕдиницаИзмерения;
   НайденнаяЕдиницаОбъект.Коэффициент = 1;
   НайденнаяЕдиницаОбъект.Владелец = СсылкаНоменклатуры;
   Попытка НайденнаяЕдиницаОбъект.Записать();
   Результат = НайденнаяЕдиницаОбъект.Ссылка;
   Исключение
   Сообщить("Не удалось записать");
   КонецПопытки;
   Иначе Результат =ТекСпр.Ссылка;
КонецЕсли;

Единицы хранения:
СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", ТекущиеДанные["Артикул"]);
БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(796);
ТекСпр=Справочники.ЕдиницыИзмерения.НайтиПоРеквизиту("ЕдиницаПоКлассификатору",БазоваяЕдиницаИзмерения,,СсылкаНоменклатуры);
Если ТекСпр.Пустая() Тогда
   НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
   НайденнаяЕдиницаОбъект.Наименование = СокрЛП(БазоваяЕдиницаИзмерения);
   НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = БазоваяЕдиницаИзмерения;
   НайденнаяЕдиницаОбъект.Коэффициент = 1;
   НайденнаяЕдиницаОбъект.Владелец = СсылкаНоменклатуры;
   Попытка НайденнаяЕдиницаОбъект.Записать();
   Результат = НайденнаяЕдиницаОбъект.Ссылка;
   Исключение
   Сообщить("Не удалось записать");
   КонецПопытки;
   Иначе Результат =ТекСпр.Ссылка;
КонецЕсли;


Одна маленькая, но не приятная особенность, у меня (проверенно) этот код срабатывает если при загрузке номенклатуры базовые единицы загружаются в режиме Устанавливать, т.е. для всех к примеру с ставил шт.. Но если вам нужно считать единицы из таблицы, вряд ли мой код поможет. Если найдете решение буду благодарен=)

Yura063

Цитата: pawonex от 24 мая 2013, 14:39БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(796);
Попробуйте искать не по коду! По наименованию или полному наименованию.
Помогли, отблагодари!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск