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

Тема в разделе "1C и всё что с ней связано", создана пользователем KiR, 17 окт 2008.

  1. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Увы, при создании новой операции внешними средствами ситуация
    Номер не уникальный появляется почти всегда
    Приходится делать так :
    Операция.УстановитьНовыйНомер (Номер)
    Переменной Номер можно присвоить значение, например в цикле.
     
  3. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Хорошая идея! Спасибо!
    Еще один маленький вопросик остался. По-идее операция это тожить документ, ему при создании - Операция.Новая() сразу должен присваиваться номер. можно ли этот номер как-то получить?

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Виноват. Надо
    Операция.Документ.УстановитьНовыйНомер(Номер)
     
  5. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    А что по поводу получения номера?
    По-идее операция это тожить документ, ему при создании - Операция.Новая() сразу должен присваиваться номер. можно ли этот номер как-то получить?
     
  6. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Операция.Документ.НомерДок
    При программном создании новой операции присваивается как-то автоматически (типа нумератора).
    А как контролируется уникальность номеров - посмотри процедуру ПриЗаписи() в форме операции
     
  7. kaa

    kaa Гость

    Кон = 0;
    ТТ = 0;
    Опер = СоздатьОбъект("Операция");
    Опер.Новая();
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    Кон = Кон+1;
    //выполняем действия по добавлению проводок
    Если Кон = 3 Тогда
    Опер.Записать();//записываем предидущую
    Опер.Новая();
    Кон = 0;
    КонецЕсли;
    КонецЦикла;
    Опер.Записать();//записываем последнюю

    Где - то так!

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

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

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Ага. Спасибо всем!
    Сам уже разобрался. Создаю проводки ведь сейчас, а данные то за 2005 год. Так что пошел другим путем - Создаю сначала пустой документ операция текущим числом, потом создаю операцию нужным числом. Как тока операция записывается - помечаю документ операцию на удаление. Бухов устраивает - так что больше ковыряться не вижу смысла)
     
Загрузка...

Поделиться этой страницей