Имя: Пароль:
1C
 
УНФ 3.0 Программно заполнять серийные номера при создании документа
,
0 AlbusAt
 
naïve
08.12.24
12:24
УНФ 3.0.8.109
При создании документа Сборка Запасов на основании Заказа на производство, я тащу из документа Перемещение серийные номера  номенклатуры (1 позиция), получаю документ по связанным документам. Записываю серийные номера в новый документ в процедуре ЗаполнитьПоЗаказуНаПроизводство, серийные номера встают, как строка, но статус горит красным. При проведении документа движений по серийный номерам нету.

Заполняю серийные номера так:
Если ЗначениеЗаполнено(ПеремещениеЗапасов) Тогда	  
   ТЧПеремещениеЗапасы = ПеремещениеЗапасов.Запасы;	  
   Для Каждого Тек Из ТЧПеремещениеЗапасы Цикл		 
	  Если ЗначениеЗаполнено(Тек.СерииНоменклатуры) Тогда			
		 Отбор = Новый Структура();
		 Отбор.Вставить("Номенклатура", Тек.Номенклатура);		 
		 СтрокаЗапасыСборка = Запасы.НайтиСтроки(Отбор)[0];
		 Если ЗначениеЗаполнено(СтрокаЗапасыСборка) Тогда
			СтрокаЗапасыСборка.СерииНоменклатуры = Тек.СерииНоменклатуры;
		 КонецЕсли;					 
	  КонецЕсли;		 
   КонецЦикла;	  
КонецЕсли;


Понимаю что надо записать ещё в тч серийных номеров (наверное), но не знаю как это сделать. Нужна помощь
1 Звездец
 
08.12.24
10:22
ну а если загуглить: программное заполнение табличной части?
2 Волшебник
 
08.12.24
12:21
(0) Почему поле называется "СерииНоменклатуры", хотя там хранится ОДНА серия?
3 AlvlSpb
 
08.12.24
22:15
(2) Потому что в поле не хранятся серии, там хранится статус серий (заполнено или нет) и меняется картинка, тип поля - строка. (0) А серии хранятся в ТЧ серии, которая обязательна для заполнения. Ключ связи - номер строки в ТЧ запасы. Ну и при программном заполнении надо предусмотреть проверку и изменение статуса в строке ТЧ Запасы. Смотри по коду,там одна или две функции общих модулей
4 Рэйв
 
09.12.24
05:50
(2)Потому что там планируется много.Неужели не понятно?:-)
5 Рэйв
 
09.12.24
10:29
Я как-то сам в далекой молодости назвал измерение ТОВАРЫ :-))
6 Волшебник
 
09.12.24
10:29
(3) Если там хранится "статус серии", то поле надо назвать "СтатусСерии".
7 AlbusAt
 
naïve
15.12.24
16:41
Решение проблемы: в ТЧ документа СерииНоменклатуры добавить ваши данные

Если ЗначениеЗаполнено(ПеремещениеЗапасов) Тогда
      
      ТЧПеремещениеЗапасы = ПеремещениеЗапасов.Запасы;
      
      Для Каждого Тек Из ТЧПеремещениеЗапасы Цикл
        
         Если ЗначениеЗаполнено(Тек.СерииНоменклатуры) Тогда
            
            Отбор = Новый Структура();
            Отбор.Вставить("Номенклатура", Тек.Номенклатура);
            
            СтрокаЗапасыСборка = Запасы.НайтиСтроки(Отбор)[0];
            Если ЗначениеЗаполнено(СтрокаЗапасыСборка) Тогда
               СтрокаЗапасыСборка.СерииНоменклатуры = Тек.СерииНоменклатуры;
              
               СерииНоменклатурыМассив = СтрРазделить(СтрокаЗапасыСборка.СерииНоменклатуры, ";");
              
               Для Каждого Стр Из СерииНоменклатурыМассив Цикл
                  СтрокаСерииНоменклатуры = СерииНоменклатуры.Добавить();
                  СтрокаСерииНоменклатуры.КлючСвязи = СтрокаЗапасыСборка.КлючСвязи;
                  СтрокаСерииНоменклатуры.Количество = 1;
                  СтрокаСерииНоменклатуры.Серия = Справочники.СерииНоменклатуры.НайтиПоНаименованию(СокрЛП(Стр));
               КонецЦикла;
              
            КонецЕсли;            
            
            
            
         КонецЕсли;
        
      КонецЦикла;
      
   КонецЕсли;
8 Волшебник
 
16.12.24
09:41
(7) Это плохое решение хранить список элементов в строке через ";"
Нарушение третьей нормальной формы базы данных
9 AlbusAt
 
naïve
16.12.24
15:26
(8) А как вы предлагаете решать эту проблему? Если в документах серийные номера записываются в строку через ";"
10 Волшебник
 
16.12.24
15:30
(9) Я предлагаю не записывать серийные номера через ";"
11 AlbusAt
 
naïve
17.12.24
17:53
(10) Это стандартная запись в УНФ, типовой функционал, а не дописанный
12 Волшебник
 
17.12.24
20:34
(11) и чо? Верх совершенства что ли?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан