Answer the question
In order to leave comments, you need to log in
How to fix the uniqueness of the number when adding a dish?
When adding a dish, it says: "the number is not unique."
If you remove the uniqueness check in Document.Number of DishesCalculation, then everything is added normally.
The working date is on the current day, and we are trying to add the dish the next day, but this error pops up when adding any dish.
Here is the procedure code.
Процедура ОбработкаПодбора(Парам, парКонтФормы)
Перем НовоеБлюдо, СтрокаБлюда, СтрокаНовогоБлюда;
Перем ДатаРасчета; // дата - из калькуляции
Если ТипЗначенияСтр(Парам) <> "Справочник" Тогда
ИначеЕсли Парам.Вид()="ВидыБлюд" Тогда
ИначеЕсли Парам.Вид()="ГруппыПитающихся" Тогда
ИначеЕсли Парам.Вид()="СборникРецептур" Тогда
ТиповоеБлюдо = Парам;
ДатаРасчета = ДатаДок;
// добавить новую строку в калькуляцию
// заполнить поля: количество, время приема пищи
НоваяСтрока();
Группа = парКонтФормы.Группа;
ВидБлюда = ТиповоеБлюдо.ВидБлюда;
Блюдо = ТиповоеБлюдо;
Масштаб = ТиповоеБлюдо.Масштаб;
//Количество = парКонтФормы.Количество;
Себестоимость = 0;
Примечание = ТиповоеБлюдо.Примечание;
Выход = ВЗ(парКонтФормы.Выход,ТиповоеБлюдо.Выход);
КоэффициентВыхода = глПересчетВыходаВГраммы(Выход)/глПересчетВыходаВГраммы(ТиповоеБлюдо.Выход);
Наценка = ТиповоеБлюдо.Наценка;
СтавкаНДС = ТиповоеБлюдо.СтавкаНДС;
Округление = ТиповоеБлюдо.Округление;
ПродажнаяЦена = ТиповоеБлюдо.ПродажнаяЦена.Получить(ДатаДок) * КоэффициентВыхода;
//Записать() будет позднее
// добавить новое блюдо, связать со строкой калькуляции
НовоеБлюдо = СоздатьОбъект("Документ.БлюдаКалькуляции");
НовоеБлюдо.Новый();
НовоеБлюдо.ДатаДок = ДатаДок;
НовоеБлюдо.НомерСтроки = НомерСтроки;
НовоеБлюдо.ДокументОснование = ТекущийДокумент();
НовоеБлюдо.Записать();
СтрокаКалькуляции = НовоеБлюдо.ТекущийДокумент();
// добавить документ количества
НовыйДокКоличества = СоздатьОбъект("Документ.КоличествоБлюдКалькуляции");
НовыйДокКоличества.Новый();
НовыйДокКоличества.ДатаДок = ДатаДок;
НовыйДокКоличества.ДокументОснование = ТекущийДокумент();
НовыйДокКоличества.Записать();
СтрокаКоличества = НовыйДокКоличества.ТекущийДокумент();
Записать(); //это для документа "Калькуляция"
//переписать продукты (разрешить ссылки на компоненты, подобрать нормы, цены)
СтрокаБлюда = СоздатьОбъект("Справочник.СтрокиСборникаРецептур");
СтрокаБлюда.ИспользоватьВладельца(ТиповоеБлюдо);
СтрокаБлюда.ВыбратьЭлементы();
Пока (СтрокаБлюда.ПолучитьЭлемент()=1) Цикл
Если СтрокаБлюда.ПометкаУдаления()=1 Тогда
Продолжить;
ИначеЕсли СтрокаБлюда.Номенклатура.ВидНоменклатуры=Перечисление.ВидыНоменклатуры.Блюдо Тогда
// "раскодировать" ссылку на блюдо
СписНом.УдалитьВсе();
ДобавитьКомпонент(НовоеБлюдо, СтрокаБлюда, ДатаРасчета, КоэффициентВыхода);
Иначе
ДобавитьПродукт(НовоеБлюдо, СтрокаБлюда, ДатаРасчета, "", КоэффициентВыхода);
КонецЕсли;
КонецЦикла;
НовоеБлюдо.Записать();
ПосчитатьИтогГруппы(Группа);
Если флАвтоСортировка=1 Тогда
СортироватьСписокБлюд();
КонецЕсли;
КонецЕсли;
СтатусВозврата(0);
КонецПроцедуры
// добавить документ количества
НовыйДокКоличества = СоздатьОбъект("Документ.КоличествоБлюдКалькуляции");
НовыйДокКоличества.Новый();
НовыйДокКоличества.ДатаДок = ДатаДок;
НовыйДокКоличества.ДокументОснование = ТекущийДокумент();
НовыйДокКоличества.Записать();
СтрокаКоличества = НовыйДокКоличества.ТекущийДокумент();
Записать(); //это для документа "Калькуляция"
Answer the question
In order to leave comments, you need to log in
Before the entry, add the line:НовыйДокКоличества.УстановитьНовыйНомер();
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question