Arios
@Arios

Как исправить уникальность номера при добавлении блюда?

При добавлении блюда пишет: "номер не уникальный".
Если убрать проверку уникальности в Документ.КоличествоБлюдКалькуляции, то все добавляется нормально.
Рабочая дата стоит на текущий день, а блюдо пытаемся добавить на следующий день, но не получается выскакивает данная ошибка, при добавлении любого блюда.
Вот код процедуры.
Процедура ОбработкаПодбора(Парам, парКонтФормы)
	Перем НовоеБлюдо, СтрокаБлюда, СтрокаНовогоБлюда;                                    
	Перем ДатаРасчета;    // дата - из калькуляции
	
	Если ТипЗначенияСтр(Парам) <> "Справочник" Тогда
	ИначеЕсли Парам.Вид()="ВидыБлюд" Тогда
	ИначеЕсли Парам.Вид()="ГруппыПитающихся" Тогда
	ИначеЕсли Парам.Вид()="СборникРецептур" Тогда
		    
		ТиповоеБлюдо = Парам;
		ДатаРасчета = ДатаДок;
	
		// добавить новую строку в калькуляцию
		// заполнить поля: количество, время приема пищи
		НоваяСтрока();
		Группа 		= парКонтФормы.Группа;
		ВидБлюда 	= ТиповоеБлюдо.ВидБлюда;
		Блюдо 		= ТиповоеБлюдо;
		Масштаб 	= ТиповоеБлюдо.Масштаб;
		//Количество	= парКонтФормы.Количество;
		Себестоимость = 0;                  
		Примечание 	= ТиповоеБлюдо.Примечание;
		Выход	 	= ВЗ(парКонтФормы.Выход,ТиповоеБлюдо.Выход);
        КоэффициентВыхода = глПересчетВыходаВГраммы(Выход)/глПересчетВыходаВГраммы(ТиповоеБлюдо.Выход);
            
		Наценка     = ТиповоеБлюдо.Наценка;
		СтавкаНДС   = ТиповоеБлюдо.СтавкаНДС;
		Округление  = ТиповоеБлюдо.Округление;
		ПродажнаяЦена = ТиповоеБлюдо.ПродажнаяЦена.Получить(ДатаДок) * КоэффициентВыхода;
		
		//Записать() будет позднее
	
		// добавить новое блюдо, связать со строкой калькуляции
		НовоеБлюдо = СоздатьОбъект("Документ.БлюдаКалькуляции");
		НовоеБлюдо.Новый(); 
		НовоеБлюдо.ДатаДок = ДатаДок;
		НовоеБлюдо.НомерСтроки = НомерСтроки;
		НовоеБлюдо.ДокументОснование = ТекущийДокумент();
		НовоеБлюдо.Записать();
		СтрокаКалькуляции = НовоеБлюдо.ТекущийДокумент();
		
		// добавить документ количества
		НовыйДокКоличества = СоздатьОбъект("Документ.КоличествоБлюдКалькуляции");
		НовыйДокКоличества.Новый();
		НовыйДокКоличества.ДатаДок = ДатаДок;
		НовыйДокКоличества.ДокументОснование = ТекущийДокумент();     		
		НовыйДокКоличества.Записать();
		СтрокаКоличества = НовыйДокКоличества.ТекущийДокумент();
		Записать();	//это для документа "Калькуляция"

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

		ПосчитатьИтогГруппы(Группа);
		
		Если флАвтоСортировка=1 Тогда
		    СортироватьСписокБлюд();
		КонецЕсли;

	КонецЕсли;                  
	
	СтатусВозврата(0);
	
КонецПроцедуры


Вот тот кусок с ошибкой
// добавить документ количества
		НовыйДокКоличества = СоздатьОбъект("Документ.КоличествоБлюдКалькуляции");
		НовыйДокКоличества.Новый();
		НовыйДокКоличества.ДатаДок = ДатаДок;
		НовыйДокКоличества.ДокументОснование = ТекущийДокумент();     		
		НовыйДокКоличества.Записать();
		СтрокаКоличества = НовыйДокКоличества.ТекущийДокумент();
		Записать();	//это для документа "Калькуляция"
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
@Dementor
программист, архитектор, аналитик
Перед записью добавьте строчку:
НовыйДокКоличества.УстановитьНовыйНомер();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы