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

Заполнить серии в документе

Автор Kostik2013, 26 июл 2013, 23:14

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

Kostik2013

1С:Предприятие 8.2 (8.2.18.61) У  ЧП Украины Базовая

Заполнял таким способом серии  номеклатуре по штрих коду (серия и штрих код одинаковые) а теперь нужно заполнить  документе серии. Везде поменял на Док,но ругается не находит серии. Подскажите,что нужно изменить или вообще по другому это заполняется?Всем спасибо!


Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка)
   //Получаем таблицу со штрих кодами   
   Док = ПолучитьШтрихкода ();
   // Проверка заполнения штрих кода
   Если Док.Количество () = 0 Тогда
      Возврат;
   КонецЕсли;
   //Установка серий
   УстановкаСерий (Док);
   ////Чистим
   //Табл = "";
     Сообщить ("Готово!");   
КонецПроцедуры

Процедура УстановкаСерий (Док)
   ///Создаем серии
   //Если Владелец ЭтоГруппа Тогда
   //    СледущаяСтрока Продолжить
   //    КонецЕсли;
   ДокументСерии    = Документы.ПоступлениеТоваровУслуг.Серии;
   РегШтрихКод = РегистрыСведений.Штрихкоды;
   Для каждого Док ИЗ Док Цикл
      
      //Если Док.Владелец.ЭтоГруппа Тогда
      //  Продолжить
      // КонецЕсли;
      ////проверка
      //Если ПроверкаДокументаСерии(Док.ШтрихКод,Док.Серии) тогда
      //   продолжить;
      //КонецЕсли;
      
      Если  ПроверкаДокументаСерии(Док.ШтрихКод,ДокументСерии) тогда
         продолжить;
      КонецЕсли;

      НоваяСерия               = Док.Серия.СоздатьЭлемент();
      НоваяСерия.Наименование  = Док.ШтрихКод ;
      НоваяСерия.СерийныйНомер = Док.ШтрихКод;
      НоваяСерия.Владелец      = Док.Владелец;
   
      НоваяСерия.Записать();
      //Устанавливаем серии в регистр штрих кодов
      Струк = Новый Структура ();
      Струк.Вставить("ШтрихКод", Док.ШтрихКод);
      ВыборкаШтрихКод = РегШтрихКод.Выбрать(Струк);
      Пока ВыборкаШтрихКод.Следующий() Цикл
         Запись = ВыборкаШтрихКод.ПолучитьМенеджерЗаписи();
         Запись.Прочитать();
         Запись.СерияНоменклатуры = НоваяСерия.Ссылка;
         Запись.Записать();         
      КонецЦикла;
      //Получаем объект номенклатура (для установки галочек)
      СпрНоменклатура = Док.Владелец.ПолучитьОбъект ();
      СпрНоменклатура.ВестиУчетПоСериям = Истина;
      СпрНоменклатура.ВестиУчетПоХарактеристикам = Истина;
      СпрНоменклатура.Записать();
   КонецЦикла;
КонецПроцедуры
//Проверка справочника серии
Функция ПроверкаДокументаСерии(СтрокаНаименования,ДокСерии)
   ФлагПроверки = Ложь;
   НайденнаяСсылка = ДокСерии.НайтиПоНаименованию(СтрокаНаименования,истина);
   Если НайденнаяСсылка = ДокСерии.ПустаяСсылка() Тогда
      ФлагПроверки = Ложь;
   иначе
      ФлагПроверки = Истина;
   КонецЕсли;
   возврат ФлагПроверки;
КонецФункции

&НаСервере
Функция ПолучитьШтрихкода ()
   
   Запрос = Новый Запрос    
   ("ВЫБРАТЬ
   |   Штрихкоды.Штрихкод,
   |   Штрихкоды.Владелец
   |ИЗ
   |   РегистрСведений.Штрихкоды КАК Штрихкоды
   |ГДЕ
   |   НЕ Штрихкоды.СерияНоменклатуры = """"
   |   И НЕ Штрихкоды.Штрихкод = """"");
   
   Результат = Запрос.Выполнить();    
   
   Возврат Результат.Выгрузить() ;
   
КонецФункции



Dethmontt

Я только вот до сюда дочитал :D - Для каждого Док ИЗ Док Цикл в одной переменной и итератор и коллекция
Добавлено: 26 июл 2013, 23:28


Интересно если в коллекции лежат еще коллекции, то это будет рекурсия?
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

GRADUS

Та заливай сразу всю работу что у тебя есть сюда, мы будем её делать :bleh:

Kostik2013

Цитата: GRADUS от 26 июл 2013, 23:29
Та заливай сразу всю работу что у тебя есть сюда, мы будем её делать :bleh:

Нет,спасибо))

Dethmontt

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Kostik2013

Цитата: Dethmontt от 26 июл 2013, 23:37
Дай попробую отгадать ошибку - Значение не является значением объектного типа (ШтрихКод) ?

нет))

Dethmontt

Цитата: Kostik2013 от 26 июл 2013, 23:37нет))
Блин...
Добавлено: 26 июл 2013, 23:40


Давай тогда по порядку выкладывай (ну например тут и тут не получается то то...)
Добавлено: 26 июл 2013, 23:41


И если имеется ошибка - то обязательно ЕЕ текст
Добавлено: 26 июл 2013, 23:42


По коду вроде на совсем новичка не похож
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Kostik2013

Цитата: Dethmontt от 26 июл 2013, 23:39
Цитата: Kostik2013 от 26 июл 2013, 23:37нет))
Блин...
Добавлено: 26 июл 2013, 23:40


Давай тогда по порядку выкладывай (ну например тут и тут не получается то то...)
Добавлено: 26 июл 2013, 23:41


И если имеется ошибка - то обязательно ЕЕ текст

Вот такая  Поле объекта не обнаружено (СерииНоменклатуры)
   ДокументСерия    = Документы.ПоступлениеТоваровУслуг.СерииНоменклатуры;


Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка)
   //Получаем таблицу со штрих кодами   
   Табл = ПолучитьШтрихкода ();
   // Проверка заполнения штрих кода
   Если Табл.Количество () = 0 Тогда
      Возврат;
   КонецЕсли;
   //Установка серий
   УстановкаСерий (Табл);
   //Чистим
   Табл = "";
     Сообщить ("Готово!");   
КонецПроцедуры

Процедура УстановкаСерий (Табл)
   //Создаем серии
   //Если Владелец ЭтоГруппа Тогда
   //    СледущаяСтрока Продолжить
   //    КонецЕсли;
   ДокументСерия    = Документы.ПоступлениеТоваровУслуг.СерииНоменклатуры;
   РегШтрихКод = РегистрыСведений.Штрихкоды;
   Для каждого Стр ИЗ Табл Цикл
      
      Если Стр.Владелец.ЭтоГруппа Тогда
        Продолжить
       КонецЕсли;
      //проверка
      Если  ПроверкаДокументаСерии(Стр.ШтрихКод,ДокументСерия) тогда
         продолжить;
      КонецЕсли;
      НоваяСерия               = ДокументСерия.СоздатьЭлемент();
      НоваяСерия.Наименование  = Стр.ШтрихКод ;
      НоваяСерия.СерийныйНомер = Стр.ШтрихКод;
      НоваяСерия.Владелец      = Стр.Владелец;
   
      НоваяСерия.Записать();
      //Устанавливаем серии в регистр штрих кодов
      Струк = Новый Структура ();
      Струк.Вставить("ШтрихКод", Стр.ШтрихКод);
      ВыборкаШтрихКод = РегШтрихКод.Выбрать(Струк);
      Пока ВыборкаШтрихКод.Следующий() Цикл
         Запись = ВыборкаШтрихКод.ПолучитьМенеджерЗаписи();
         Запись.Прочитать();
         Запись.СерияНоменклатуры = НоваяСерия.Ссылка;
         Запись.Записать();         
      КонецЦикла;
      //Получаем объект номенклатура (для установки галочек)
      СпрНоменклатура = Стр.Владелец.ПолучитьОбъект ();
      СпрНоменклатура.ВестиУчетПоСериям = Истина;
      СпрНоменклатура.ВестиУчетПоХарактеристикам = Истина;
      СпрНоменклатура.Записать();
   КонецЦикла;
КонецПроцедуры
//Проверка справочника серии
Функция ПроверкаДокументаСерии(СтрокаНаименования,ДокументСерии)
   ФлагПроверки = Ложь;
   НайденнаяСсылка = ДокументСерии.НайтиПоНаименованию(СтрокаНаименования,истина);
   Если НайденнаяСсылка = ДокументСерии.ПустаяСсылка() Тогда
      ФлагПроверки = Ложь;
   иначе
      ФлагПроверки = Истина;
   КонецЕсли;
   возврат ФлагПроверки;
КонецФункции

&НаСервере
Функция ПолучитьШтрихкода ()
   
   Запрос = Новый Запрос    
   ("ВЫБРАТЬ
   |   Штрихкоды.Штрихкод,
   |   Штрихкоды.Владелец
   |ИЗ
   |   РегистрСведений.Штрихкоды КАК Штрихкоды
   |ГДЕ
   |   НЕ Штрихкоды.СерияНоменклатуры = """"
   |   И НЕ Штрихкоды.Штрихкод = """"");
   
   Результат = Запрос.Выполнить();    
   
   Возврат Результат.Выгрузить() ;
   
КонецФункции


Dethmontt

Я так понимаю Документы.ПоступлениеТоваровУслуг.СерииНоменклатуры; это ты так табличной части пытаешься обратиться?
А какого документа?
Добавлено: 26 июл 2013, 23:49


Документы.ПоступлениеТоваровУслуг - это не конкретный документ! Это все документы! Что бы выбрать табличную часть, сначала надо выбрать конкретный документ
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Kostik2013

Цитата: Dethmontt от 26 июл 2013, 23:47
Я так понимаю Документы.ПоступлениеТоваровУслуг.СерииНоменклатуры; это ты так табличной части пытаешься обратиться?
А какого документа?
Добавлено: 26 июл 2013, 23:49


Документы.ПоступлениеТоваровУслуг - это не конкретный документ! Это все документы! Что бы выбрать табличную часть, сначала надо выбрать конкретный документ

Ой,пропустил. Документы.ПоступлениеТоваровУслуг.Товары.СерииНоменклатуры;

Теги:

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

Рейтинг@Mail.ru

Поиск