1С7.7 3 строки ТЗ=1операция=4проводки

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#1
Есть внешняя обработка, на ней ТЗ. Каждые 3 строки ТЗ должны образовывать одну операцию, которая фромирует 4 проводки. в ТЗ к примеру 12 строк. При обходе тз с помощью цикла "выбратьстроки/получитьстроку" первая проводка записывается нормально, а на остальные 2 вываливает ошибку - "Операция.Записать();Номер не уникальный!". Как присваивать номер операции?
 

vbs

Well-known member
18.02.2007
1 708
1
#2
Увы, при создании новой операции внешними средствами ситуация
Номер не уникальный появляется почти всегда
Приходится делать так :
Операция.УстановитьНовыйНомер (Номер)
Переменной Номер можно присвоить значение, например в цикле.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#3
Хорошая идея! Спасибо!
Еще один маленький вопросик остался. По-идее операция это тожить документ, ему при создании - Операция.Новая() сразу должен присваиваться номер. можно ли этот номер как-то получить?

Идея хорошая, но видимо ошибочная ибо:
Операция.УстановитьНовыйНомер(Номер);
Поле агрегатного объекта не обнаружено (УстановитьНовыйНомер)
 

vbs

Well-known member
18.02.2007
1 708
1
#4
Виноват. Надо
Операция.Документ.УстановитьНовыйНомер(Номер)
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#5
А что по поводу получения номера?
По-идее операция это тожить документ, ему при создании - Операция.Новая() сразу должен присваиваться номер. можно ли этот номер как-то получить?
 

vbs

Well-known member
18.02.2007
1 708
1
#6
Операция.Документ.НомерДок
При программном создании новой операции присваивается как-то автоматически (типа нумератора).
А как контролируется уникальность номеров - посмотри процедуру ПриЗаписи() в форме операции
 
K
#7
Кон = 0;
ТТ = 0;
Опер = СоздатьОбъект("Операция");
Опер.Новая();
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Кон = Кон+1;
//выполняем действия по добавлению проводок
Если Кон = 3 Тогда
Опер.Записать();//записываем предидущую
Опер.Новая();
Кон = 0;
КонецЕсли;
КонецЦикла;
Опер.Записать();//записываем последнюю

Где - то так!

А ошибка
Появляется когда создается документ не попадающий в период нумератора относительно рабочей даты

тоесть создаем операцию периодичность номеров год (автоматом присваевается номер этого года) , и присваеваем ей дату прошлого года а в прошлом году такой номер есть!!! Нужно либо менять рабочую дату перед формирование документа/операции либо
УстановитьНовыйНомер(<Префикс>)
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#8
Ага. Спасибо всем!
Сам уже разобрался. Создаю проводки ведь сейчас, а данные то за 2005 год. Так что пошел другим путем - Создаю сначала пустой документ операция текущим числом, потом создаю операцию нужным числом. Как тока операция записывается - помечаю документ операцию на удаление. Бухов устраивает - так что больше ковыряться не вижу смысла)