8.х Уникальность

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем mavaly, 13 июл 2010.

  1. TopicStarter Overlay
    mavaly
    Offline

    mavaly Опытный в 1С

    Регистрация:
    17 янв 2010
    Сообщения:
    233
    Симпатии:
    0
    Баллы:
    26
    При заполнении табличной части документа нужно проверять что-бы один из реквизитов был уникальным и следовательно не повторялся.

    Не могу придумать как это реализовать (((


    1С:Предприятие 8.1 (8.1.15.14)
    Управление производственным предприятием, редакция 1.2 (1.2.30.1)
    Copyright (С) ЗАО "1C", 2004-2010. Все права защищены

    Помогите пожалуйста (((
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Подробнее напишите что за реквизит, какого типа, как получается, где используется.
  3. TopicStarter Overlay
    mavaly
    Offline

    mavaly Опытный в 1С

    Регистрация:
    17 янв 2010
    Сообщения:
    233
    Симпатии:
    0
    Баллы:
    26
    Код:
    ТК = Запрос.Выполнить().Выбрать();
    Пока ТК.Следующий() Цикл
    СтрокаТабличнойЧасти 						  = ЭтотОбъект.Маршрут.Добавить();
    СтрокаТабличнойЧасти.НомерОперации			  = ТК.НомерОперации;
    СтрокаТабличнойЧасти.Операция     			  = ТК.ТехнологическаяОперация;
    СтрокаТабличнойЧасти.РабочийЦентр 			  = ТК.РабочийЦентр;
    СтрокаТабличнойЧасти.Количество 			  = ТК.Количество * КоличествоПродуктов;
    КонецЦикла;
    
    
    Номер операции....тип данных..строка
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Используйте метод ТЧ Найти

    Ть.е

    НайденнаяСтрока = Состав.Маршрут(ТК.ТехнологическаяОперация, "Операция");

    Если НайденнаяСтрока = Неопределено Тогда

    СтрокаТабличнойЧасти= ЭтотОбъект.Маршрут.Добавить();
    /// и т.д
    КонецЕсли;
  5. TopicStarter Overlay
    mavaly
    Offline

    mavaly Опытный в 1С

    Регистрация:
    17 янв 2010
    Сообщения:
    233
    Симпатии:
    0
    Баллы:
    26
    Код:
    	Пока ТК.Следующий() Цикл
    
    НайденнаяСтрока = ЭтотОбъект.Маршрут(ТК.ТехнологическаяОперация, "Операция");
    Если НайденнаяСтрока = Неопределено Тогда
    СтрокаТабличнойЧасти						  = ЭтотОбъект.Маршрут.Добавить();
    СтрокаТабличнойЧасти.НомерОперации			  = ТК.НомерОперации;
    СтрокаТабличнойЧасти.Операция     			  = ТК.ТехнологическаяОперация;
    СтрокаТабличнойЧасти.РабочийЦентр 			  = ТК.РабочийЦентр;
    СтрокаТабличнойЧасти.Количество 			  = ТК.Количество * КоличествоПродуктов;
    СтрокаТабличнойЧасти.Время 			  		  = ТК.ВремяВыполнения;
    СтрокаТабличнойЧасти.Расценка				  = ТК.Расценка;
    СтрокаТабличнойЧасти.БазоваяЕдиницаИзмерения  = ТК.ЕдИзм;
    СтрокаТабличнойЧасти.ВремяОбщее				  = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Время;
    СтрокаТабличнойЧасти.РасценкаОбщая            = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Расценка;
    
    
    
    ничего не получилось

    {Документ.КартаПроизводства.Форма.ФормаДокумента(87)}: Метод объекта не обнаружен (Маршрут)
    НайденнаяСтрока = ЭтотОбъект.Маршрут(ТК.ТехнологическаяОперация, "Операция");
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Простите опечатался

    НайденнаяСтрока = ЭтотОбъект.Маршрут.Найти(ТК.ТехнологическаяОперация, "Операция");
  7. TopicStarter Overlay
    mavaly
    Offline

    mavaly Опытный в 1С

    Регистрация:
    17 янв 2010
    Сообщения:
    233
    Симпатии:
    0
    Баллы:
    26
    Я это поняла.....но он все равно пропускает добавление строки (((..и даже не предупреждает ((((

    Код:
    Пока ТК.Следующий() Цикл
    
    СтрокаТабличнойЧасти						  = ЭтотОбъект.Маршрут.Добавить();
    
    НайденнаяСтрока = Неопределено;
    НайденнаяСтрока = ЭтотОбъект.Маршрут.Найти(ТК.ТехнологическаяОперация, "Операция");
    Если НайденнаяСтрока = Неопределено Тогда
    СтрокаТабличнойЧасти.НомерОперации			  = ТК.НомерОперации;
    Иначе
    Сообщить("Номер операции не уникален!" + ТК.ТехнологическаяОперация);
    КонецЕсли;
    
    СтрокаТабличнойЧасти.Операция     			  = ТК.ТехнологическаяОперация;
    СтрокаТабличнойЧасти.РабочийЦентр 			  = ТК.РабочийЦентр;
    СтрокаТабличнойЧасти.Количество 			  = ТК.Количество * КоличествоПродуктов;
    СтрокаТабличнойЧасти.Время 			  
    
  8. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Так а зачем вы добавляете строку до проверки есть там что то или нет.Вы сначала сделайте проверку как я вам написал выше, и уже если неопределенно то добавляйте
  9. TopicStarter Overlay
    mavaly
    Offline

    mavaly Опытный в 1С

    Регистрация:
    17 янв 2010
    Сообщения:
    233
    Симпатии:
    0
    Баллы:
    26
    Код:
    НайденнаяСтрока = Неопределено;
    НайденнаяСтрока = ЭтотОбъект.Маршрут.Найти(ТК.ТехнологическаяОперация, "Операция");
    Если НайденнаяСтрока = Неопределено Тогда
    СтрокаТабличнойЧасти						  = ЭтотОбъект.Маршрут.Добавить();
    СтрокаТабличнойЧасти.НомерОперации			  = ТК.НомерОперации;
    Иначе
    Сообщить("Номер операции не уникален!" + ТК.ТехнологическаяОперация);
    КонецЕсли;
    
    СтрокаТабличнойЧасти.Операция     			  = ТК.ТехнологическаяОперация;
    СтрокаТабличнойЧасти.РабочийЦентр 			  = ТК.РабочийЦентр;
    СтрокаТабличнойЧасти.Количество 			  = ТК.Количество * КоличествоПродуктов;
    СтрокаТабличнойЧасти.Время 			  		  = 
    
    Тоже самое.....эта строчка в конце ((((
  10. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    У меня за весь день мозги кипят. ошибаюсь в простом, а вы бы и сами могли посмотреть и догадаться

    Вы же в самом начале пишите про номер операции, а м что пишем
    НайденнаяСтрока = ЭтотОбъект.Маршрут.Найти(ТК.ТехнологическаяОперация, "Операция");

    про самоу операцию

    Вот
    НайденнаяСтрока = ЭтотОбъект.Маршрут.Найти(ТК.НомерОперации, "НомерОперации");

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