Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Процедура пошуку номенклатури в БАС Бухгалтерії: проблема в дублювані позицій при загрузці через обробку          
bandrah Подменю пользователя
сообщение 26.05.21, 21:10
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 38
Из: Україна
Спасибо сказали: 15 раз
Рейтинг: 9.8

Створив обробку для завантаження звітів про роздрібні продажі, перший раз все ок, при повтрній вгрузці дублюється номенклатура, додаю процедуру, що роблю не правильно вже не можу поняти, дякую всім наперед, впевнений, що світ не без добрих людей

Код
&НаСервере
Функция НайтиНоменклатуру(Номенкл, СтавкаПДВ, АртикулП)
    
    Если СокрЛП(СтавкаПДВ)="" Тогда
        СтавкаПДВ = 0;
    КонецЕсли;
    Артикул = СокрЛП(АртикулП);
    
    СтавкаНоменкл = Перечисления.СтавкиНДС.НДС20;
    //Если СтавкаПДВ = 7 Тогда
    //    СтавкаНоменкл = Перечисления.СтавкиНДС.НДС7;
    //ИначеЕсли СтавкаПДВ = 20 Тогда
    //    СтавкаНоменкл = Перечисления.СтавкиНДС.НДС20;
    //Иначе
    //    СтавкаНоменкл = Перечисления.СтавкиНДС.НДС0;
    //КонецЕсли;
    
    Если Артикул <> "" Тогда
        НайдАрт = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",АртикулП);
        Если СокрЛП(НайдАрт)<> "" Тогда
            Артикул = НайдАрт.Ссылка;
            
        Иначе
            НовДов = Справочники.Номенклатура.СоздатьЭлемент();
            НовДов.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("2009"); // шт
            
            НовДов.Наименование = Номенкл;
            НовДов.НаименованиеПолное = Номенкл;
            Если Артикул<>""  Тогда
                НовДов.Артикул = Артикул;
            КонецЕсли;    
            
            НовДов.СтавкаНДС = СтавкаНоменкл;
            
            Запись = НовДов.ЕдиницыИзмерения.Добавить();
            Запись.Коэффициент         = 1;
            Запись.ЕдиницаИзмерения = НовДов.БазоваяЕдиницаИзмерения;
            
            НовДов.Записать();
            
            Возврат НовДов.Ссылка;
        КонецЕсли;
    КонецЕсли;
    
    Запит = Новый Запрос;
    Запит.Текст = "ВЫБРАТЬ
    |    Номенклатура.Ссылка КАК Номенкл,
    |    Номенклатура.Наименование
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.ПометкаУдаления = ЛОЖЬ
    |    И Номенклатура.Наименование = &Назва
    |    И Номенклатура.Артикул = &Артикул
    |    И Номенклатура.СтавкаНДС = &СтавкаПДВ";
    
    Запит.УстановитьПараметр("Назва", Номенкл);
    Запит.УстановитьПараметр("СтавкаПДВ", СтавкаНоменкл);
    Запит.УстановитьПараметр("Артикул", АртикулП);
    Виб = Запит.Выполнить().Выбрать();
    Если Виб.Следующий() Тогда
        Если Артикул<>"" И СокрЛП(Виб.Номенкл.Артикул)="" Тогда
            Об = Виб.Номенкл.ПолучитьОбъект();
            Об.Артикул = Артикул;
            Об.Записать();
        КонецЕсли;    
        
        Если СтавкаНоменкл <> Виб.Номенкл.СтавкаНДС Тогда
            Об = Виб.Номенкл.ПолучитьОбъект();
            Об.СтавкаНДС = СтавкаНоменкл;
            Об.Записать();
        КонецЕсли;
        
        Возврат Виб.Номенкл;
    КонецЕсли;
    
КонецФункции


Сообщение отредактировал Vofka - 28.05.21, 7:08

logist Подменю пользователя
сообщение 26.05.21, 21:35
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

У вас нет понимания что такое типы данных, это касается всего кода.
И в следствии этого, скорее всего не срабатывает это условие:
Цитата(bandrah @ 26.05.21, 22:10) *
Если СокрЛП(НайдАрт)<> "" Тогда



Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: bandrah,

bandrah Подменю пользователя
сообщение 26.05.21, 22:19
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 38
Из: Україна
Спасибо сказали: 15 раз
Рейтинг: 9.8

logist @ Сегодня, 21:35 * ,
дякую за наводку (типы данных), артикул був числом, а має бути строка, виправив - все запрацювало коректно

logist Подменю пользователя
сообщение 26.05.21, 22:27
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(bandrah @ 26.05.21, 23:19) *
ртикул був числом, а має бути строка, виправив - все запрацювало коректно

Насправді проблема створення може бути й тут "НайдАрт", бо це не строка а СправочникСсылка, і тут треба використовувати НайдАрт.Пустая() або ЗначениеЗаполнено(НайдАрт)


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: bandrah,

bandrah Подменю пользователя
сообщение 26.05.21, 22:57
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 38
Из: Україна
Спасибо сказали: 15 раз
Рейтинг: 9.8

logist @ Сегодня, 22:27 * ,
дякую за підказку

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 13:02
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!